【发布时间】:2013-03-28 22:04:21
【问题描述】:
那么,这里有一道向量、矩阵、旋转、四元数的题给three.js高手!
我在position(0,0,275) 有一个父对象,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 的跟踪算法的任何方向将不胜感激。我即将开展的项目中将引用您的努力。
感谢您的宝贵时间!
【问题讨论】:
标签: matrix rotation three.js tracking quaternions