2012-02-22 3 views
0

Я использую XNA (который использует DirectX) для некоторого графического программирования. У меня была коробка, вращающаяся вокруг точки, но вращение немного странно.XNA/Directx Handedness (ориентация)?

Все кажется, что кто-то взял компас и вращают его на 180 градусов, так что N 180, W 90, и т.д ..

Я не совсем, кажется, найти источник, который заявляет ориентацию, так Возможно, я просто не использую правильные ключевые слова.

Может кто-нибудь помочь мне найти, на что ориентирована XNA/DirectX, и страницу, в которой тоже указано это?

+1

Это может быть связано: http://stackoverflow.com/questions/3527531/xna-question-about-rotation – SpartanDonut

ответ

8

DirectX использует левую систему координат.

XNA Использует правую систему координат.

  • Вперед -Z, назад + Z. Переслать точки в экран.
  • Право есть + X, слева - -X. Правый указывает на правую сторону экрана.
  • Вверх + Y, вниз -Y. Вверх указывает на верхнюю часть экрана.

Матричная компоновка заключается в следующем (используя в этом примере идентичную матрицу). XNA использует макет строки для своих матриц. Первые три строки представляют собой ориентацию. Последняя строка и первые три столбца ([4, 1], [4, 2] и [4, 3]) представляют собой перевод/позицию. Вот документация на XNA's Matrix Structure.

В случае матрицы перевода (перевод положение и вращение в сочетании):

Right  1 0 0 0 

Up  0 1 0 0 

Forward 0 0 -1 0 

Pos  0 0 0 1 
+1

Я нашел этот древний пост, но все еще озадачен тем, почему XNA.Vector3.Forward возвращает мне «0,0, -1». Любая идея, почему это может быть, так как система RHC должна быть 0,0,1, как показывает ваша матрица. – PhillipH

+0

Филлип, нападающий IS 0, 0, -1, у моего сообщения была опечатка, о которой никто никогда не упоминал. –

+0

Ага, тайна решена :-) – PhillipH