WP7& XNA - 如何在横向模式下乘以RotationMatrix

时间:2012-03-09 13:39:54

标签: c# windows-phone-7 xna orientation

我支持WindowsPhone页面的纵向和横向模式,我将silverlight和XNA结合在一起。

为了让RotationMatrix以纵向模式进入XNA坐标系,我将矩阵围绕x轴旋转90°,如下所示:

viewMatrix = Matrix.CreateRotationX(MathHelper.PiOver2) * motion.CurrentValue.Attitude.RotationMatrix;

RotationMatrix似乎与横向模式中的页面一起旋转。我试图围绕z轴旋转矩阵。至少我的物体显示正确,但俯仰/偏航混合起来。

viewMatrix = (Matrix.CreateRotationZ(MathHelper.PiOver2) * (Matrix.CreateRotationX(MathHelper.PiOver2) * motion.CurrentValue.Attitude.RotationMatrix));

我如何将RotationMatrix相乘以在横向模式下获得正确的值?

提前感谢!

1 个答案:

答案 0 :(得分:3)

矩阵乘法是顺序敏感的(抱歉,我不知道它是如何用英语调用的)。首先,使用姿态矩阵定向场景,然后可以围绕Z轴将变换后的场景旋转90°。凭借我对英语的深刻了解,我不知道如何更清楚地解释这一点,所以试试这个:

viewMatrix = motion.CurrentValue.Attitude.RotationMatrix * Matrix.CreateRotationZ(MathHelper.PiOver2);

希望这有帮助!