Работа этой функции рассматривается в главе 7, там же мы разработаем более гибкие средства для установки камеры. Тем, кого интересует, какие конкретно величины функция gluLookAtO помещает в матрицу моделирования-вида, следует обратиться к упражнениям в конце раздела.
11 Ф.Хилл
Преобразования объектов
Пример 5.6.1. Установка типичной камеры
Камеры часто устанавливают так, чтобы они смотрели «вниз» на сцену с какой-либо ближней позиции. На рис. 5.53 показана камера, объектив которой расположен в точке eye - (4, 4, 4) и смотрит в начало координат, причем значение параметра look - (0,1,0). Направление вверх установлено параметром up=(0,1, 0). Предположим, нам нужно, чтобы отображаемый объем имел ширину 6,4 и высоту 4,8 (при этом форматное соотношение равно 640/480), а также чтобы near - 1 и far - 50. В этом случае камеру можно установить посредством следующего кода:
g1 Ma 11xMode(GL_PR0J ЕСТION):
// set the view volume
// устанавливаем отображаемый объем
glLoadldentityO:
gl0rtho(-3.2. 3.2. -2.4. 2.4. 1. 50):
glMatrixMode(6L_M0DELVIEW):
// place and aim the camera
// размещаем и нацеливаем камеру
Договор реставрации изделий из камня. Реставрация изделий из камня спб.
glLoadldentityO:
gluLookAt(4. 4. 4. 0. 1. 0. 0. 1. 0):
В упражнениях показаны конкретные величины, которые при этом помещаются в матрицу моделирования-вида.
Практические упражнения 5.6.1. Что делает функция gluLookAt()?
Нам уже известно, что функция gluLookAtO строит матрицу, которая преобразует мировые координаты в координаты наблюдателя. На рис. 5.54 показана камера в качестве системы координат, подвешенной в пространстве. Ее начало координат находится в точке eye и она ориентирована с помощью своих трех взаимно перпендикулярных ортов u, V и п. Глаз камеры «смотрит» в направлении (-п). Функция gluLookAtO использует параметры eye, look и вектор up для того, чтобы сформировать векторы u, v, п в соответствии со следующими соотношениями:
n = eye - look,
Рис. 5.S3. Установка камеры посредством функции gluLookAtQ
и = up X n,
(5.38)
V - n X u.
5.6. Рисование трехмерных сцен с применением OpenGL