В разделе 7.4 «Перспективные проекции трехмерных объектов» исследуется геометрическая природа перспективной проекции и применение математических средств для описания перспективы. Здесь описывается, как включить перспективные проекции в графический конвейер - как с OpenGL, так и без него. Для упрощения изложения вводится дополнительное свойство однородных координат. В этом разделе также излагается мощный алгоритм отсечения, работающий в пространстве однородных координат; эффективность этого алгоритма является результатом применения к точкам нужных преобразований до начала отсечения. Приведен код отсекателя для тех программистов, которые хотят разработать свой собственный графический конвейер.

7.2. Снова о камере В разделе 7.5 «Создание стереоизображений» показано, как создавать стереоизображения сцен с целью сделать их более наглядными. В разделе 7.6 «Классификация проекций» приводится классификация различных видов проекций, используемых в изобразительном искусстве, архитектуре и технике, а также показано, как создать в программе каждый вид проекции. Глава заканчивается рядом тематических заданий, в которых разрабатываются приложения, проверяющие изложенную методику.

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

Что же еще осталось сделать? Для большего реализма мы хотим создать камеру для получения перспективных проекций и управлять ею. Нам также нужны методы усиления контроля над положением и ориентацией камеры - чтобы пользователь мог «пилотировать» камеру в процессе анимации. Это, однако, требует разработки более точного контроля, чем может предоставить OpenGL. Нам требуется точно контролировать отображаемый объем камеры, который в случае перспективных проекций определяется так же, как и для параллельных проекций, с помощью определенного вида матрицы. Поскольку теперь нам потребуется более глубокое использование однородных координат, чем до сих пор, мы разберем с самого начала математику перспективных проекций и посмотрим, как она применяется в графическом конвейере OpenGL. Мы также рассмотрим, как осуществляется отсечение границами отображаемого объема камеры, что опять^е потребует более глубоко осознанного применения однородных координат. Таким образом, мы увидим, как проделываются все операции, от начала до конца! Наше исследование сопровождается и основными теоретическими сведениями - для тех программистов, которым нужно разрабатывать математическое обеспечение трехмерной графики без использования OpenGL.


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