Анализ процесса проецирования разделим на две части. Сначала с помощью невырожденного преобразования в однородных координатах преобразуем заданную зону видимости в стандартную. Будем использовать преобразование, которое выполняет эту операцию по отношению ко всем объектам, комбинируя матрицу преобразования с матрицей вида. Объекты искажаются таким образом, что после выполнения на втором этапе проективного преобразования выбранного типа (мы сейчас выбрали параллельное ортогональное проективное преобразование) по отношению к этим объектам и зоне видимости получим хр =х, ур =у, =р = 0.

Обратите внимание на то, что, по сути, ортогональное проективное преобразование сводится только к приравниванию компонента г к 0 или его простому игнорированию, поскольку при отображении он нам просто не нужен. Таким образом, вся вычислительная нагрузка переносится на первую стадию процесса. Разделение процесса проецирования на две стадии в значительной мере связано с выполнением других задач в ходе конвейерной обработки. В частности, в главе 7 будет показано, что отсечение должно выполняться при работе с трехмерным представлением объектов и что использование невырожденных матриц преобразования позволяет сохранять информацию о глубине расположения объектов вдоль проецирующего луча, которая необходима для удаления невидимых поверхностей и закрашивания (глава 6). На первой стадии процесса формируется матрица проецирования (projection matrix) (в большинстве графических систем, в том числе и в OpenGL, она называется именно так). В OpenGL также выполняется разделение между координатами экрана (screen coordinates), которые являются двухмерными и не содержат информации о глубине, и координатами окна (window coordinates), которые являются трехмерными и сохраняют информацию о глубине. Матрица проецирования и последующее перспективное деление преобразуют вершины в координаты окна.

При ортогональном проецировании простейшей зоной видимости является куб, центр которого находится в начале координат, а грани образуются плоскостями х = ±1, _у = ±1, г = ±1.


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