Конвертировать 2D аффинную матрицу преобразования в 3D аффинную матрицу преобразования - PullRequest
6 голосов
/ 01 апреля 2011

У меня есть ошибка где-то в моем коде, мне было интересно, если это неверно.

У меня есть матрица 2D-вида в моем коде, но для отображения моего мира на экране мне нужно преобразовать 2D-видМатрица в 3D.Это процесс, который я использую:

| a b c |      | a b c 0 |
| d e f |  =>  | d e f 0 |
| g h i |      | g h i 0 |
               | 0 0 0 1 |

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

Для рисования в 2D с использованием 3D, я использую эту матрицу проекции:

_basicEffect.Projection = Matrix.CreateOrthographicOffCenter(0, graphicsDevice.Viewport.Width, graphicsDevice.Viewport.Height, 0, 0, 1);

Как правильно преобразовать 2D-матрицу в 3D?

1 Ответ

15 голосов
/ 01 апреля 2011

Аффинные преобразования используют дополнительную строку / столбец матрицы преобразования для перевода. Поэтому я думаю, что вы хотите сделать, это переместить последнюю строку / столбец вниз / вправо, а затем для новой оси просто вставить преобразование идентичности.

| a b c |      | a b 0 c |
| d e f |  =>  | d e 0 f |
| g h i |      | 0 0 1 0 |
               | g h 0 i |

Я не уверен, но попробуй хотя бы.

...