想象一下VR控制器和对象x的旋转。按下触发器时,旋转将另存为Quaternion rStart
。在旋转控制器时,rStart
和当前旋转rCurrent
之间的旋转变化被添加到对象x。简单地说,对象x就会像控制器一样旋转。
我要求对象的旋转必须“连续”。例如,我预设了10度的逐步大小。然后旋转控制器将旋转对象,但仅允许其处于这些“捕捉”“旋转网格”旋转中。对象的旋转应在角度方向上捕捉到最接近的“旋转步骤”。
我想出了两个方法:
1)使用EulerAngles
四元数> EulerAngles>带有模数的x,y,z角> EulerAngles>四元数
我似乎遇到了一个奇怪的万向节锁定问题,因为转移到eulerAngles并返回到四元数是有损失的。
2)使用极坐标
四元数>向前矢量,向上>极坐标。取模>向量f,u>四元数
我觉得只用两个角度(天顶和方位角)工作就可以使过程更容易理解,这很重要,因为在该主题上我不是专业人士。
我的问题: