如何根据方向向量计算偏航俯仰和滚转?

时间:2011-07-07 03:50:46

标签: 3d rotation orientation

我正在使用一些3D图形,我遇到了一个问题。我有一个在世界上移动的模型。模型具有基类,其以三个正交单位向量的形式包含它们的方向,即方向向上向右。它们分别指向模型前部的位置,分别指向上方和右方。

模型的AI通过相应地更改模型的 Direction 向量和所有其他方向向量来追踪目标,以便模拟模型指向目标。

我无法跟踪AI改变方向向量的角度,因为AI文件已经预编译,我无法更改它们。此外,AI使用模型的位置坐标和目标的位置坐标来更改矢量。

我的问题是如何从方向矢量获得偏航俯仰滚动,以便创建旋转矩阵来旋转整个模型处于所需的方向?

感谢您的帮助。

[编辑] 由于给出了答案,我发现了这个:

               X   Y   Z   W
             -                -
       Right | Rx  Ry  Rz  Rw |
          Up | Ux  Uy  Uz  Uw |
    -Forward |-Fx -Fy -Fz -Fw |
 Translation | Tx  Ty  Tz  Tw |
             -                -

这就是如何设置矩阵以使用方向向量来获得世界矩阵(不进行缩放:缩放,只需创建一个缩放矩阵并将其乘以)。

[解决]

1 个答案:

答案 0 :(得分:4)

你不需要偏航,俯仰和翻滚。三个正交单位向量Direction,Up和Right为您提供旋转矩阵的行。就这么简单。

Sensor Fusion on Android Devices: A Revolution in Motion Processing中的41:58。

顺便说一下,你可以很容易地遇到偏航,俯仰和翻滚的麻烦,请参阅38:25。