После определения глобального пространства все объекты, участвующие в сцене, должны быть трансформированы из их предметного пространства в глобальную систему координат.

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

После компоновки объектов в сцену необходимо указать параметры вида - точку обзора (положение камеры или глаза), точку фокуса (то есть направление взгляда) и направление верха (направление, в котором камера смотрела бы снизу вверх).

Параметры обзора, сочетаясь, определяют путь трансформации изображения при изменении точки обзора и могут быть объединены в матрицу визуализации. С помощью этой матрицы координаты могут преобразовываться из глобального пространства в пространство обзора. Начало координат в этой координатной системе находится в точке обзора (положение камеры). Пространственные отношения сцены не меняются, зато легко определять расстояние от точки обзора до различных объектов сцены, Почти все графические 3D API позволяют приложениям определять отдельно матрицу преобразования и матрицу визуализации. В OpenGL они объединены в единую матрицу, называемуюлатри^ей модели-вида, которая преобразует координаты из предметного пространства сразу в пространство обзора (рис. 1.2).

Существует множество матриц, которыми можно оперировать в OpenGL. Чтобы выбрать либо модельно-видовую, либо другую OpenGL-матрицу, можно вызвать функцию glMatri.xMode. Можно установить единичную матрицу в качестве текущей функцией gl Load Identity или заменить любой другой произвольной матрицей с помощью функции glLoadMatrix (при этом стоит убедиться в необходимости этого, так как в результате преобразований есть вероятность получить малопонятное изображение). Умножением можно совместить текущую матрицу с произвольной с помощью функции glMul tMatrix.


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