我要控制的SceneKit场景中有一个planeNode。为此,我想不断更新方向。由于欧拉角的奇异性,我使用四元数。到目前为止,我直接更新planeNode.orientation
,它工作正常。唯一的问题是,由于更新速率的原因,它在方向之间略有跳跃,这看起来不太好。我尝试使用SCNActions
,但问题是Euler Angles仅支持rotateTo
和rotate
。 rotateTo
四元数有什么方法吗?
非常欢迎任何帮助!谢谢!
我通过使用sims_slerp
来解决它,因此没有将方向直接更新为新的设定点方向,而是将其更新为一部分:
let qSlerp = simd_slerp(simd_quatf(quat: self.planeNode.orientation), self.orientationSP!, 0.1)
// UPDATE ORIENTATION TO CLOSEST INTERPOLATION
self.planeNode.orientation = SCNQuaternion(simd_quat: qSlerp)}