连续四元数旋转

时间:2018-08-02 18:33:20

标签: unity3d 3d rotation quaternions

我是Unity的新手,所以请多多包涵。我正在尝试使用四元数不断旋转GameObject(球体),但是我无法从示例中弄清楚。

我成功使用...

transform.Rotate(new Vector3(0, 0, 1), 50f * Time.deltaTime);

但是我想复制一个球体如何在3d空间中旋转,而不仅仅是沿1个轴旋转。

从我发现的示例中,旋转一旦到达“终点”就停止了。

很抱歉,如果这是一个基本问题。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

如果您想像小行星一样不断旋转,但绕某些自定义轴旋转,则只需通过该轴而不是Vector3(0, 0, 1)

此向量可以是(1,2,3)之类的任何东西,但我不记得是否必须对其进行标准化。

编辑:

如果您需要更多控制权,则可以创建几个四元数并将其连接:

Quaternion q1 = Quaternion.AngleAxis(10f * Time.deltaTime, Vector3.right);
Quaternion q2 = Quaternion.AngleAxis(20f * Time.deltaTime, Vector3.forward);    
Quaternion q3 = Quaternion.AngleAxis(30f * Time.deltaTime, Vector3.up);
Quaternion q = q1 * q2 * q3;

您只需要了解q将取决于乘法顺序,因为对于四元数,q1 * q2q2 * q1不同。