好的,希望我能全面地解释这个…如果我把你弄糊涂了,请原谅我…
我使用的是一个旧的令人讨厌的引擎,它只使用局部空间对对象应用旋转矩阵。
我有一个文本工具,允许用户(非程序员)创建对象并旋转它们(更改不是实时应用的)。
如果只旋转1个轴,旋转将会很好,但是当他们指定旋转2个轴(例如关于UP和RIGHT的旋转)时,当然会变得歪斜,因为关于UP的旋转是使用局部UP而不是全局(即世界)UP。
例如,假设我们有一个相机(0,0,0)看着平面(0,-5,0)的宽边。该工具的用户想要旋转该平面的X(右)45度,并围绕全局向上45度。好吧,我没有办法让他们简单地指定两个旋转值,并获得他们想要的旋转关于全局向上…它们需要通过反复试验来指定关于FORWARD(在本例中为Y)的旋转,以保持对象"直立"。
我想知道的是:我如何将关于2轴的旋转转换成关于3轴的旋转,假设关于UP的旋转是全局的UP,并且仍然获得用户想要的旋转
每个对象的局部坐标帧都是固定的,因此一旦您将对象的局部轴从全局轴旋转,围绕全局轴的旋转(例如全局向上)就变成了相对于局部轴的任意旋转。
所以如果你想让用户全局向上旋转,你需要找出正确的旋转/平移组合关于对象的局部轴。
谷歌搜索rotation about arbitrary axis
出现了这个链接:
http://inside.mines.edu/gmurray/ArbitraryAxisRotation/