Здавалка
Главная | Обратная связь

Полезные мелочи: матрица трансформаций



Итак, мы установили матрицы для камеры, однако невыясненным остался вопрос, зачем нужна переменная g_World, заполнявшееся единичной матрицей. Это матрица трансформаций. На самом деле этой переменной можно присваивать значение, отличное от единицы. И это полезная матрица, так как перед тем как отобразить объект мы его можем правильно расположить в пространстве.

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

При помощи матриц трансформаций g_World мы можем переместить объекты куда угодно перед тем как сделать их Render. При этом предварительно мы можем повернуть объект вокруг своей оси на нужный угол а также увеличить или уменьшить объект. Зачастую объекты «приходят» из 3d редактора в таком виде, что их надо подгонять по размеру. В редких случаях в редакторе можно точно угадать и подобрать нужную величину создаваемого объекта, так как системы измерений всегда могут отличаться.

Пример приложения

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

В качестве целевой точки для камеры будет выберем центр координат. Значение FOV для камеры установим по умолчанию.

Обзор приложения

Теперь остается скомпилировать и запустить приложение.

Исходный текст приложения к данному уроку вы можете найти тут. Данное приложение устанавливает камеру в соответствии с одной из точек эллиптической траектории и динамически изменяет положение камеры.

Заключение

В данном уроке вы изучили как устанавливать камеру, какие типы данных и объекты можно использовать для хранения информации о камере. Также вы узнали каким образом передавать в шейдер данные о положении камеры. Следующий урок мы посвятим несколько необычной теме – процедурной генерации 3d поверхности. То есть, столкнемся с конкретным примером практического применения Direct3D.








©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.