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

В этом разделе будет рассмотрена задача формирования на экране изображения вращающегося куба. (Один кадр такого "мультфильма" представлен на рис. 4.22.) Всю задачу можно разбить на ряд подзадач:

моделирование;

преобразование во фрейм камеры;

отсечение;

проецирование;

удаление невидимых поверхностей;

преобразование в растр.

Ниже мы по очереди рассмотрим каждую из подзадач. Начнем с того, каким образом можно представить трехмерный объект, опираясь на множество его вершин, аналогично тому, как это делалось с двухмерными объектами. Для этого нам потребуется разработать структуру данных, учитывающую связи между вершинами, ребрами и гранями геометрического трехмерного объекта. Такая структура данных в OpenGL поддерживается массивами вершин (vertex arrays), о которых речь пойдет в конце данного раздела5.

Рис. 4.22. Один кадр анимации вращающегося куба Разобравшись с методами моделирования куба, мы перейдем к его анимации, используя для этого математический аппарат аффинных преобразований в однородных координатах (подробно они будут рассмотрены в разделе 4.5). С помощью этих преобразований будет изменяться матрица вида OpenGL. В главе 5 мы опять будем использовать эти преобразования в качестве одного из этапов конвейерного процесса визуализации. Описания вершин будут подвергаться последовательным преобразованиям по мере "перемещения по конвейеру", причем на каждой стадии будет применяться все то же представление вершин в однородных координатах. На выходе конвейера описания объектов, опирающиеся на множество трансформированных вершин, подвергаются растровому преобразованию. На этой стадии можно смело полагать, что все будет выполнено корректно, если предыдущие преобразования были сделаны правильно.


⇐ Предыдущая| |Следующая ⇒