3D旋转和摄像机角度?

时间:2013-03-22 10:40:18

标签: xna

我的轮换问题很小。我的模型旋转但稍微离开摄像机角度位置而不是在中心。这是我的轮换代码,这是正确的吗?

matrix m = matrix.createrotationZ(MathHelper.ToRadian(30))
matrix object = matrix.createtranslation(objectPos) * m;

1 个答案:

答案 0 :(得分:1)

正如Lucius在评论中指出的那样,矩阵代表了一系列线性变换。将它们相乘的顺序非常重要。

RotationMatrix * TranslationMatrix表示“在模型空间中围绕其轴旋转此模型,然后将旋转的模型转换为世界空间。”

TranslationMatrix * RotationMatrix表示“将此模型转换为世界空间,然后围绕世界原点旋转模型。”

更改矩阵乘法的顺序。

另外,当您开始向序列添加更多转换时,使用*运算符的乘法矩阵很快就会变得昂贵;它最终可能会创建许多从未实际使用过的额外矩阵。您可以使用Matrix类上的静态Multiply()方法对此进行优化。