动画时重置节点旋转值

时间:2018-09-17 13:09:55

标签: ios swift scenekit arkit

我正在研究AR项目,需要在识别出特定图像后在场景中放置一些3D模型。
我还需要3d模型围绕它们的y轴无限旋转,这是我用以下代码成功完成的。

let spin = CABasicAnimation(keyPath: "rotation")
spin.fromValue = NSValue(scnVector4: SCNVector4(x: 0, y: 1, z: 0, w: 0))
spin.toValue = NSValue(scnVector4: SCNVector4(x: 0, y: 1, z: 0, w: Float(2 * Double.pi)))
spin.duration = 8
spin.repeatCount = .infinity
modelNode.addAnimation(spin, forKey: nil)

我遇到的问题是,当我尝试将此旋转动画应用于预先旋转的节点以使用正确的起始方向设置时

modelNode.transform = SCNMatrix4Mult(modelNode.transform, SCNMatrix4MakeRotation(Float(-Double.pi/2), 1, 0, 0))

在这种情况下,动画似乎没有考虑节点的当前旋转,而是使用原始旋转,从而使我的设置无效。

我做错什么了吗?
在为另一个旋转动画之前,如何设置起始对象旋转?

0 个答案:

没有答案