XNA / Directx Handedness (ориентация)? - PullRequest
0 голосов
/ 22 февраля 2012

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

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

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

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

1 Ответ

8 голосов
/ 24 февраля 2012

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

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

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

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

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

Right     1   0   0   0

Up        0   1   0   0

Forward   0   0   -1   0

Pos       0   0   0   1
...