WP7 & XNA - Как умножить RotationMatrix в ландшафтном режиме - PullRequest
0 голосов
/ 09 марта 2012

Я поддерживаю Portrait и Landscape-Mode для WindowsPhone-страницы, где я комбинирую silverlight и XNA.

Чтобы вставить RotationMatrix в систему координат XNA в портретном режиме, я поворачиваю матрицу на 90 ° вокруг оси x следующим образом:

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 Ответ

3 голосов
/ 09 марта 2012

Умножение матриц чувствительно к порядку (извините, я не знаю, как оно называется на английском).Сначала используйте матрицу ориентации, чтобы сориентировать сцену, и после этого вы можете повернуть трансформированную сцену на 90 ° вокруг оси Z.С моим большим знанием английского я не знаю, как объяснить это более четко, поэтому просто попробуйте это:

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

Надеюсь, это поможет!

...