Я пытаюсь создать 3d сетку с помощью SceneKit для macOS и iOS.Я использую следующий метод:
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, вы можете заметить, что даже при увеличении масштабасетка, она получает пиксели:
Более того, когда я действительно увеличиваю масштаб, нижняя половина сетки обрезается, в отличие от ожидаемого поведения:
Сравните это со стандартной трехмерной сеткой программного обеспечения: вы можете заметить, что линии в этом примере не имеют пикселов.
Более того, при реальном увеличении вы можете заметить, что камера не обрезается:
Интересно, что я делаю неправильно, чтобы получить такие результаты.Я хотел бы получить помощь с некоторыми основными моментами, чтобы я мог решить это!Спасибо!