Как сделать анимацию в ARkit, меняя положение в секунду - PullRequest
0 голосов
/ 18 февраля 2020

И что сделать анимацию в ARkit для узла SCN, изменив его позиции, вроде рендера l oop. Средства для изменения местоположения 60 раз в секунду, как я могу это сделать?

1 Ответ

0 голосов
/ 19 февраля 2020

Если вы просто хотите изменить положение своего узла 60 раз в секунду, то вы можете просто реализовать функцию рендеринга updateAtTime для ARSCNViewDelegate. Эта функция должна вызываться примерно 60 раз в секунду.

Глупая версия может быть

extension ViewController: ARSCNViewDelegate, ARSessionDelegate {
    func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) {
        yourNode.simdWorldPosition.z -= 0.01
    }

. Это приведет к перемещению ранее определенного yourNode 1 см в направлении -Z 60 раз в секунду. Вы можете написать это с помощью итерационного итератора для l oop с любыми позиционными действиями, которые вы хотите.

Вы также можете сделать реальную анимацию с чем-то вроде

    let startingZ = node.simdWorldPosition.z
    let animation = CABasicAnimation(keyPath: "simdWorldPosition.z")
    animation.fromValue = startingZ
    animation.toValue = startingZ - 2.0
    animation.duration = 1
    animation.autoreverses = true
    animation.repeatCount = .infinity
    yourNode.addAnimation(animation, forKey: "backAndForth")

Или вы можете использовать SCNActions как показано здесь: Добавление анимации к 3D-моделям в ARKit

...