所以,这里有一道向量、矩阵、旋转、四元数的题供three.js高手们答疑解惑!
我有一个父对象position(0,0,275)
with direction(0,0,-1)
, +y up 和rotation(0,0,0)
.
附加到父对象的是具有关系的子对象:
rel_position(.5, 0, 0)
rel_rotation(0, 0, 0)
我在场景中也有一个目标:
position(0, 100, 0)
考虑一艘具有俯仰、偏航和横滚的船(母船)。它有一个带有俯仰和偏航的炮塔(子)。炮塔需要以给定的转速 (rad/s) 跟踪目标。
我花了 5 天时间试图获得一个合适的跟踪算法。我能做的最好的事情是删除手动更新矩阵的父子节点上的 matrixAutoUpdate 功能。然后使用 child.matrixWorld 为当前子旋转创建旋转矩阵或四元数。然后我可以创建一个从子位置查看目标的辅助 Object3D。我可以区分孩子和次要 Object3D 之间的差异,并在 rad/s 的基础上对四元数进行分析。但是,当我将滚动添加到父对象或目标旋转到八分圆之外时(+, +, +)
,子旋转(或四元数)计算会崩溃,从而导致疯狂旋转。
对于子 Object3D 的跟踪算法的任何方向将不胜感激。我即将进行的项目中将引用您的努力。
感谢您的时间!