Френсис Хилл

Рис. 5.50. Эффект применения матрицы моделирования-вида в графическом конвейере: а) до преобразований; б) после преобразования моделирования; в) после преобразований моделирования и вида На рис. 5.50 показано, что делают матрицы Ми Удля того же случая, который показан на рис. 5.49, где камера «смотрит вниз» на сцену, состоящую из параллелепипеда. На рис. 5.50, а показан единичный куб с центром в начале координат. Преобразование моделирования с матрицей М масштабирует, поворачивает и перемещает этот куб, превращая его в параллелепипед, изображенный на рис. 5.50, б, на котором показано также относительное положение отображаемого объема камеры. Затем применяется матрица V, которая поворачивает и перемещает параллелепипед в новое положение. Специфика преобразования заключается в том, что оно как бы переносит камеру из положения на сцене в ее «исходное» положение, когда глаз находится в начале координат и отображаемый объем выровнен по оси 2, как

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

показано на рис. 5.50, в. Вершины параллелепипеда теперь позиционированы (это означает, что их координаты имеют правильные значения), так что их проецирование на ближнюю плоскость дает правильные значения для отображения проецируемого образа. Следовательно, матрица У фактически вызывает преобразование координат вершин сцены в систему координат камеры. Координаты камеры иногда называют также координатами наблюдателя (глаза) (eye coordinates). В системе координат камеры ребра отображаемого объема параллельны осям х, у и z. Отображаемый объем заключен по оси х между величинами left (левая) и right (правая), по оси у между bottom (нижняя) и top (верхняя), и по оси z между -near (ближняя) и -far (дальняя). (Ниже мы вкратце обсудим смысл знаков «минус» перед near и far.) После того как вершины исходного куба обработаны всей матрицей моделирования-вида, они располагаются так, как показано на рис. 5.50, в.

Проекционная матрица масштабирует и перемещает каждую вершину особым способом, так что все те вершины, которые располагаются внутри отображаемого объема, будут располагаться внутри стандартного куба, расположенного в промежутках от -1 до 1 по каждому измерению1. (При использовании перспективных проекций эта матрица делает еще кое-что, как мы увидим в главе 7.) Проекционная матрица эффективно преобразует отображаемый объем в куб с центром в начале координат, что является наиболее удобным геометрическим телом, границами которого производится отсечение объектов. Такое масштабирование параллелепипеда может сильно исказить его, однако это искажение будет скомпенсировано при преобразовании в порт просмотра. Кроме того, проекционная матрица инвертирует ось z в том смысле, что возрастающие значения z теперь означают большее удаление (глубину) точки от наблюдателя. Рисунок 5.51 демонстрирует, как исходный параллелепипед с помощью такого преобразования превращается в другой параллелепипед. (Отметим, что сам отображаемый объем камеры никогда не нужно создавать как объект; он определен только как специальная форма, которую проекционная матрица преобразует в стандартный куб!)


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