5.6.1. Знакомство с процессом визуального отображения и графическим конвейером Все двумерные рисунки, выполненные нами до сих пор, фактически использовали частный случай трехмерного визуального отображения, основанный на простой «параллельной проекции». Мы использовали «камеру», подобную той, что показана на рис. 5.47. «Глаз», который наблюдает сцену, смотрит вдоль оси 2 на «окно», представляющее собой прямоугольник, расположенный в плоскости ху. Отображаемый объем (view volume) камеры - это прямоугольный параллелепипед, четыре боковые грани которого определяются границами окна, а две оставшиеся грани определяются ближней плоскостью (near plane) и дальней плоскостью (far plane). Точки, располагающиеся внутри отображаемого объема, проецируются на окно вдоль прямых, параллельных оси 2. Это эквивалентно простому игнорированию

5.6. Рисование трехмерных сцен с применением OpenGL

z-компонентов таких точек, так что трехмерная точка (х,, г/,, z,) проецируется в точку (xv yv 0). Точки, располагающиеся за пределами отображаемого объема, отсекаются. Отдельное преобразование в порт просмотра (viewport transformation) отображает проецируемые точки из окна в порт просмотра на устройстве отображения.

Френсис Хилл

Рис. 5.47. Простое визуальное отображение, используемое в OpenGL для двумерного рисования Обратимся теперь к трехмерной графике и разместим трехмерные объекты на сцене. В приведенных здесь примерах мы продолжаем использовать параллельную проекцию. (Более реалистичная перспективная проекция, в которой удаленные объекты имеют меньший размер, чем близкие объекты, описывается в главе 7.) Поэтому мы будем применять такую же камеру, как на рис. 5.47, однако предоставим ей большую свободу положения и ориентации на трехмерной сцене, - с тем, чтобы получить лучший обзор сцены.

На рис. 5.48 изображена такая камера, внедренная в сцену. Эта сцена состоит из параллелепипеда, часть которого располагается за пределами отображаемого объема. На рисунке также показано изображение, создаваемое камерой.


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