Рассмотрим последовательность операций, представленную на рис. 5.12. Исходная конфигурация показана на рис. 5.12,а. Вершина, заданная набором координат р, имеет одинаковое представление в обоих фреймах. На рис. 5.12,6 показана измененная конфигурация фреймов - матрица вида в результате последовательности преобразований получила значение С. Теперь два фрейма не совпадают, а матрица С содержит информацию о переходе от фрейма камеры к мировому фрейму, или, что то же самое, содержит информацию о том, как камера была сдвинута из исходной позиции, совпадавшей с началом координат мирового фрейма. Вершина, которая была сформирована в q с помощью glVertex( ), после изменения матрицы вида будет по-прежнему занимать позицию q в мировом фрейме. Однако ее позиция во фрейме камеры теперь будет Cq, и это будет известно исполняющей системе OpenGL. OpenGL преобразует координаты позиций в систему координат камеры в процессе выполнения операций конвейера визуализации. Можно и по-иному трактовать этот процесс: камера по-прежнему остается в начале координат собственного фрейма, а матрица вида применяется ко всем примитивам, описанным в данной системе. Вы можете использовать ту трактовку, которая для вас более понятна. Главное- внимательно следить за тем, каково состояние матрицы вида в момент формирования примитивов в программе.
Рис. 5.11. Исходное по ложение камеры
Визуализация
а) 6)
Рис. 5.12. Взаимное перемещение фрейма камеры и мирового фрейма"opengl5_231.html">⇐ Предыдущая| |Следующая ⇒