3D-анимация − это анимация, основанная на 3D-графике. Трёхмерная графика в отличие от двухмерной даёт более реалистичное представление образов, как, например, это показано на рис. 4.14. Давайте для начала рассмотрим этапы создания трёхмерной графики [5].
Рис. 4.14. Двухмерная и трёхмерная сферы
Создание трёхмерной графики
В настоящее время, благодаря новейшим средствам, заложенным в микропроцессор, трёхмерные объекты строятся на основе математического моделирования, а затем посредством специальных аппаратных и программных средств трёхмерной графики происходит визуализация объектов на монитор компьютера.
Конвейер − это логическая группа вычислений, выполняемых последовательно, которые дают на выходе синтезируемую сцену. Конвейер разделен на множество этапов, на каждом из которых аппаратно или программно выполняется некоторая функция. Наличием переходов между этапами конвейера обеспечивается возможность выбора между программной и аппаратной реализацией очередного этапа. Такой подход к настройке конвейера позволяет приложениям трёхмерной графики получать преимущества аппаратной реализации, когда таковая доступна. Таким образом, реализация конвейера может быть чисто программной, полностью аппаратной или смешанной (программно-аппаратной).
DirectX − это набор API-функций, разработанных для решения задач, связанных с игровым и видеопрограммированием под Microsoft Windows. Наиболее широко используется при написании компьютерных игр. Пакет средств разработки DirectX под Microsoft Windows бесплатно доступен на сайте Microsoft. Зачастую свежие версии DirectX поставляются вместе с игровыми приложениями, так как DirectX API обновляется достаточно часто, и версия, включённая в ОС Windows, зачастую является далеко не самой новой.
API − интерфейс прикладного программирования (англ. Application Programming Interface) − набор готовых констант, структур и функций, используемых при программировании пользовательских приложений и обеспечивающих правильное взаимодействие между пользовательским приложением и операционной системой.
Процесс создания трёхмерных объектов на трёхмерной сцене будем называть конвейером. На рис. 4.15 приведён пример конвейера, разделённого на две стадии: геометрические преобразования и рендеринг. До начала работы геометрических преобразований приложение должно описать трёхмерную сцену, изображение которой необходимо синтезировать. Если использовать такие распространённые интерфейсы, как DirectX компании Microsoft или OpenGL компании Silicon Graphics, сцена будет описана как последовательность обращений (вызовов функций) к интерфейсу API. Многие производители оборудования для трёхмерной графики разрабатывают собственные конвейеры и соответствующие интерфейсы приложений API. Оригинальные программные разработки позволяют достичь наибольшей производительности их оборудования. Соответственно, оригинальные интерфейсы приложений API требуют описывать сцены с использованием вызовов, соответствующих используемой аппаратуре.
Рис. 4.15. Типичный 3D-конвейер
1. Геометрические преобразования. Традиционно трёхмерные объекты конструируются из треугольников или многоугольников, образуя базовую проволочную модель объекта (рис. 4.16). Изначально множество треугольников описывается на языке высокого уровня, а затем преобразуется во множество вершин. Стадия геометрических преобразований состоит из четырёх этапов.
1.1. Конструирование треугольников. На данном этапе каждый объект описывается группой треугольников. Треугольники формируются на основе множества вершин, заданных приложением.
1.2. Модельные преобразования. Этап включает в себя такие преобразования, как перенос, вращение и изменение масштаба. Преобразования позволяют перемещать объекты в сцене.
1.3. Выбор модели освещения и вычисление освещённости объектов. Модель освещения описывает тип используемых источников света и затем, когда определены свойства освещаемого объекта, формируется эффект освещения. Общепринятые модели освещения включают рассеянный, направленный и точечный свет. Отражающие свойства материала в сочетании с моделью освещения задают цвет объекта.
1.4. Установка. На этапе установки изменяются размеры треугольников в зависимости от положения точки наблюдения сцены.
Рис. 4.16. Проволочная модель сферы
2. Рендеринг. Рендеринг − это процесс преобразования объекта или сцены, созданных в приложении трёхмерной графики, для вывода на дисплей, который представляет собой двухмерную плоскость. На стадии рендеринга по описанию треугольников генерируются пиксели изображения. Стадия рендеринга также состоит из четырёх этапов.
2.1. Сортировка данных по Z-буферу. Трёхмерная сцена составлена из множества объектов со взаимным расположением по глубине в зависимости от точки визирования. Объекты и сцены можно вращать и наблюдать с разных позиций, в том числе спереди, сбоку, сзади, сверху и снизу. Z-буфер предназначен для хранения информации, необходимой для правильного отражения по глубине видимых объектов в зависимости от положения и направленности наблюдателя в сцене.
2.2. Наложение текстуры на объект. Текстура представляет собой плоскую картину, которая оборачивается вокруг трёхмерного объекта, как это показано на рис. 4.17. Текстура прикладывается к проволочной модели объекта для обеспечения реалистичной поверхности или покрытия объекта.
Рис. 4.17. Текстурированная сфера
2.3. Закраска треугольников. Для выполнения этой задачи используются три модели: плоское закрашивание и закрашивание по Гуро и по Фонгу. Модель с плоским закрашиванием заключается в равномерном однородном закрашивании каждого треугольника одним цветом. В процедурах закрашивания по Гуро и по Фонгу цвет интерполируется относительно границ треугольника, что приводит к более реалистичной и непрерывной закраске объекта (рис. 4.18).
Рис. 4.18. Сфера с плоским закрашиванием. Сфера с закрашиванием по Фонгу
2.4. Алгоритм сглаживания. Применяется для устранения эффекта дискретизации, ступенчатости изображения на границе объектов. Поскольку пиксели выровнены по сетке (что характерно для обычных дисплеев), точное представление объекта, имеющего наклонные линии, представляется непростой задачей. Дискретизация приводит к появлению на прямых линиях эффекта ступенчатости или зазубренности. Алгоритм сглаживания снижает остроту проявления подобного эффекта.