如何通过每秒更改位置在 ARkit 中制作动画

How to make animation in ARkit by changing position per second

我如何在 ARkit 中通过更改其位置将动画制作到 SCNnode,有点像渲染循环。意味着每秒更改位置 60 次,我该怎么做?

如果您只想每秒更改节点的位置 60 次,那么您可以只为 'ARSCNViewDelegate' 实现渲染器 'updateAtTime' 函数。 该函数应该以每秒 60 次左右的速度调用。

一个愚蠢的版本可能是

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

这将使之前定义的 yourNode 沿 -Z 方向每秒移动 60 厘米 1 厘米。你可以用一个迭代跟踪器来编写它来循环你想要的任何位置动作。

你也可以用类似

的东西做一个实际的动画
    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,如下所示:Adding animation to 3D models in ARKit