Я пытаюсь сделать приложение для рисования на основе 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
}
}