我正在尝试使用适用于macOS和iOS的SceneKit创建3d网格。我使用以下方法:
func test(gridSize: Float, gridCount: Int, bold: Int) {
let gridLen = gridSize * Float(gridCount)
var vectors = [
SCNVector3(0, 0, gridLen),
SCNVector3(0, 0, -gridLen),
SCNVector3(gridLen, 0, 0),
SCNVector3(-gridLen, 0, 0)
]
for grid in 1...gridCount {
vectors += [
SCNVector3(Float(grid) * gridSize, 0, gridLen),
SCNVector3(Float(grid) * gridSize, 0, -gridLen),
SCNVector3(Float(-grid) * gridSize, 0, gridLen),
SCNVector3(Float(-grid) * gridSize, 0, -gridLen),
SCNVector3(gridLen, 0, Float(grid) * gridSize),
SCNVector3(-gridLen, 0, Float(grid) * gridSize),
SCNVector3(gridLen, 0, Float(-grid) * gridSize),
SCNVector3(-gridLen, 0, Float(-grid) * gridSize)
]
}
let indices: [Int32] = vectors.enumerated().map{Int32($0.0)}
let source = SCNGeometrySource(vertices: vectors)
let element = SCNGeometryElement(indices: indices, primitiveType: .line)
self.geometry = SCNGeometry(sources: [source], elements: [element])
}
并使用以下命令调用它:
class EditorGrid: SCNNode {
override public init() {
super.init()
self.test(gridSize: 0.5, gridCount: 10, bold: 5);
}
// ...
}
我确实在macOS应用中绘制了网格。但是,网格的确非常复杂:
当我使用SceneKit的内置相机处理程序功能时,您会注意到,即使放大到网格,像素也会变色:
此外,当我真正放大时,网格的下半部分会被裁剪,这与预期的行为不同:
将其与标准3d软件网格进行比较: 您会注意到在此示例中线条没有像素化。
我想知道我为得到这样的结果做错了什么。我希望获得一些重点帮助,以便我解决问题! 谢谢!