Опубликован: 14.08.2012 | Доступ: свободный | Студентов: 880 / 20 | Оценка: 5.00 / 5.00 | Длительность: 09:59:00
Специальности: Программист
Лекция 6:

Трехмерная графика

22.3. Освещение

Освещение объектов в играх исполняет ту же роль, которая отведена ему в реальном мире. Существует множество типов освещения. Окружающий рассеянный свет (ambient light) - это свет, который освещает все объекты сцены с одинаковой интенсивностью. Источник рассеянного света не имеет местоположения.

Точечный источник света (point light) – это источник, который излучает свет во всех направлениях. Его можно сравнить со светом, исходящим от лампочки, не прикрытой абажуром.

Направленный источник света (directional light). Этот источник, в отличие от точечного, не имеет местоположения, однако имеет ориентацию

Зональный источник света (spot light) или прожектор имеет местоположение, ориентацию, а его световой поток ограничен в форме конуса.

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

22.4. Шейдеры

Шейдеры, или шейдерные программы – это программы, которые позволяют применять к моделям различные эффекты. Они пишутся на специальном языке программирования, как правило, не вручную, а с использованием соответствующего ПО. Шейдеры делятся на вершинные и пиксельные. Вершинные шейдеры позволяют применять различные эффекты к вершинам моделей, пиксельные шейдеры обрабатывают цвет каждого из пикселей модели перед выводом её на экран.

22.5. Текстуры

Текстуры – это растровые (двумерные) изображения, которые накладываются на трехмерные модели. Например, трехмерная модель автомобиля может представлять собой автомобиль, который как бы "вырезан" из твердого материала, а после наложения на эту модель соответствующей текстуры автомобиль приобретает цвет, создается иллюзия наличия у него мелких деталей оформления и т.д. Минимальная единица текстуры называется текселем. Чем больше пикселей приходится на один тексель, чем большьше разрешение текстуры – тем более качественной будет выглядеть модель после наложения на нее текстуры.

22.6. Объекты XNA для работы с 3D-графикой

В объектной модели XNA существует несколько объектов, которые интенсивно используются для работы с трехмерной графикой.

Класс Matrix позволяет создавать матрицы, которые используются для преобразований объектов в пространстве, для управления камерой и проекцией трехмерной сцены на экран. Этот класс, который, как это обычно бывает в NET Framework, является так же типом данных и содержит статические методы, используемые для создания матриц. Как правило, приходится, например, "вручную" модифицировать мировую матрицу для того, чтобы организовать поворот или перемещение модели – все необходимые операции можно выполнить с помощью статических методов класса Matrix, так же объекты класса Matrix имеют множество полезных свойств. Рассмотрим некоторые из них.

Свойства Mxy возвращают значения, которые располагаются в строке с индексом x и в столбце с индексом y, которые изменяются от 1 до 4. Например, свойство M11 возвращает значение, находящееся на пересечении первой строки и первого столбца матрицы, M23 – второй строки и третьего столбца, M44 – четвертой строки и четвертого столбца.

Метод CreateLookAt позволяет создать видовую матрицу (камеру).

Метод CreateOrthographic позволяет создать ортогональную проекционную матрицу.

Метод CreatePerspective позволяет создать перспективную проекционную матрицу.

Методы CreateRotationX, CreateRotationY, CreateRotationZ позволяют создавать матрицы поворота вокруг соответствующей оси.

Метод CreateScale предназначен для создания матрицы масштабирования (изменения размеров) объекта.

Метод CreateTranslation позволяет создать матрицу перемещения объекта.

Метод CreateWorld создает мировую матрицу.

Класс Vector3 используется для хранения координат точек в пространстве, для задания векторов и для некоторых других задач, например – для задания параметров матриц.

Класс BasicEffect содержит множество элементов, важных при создании трехмерной сцены. Именно объект этого класса содержит описания матриц, описания источников света в игре и многие другие важные свойства и методы.

Помимо класса BasicEffect для вывода трехмерных изображений с различными эффектами можно пользоваться классами AlphaTestEffect, DualTextureEffect, EnvironmentMapEffect, SkinnedEffect и другими объектами, описанными в пространстве имен Microsoft.Xna.Framework.Graphics.

Класс MathHelper содержит полезные методы для проведения различных математических операций. Например, статический метод ToRadians позвлояет переводить значения из градусов в радианы.

При работе с трехмерной графикой используются и другие объекты XNA, с ними вы познакомитесь в дальнейших работах.

22.7. Выводы

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

Гулич Анна
Гулич Анна
Невозможно пройти тесты, в окне с вопросами пусто