2

我想将我的 Transform 向前移动,我直接将它用于我的对象。不只是在特定的轴(例如 z)上向前移动它,有没有办法可以在 Transform 所面对的方向上移动它?例如,默认情况下我会完美地沿着 Z 轴向下,但是,如果我在 Y 轴上旋转我的变换并想要“向前”它不会直接沿着 Z 轴向下,而是在我旋转的方向上一点点它。

我相信我需要计算前向向量,但是,这似乎是我所能找到的。如果那是正确的,或者如何做,我找不到任何东西。如何在具有 4x4 矩阵(行主要)的同时沿“正向”移动变换。

这不是为了我的游戏相机,而只是为了我的游戏对象。为此,我只有我的变换矩阵,它是由我的旋转矩阵、比例矩阵和位置构建的。

4

1 回答 1

1

您可以从矩阵中提取第三列(或行,取决于乘法的顺序),这将是前向(或后向,取决于“向下”的方向)。这将为您提供 z 轴的目标向量。

等效地,您可以将向量new Vector4(0,0,1,0)(或new Vector4(0,0,-1,0))与矩阵相乘(或向量与矩阵相乘)。请注意,第四个坐标是零而不是一,因为您不需要任何平移。这将为您提供 z 轴转换为的方向。

这也适用于 3x3 旋转矩阵。在这种情况下,只需从上面的向量中删除最后一个坐标。

结果将是指向“向前”的向量。您可以将其添加到位置或平移矩阵/向量。

于 2012-07-05T21:26:01.450 回答