Пытаясь создать приложение для рисования на основе ARKit, линия, которую я рисую, является дискретной - PullRequest
0 голосов
/ 13 октября 2018

Я пытаюсь сделать приложение для рисования на основе ARKit.Однако, если я рисую очень быстро (быстро двигаю свой телефон), линия, которую я нарисовал, будет дискретной.Я имею в виду, вы могли заметить один узел сферы.Я заметил, что другое приложение для рисования, например, «Просто линия», созданное Google, может нарисовать идеальную непрерывную линию.Я не знаю, как решить эту проблему или какую технику я должен использовать.Должен ли я использовать Metal вместо стандартного рендера sceneKit?Или что мне делать?

Я использую renderer(_:willRenderScene:atTime:) для выполнения своего розыгрыша.Ниже приведен мой простой фрагмент кода.

func renderer(_ renderer: SCNSceneRenderer, willRenderScene scene: SCNScene, atTime time: TimeInterval) {
    let sender = longPressGestureRecognizer
    let sceneView = longPressGestureRecognizer.view as! ARSCNView
    sender.numberOfTouchesRequired = 1
    sender.minimumPressDuration = 0.1
    sender.allowableMovement = 100
    sender.numberOfTapsRequired = 0
    let tapLocation = sender.location(in: sceneView)
    let state = sender.state
    switch state {
    case .began, .changed:
        let position = getCameraPosition(in: sceneView)
        let direction = getDirection(for: tapLocation, in: sceneView).normalized
        let currentDrawPosition = position! + direction
        let sphereNode = SCNNode(geometry: SCNSphere(radius: 0.005))
        sphereNode.position = currentDrawPosition
        self.sceneView.scene.rootNode.addChildNode(sphereNode)
    case .ended:
        fallthrough
    default:
        break
    }
}
...