Нарисованные линии SceneKit получают пиксели - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь создать 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.Тем не менее, сетка выглядит по-настоящему:

Pixeled Grid

Когда я использую встроенные функции обработчика камеры SceneKit, вы можете заметить, что даже при увеличении масштабасетка, она получает пиксели:

Zoomed Pixled Grid

Более того, когда я действительно увеличиваю масштаб, нижняя половина сетки обрезается, в отличие от ожидаемого поведения:Cropped zoom grid

Сравните это со стандартной трехмерной сеткой программного обеспечения: standard 3d grid вы можете заметить, что линии в этом примере не имеют пикселов.

Более того, при реальном увеличении вы можете заметить, что камера не обрезается: Good behaviour zoom

Интересно, что я делаю неправильно, чтобы получить такие результаты.Я хотел бы получить помощь с некоторыми основными моментами, чтобы я мог решить это!Спасибо!

...