我有一个简单的锥体在3D空间中飞行(连续的卷曲噪声类型的运动和相机跟随它):
我试图了解根据其方向旋转锥体的正确方法是什么。我得到了以下内容(假设velocity
是Vector3
):
cone.rotation.y = Math.atan2(-velocity.z, velocity.x)
cone.rotation.z = Math.asin(velocity.y / velocity.length())
我从three.js例子中复制了这个:https://github.com/mrdoob/three.js/blob/master/examples/canvas_geometry_birds.html
这样可行,但有时锥体会突然移动而没有任何明显的原因(与可怕的"万向节锁定有关"可能?)。
有人可以解释一下这里3D旋转的原理是什么,以及实时更新旋转的最佳或最有效的方法是什么(可能使用矩阵)?