Как остановить функцию рендеринга (_: updateAtTime:) в ARSCNView?

#swift #scenekit #augmented-reality #arkit

#swift #scenekit #дополненная реальность #arkit

Вопрос:

Я использую функцию рендеринга (_: updateAtTime:) для изменения положения объекта в сцене

 func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) {
    cylinder.position = SCNVector3(0, sin(time), 0)
}
  

Итак, если я хочу остановить сцену, которая отображается в ARSCNView, я пытаюсь использовать следующий код

 ARSceneView.scene.isPaused = true
  

но это не помогло, поэтому мой объект все еще движется, а не остается на месте (потому что функция рендеринга по-прежнему вызывается каждый кадр)

Итак, как я могу остановить сцену в ARSCNView? или как я могу прекратить вызывать функцию renderer(_:updateAtTime:)?

Комментарии:

1. Все cylinder.position еще изменяется, или объект движется вместе с камерой, и вы хотите, чтобы он зафиксировал свое положение на экране?

2. cylinder.position все еще изменяется.

Ответ №1:

Я не нашел решения, как остановить renderer(_:updateAtTime:) метод экземпляра. Вместо этого я мог бы предложить вам простой и надежный обходной путь:

 let action = SCNAction.move(by: SCNVector3(0, sin(time), 0), duration: 2)
let repeatAction = SCNAction.repeat(action, count: 1)
cylinderNode.runAction(repeatAction)
  

Надеюсь, это поможет.