Преобразование представления

Преобразование представления находит зритель в мировом пространстве, преобразуя вершины в пространство камеры. В пространстве камеры камера, или наблюдатель, находится в начале координат и смотрит в направлении положительной полуоси Z. Видовая матрица переносит объекты в мировом пространстве относительно положения камеры — начала координат пространства камеры — и ориентации камеры. В Direct3D используется левовинтовая система координат, поэтому положительная полуось Z направлена внутрь сцены.

Существует множество способов создания видовой матрицы. Во всех случаях камера имеет некоторые логическое положение и ориентацию в мировом пространстве, которые используются в качестве начальной точки для создания видовой матрицы, которая будет применяться к моделям в сцене. Видовая матрица параллельно переносит и поворачивает объекты, чтобы поместить их в пространство камеры, где камера находится в начале координат. Один из способов создания видовой матрицы — это сочетание матрицы параллельного переноса с матрицами поворота для каждой оси. При таком подходе применяется следующее общее матричное уравнение.

уравнение видового преобразования

В этой формуле V — это создаваемая видовая матрица, T — матрица параллельного переноса, которая перемещает объекты в мире, а Rₓ – Rz — матрицы поворота, которые поворачивают объекты вокруг осей X, Y и Z. Матрицы параллельного переноса и поворота основываются на логическом положении и ориентации камеры в мировом пространстве. Таким образом, если логическое положение камеры в мире — <10,20,100>, задача матрицы параллельного переноса — переместить объекты на -10 единиц по оси X, на -20 единиц вдоль по Y и на -100 единиц по оси Z. Матрицы поворота в формуле основываются на ориентации камеры — на том, насколько оси пространства камеры повернуты по отношению к мировому пространству. Например, если упомянутая выше камера направлена прямо вниз, ее ось Z на 90 градусов (пи/2 радиана) повернута относительно оси Z мирового пространства, как показано на следующем рисунке.

иллюстрация видового пространства камеры в сравнении с мировым пространством

Матрицы поворота применяют повороты равной — но противоположной — величины к моделям в сцене. Видовая матрица для этой камеры предполагает поворот на –90 градусов вокруг оси X. Матрица поворота объединяется с параллельного переноса для создания видовой матрицы, которая корректирует положение и ориентацию объектов в сцене так, что их верх обращен к камере, создавая впечатление, что камера находится над моделью.

Настройка матрицы представления

Direct3D использует мировую матрицу и видовую матрицу для конфигурирования нескольких внутренних структур данных. Каждый раз, когда вы устанавливаете новую мировую или видовую матрицу, система пересчитывает соответствующие внутренние структуры. Частая установка этих матриц занимает много вычислительного времени. Свести к минимуму количество необходимых вычислений можно путем конкатенации мировой и видовой матриц в мировую-видовую матрицу, задать ее в качестве мировой матрицы, а затем установить видовую матрицу в единичную. Сохраняйте кэшированные копии отдельных мировых и видовых матриц, чтобы вы могли изменять, объединять и сбрасывать мировую матрицу по необходимости.

Преобразования