Пользовательский режим просмотра OpenGL
Один из способов просмотра сцены - использовать gluLookAt или создать свою собственную процедуру просмотра. Я наткнулся на эту обычную процедуру просмотра в симуляторе полета в книге.
void pilotView(GLdouble planex, GLdouble planey,
GLdouble planez, GLdouble roll,
GLdouble pitch, GLdouble heading)
{
glRotated(roll, 0.0, 0.0, 1.0);
glRotated(pitch, 0.0, 1.0, 0.0);
glRotated(heading, 1.0, 0.0, 0.0);
glTranslated(-planex, -planey, -planez);
}
Поворот камеры на x градусов по часовой стрелке эквивалентен повороту целевого объекта на x градусов против часовой стрелки. Таким образом, когда мы указываем, например, угол "крена", не должны ли мы писать "glRotated(-roll, 0.0, 0.0, 1.0)" вместо "glRotated(roll, 0.0, 0.0, 1.0)"?
1 ответ
Нет, не следует, в OpenGL треугольники превращаются не в камеру OpenGL не имеет понятия о камере; поэтому, когда вы добавляете вращение к преобразованию, ваш объект будет вращаться с помощью этого обновленного преобразования.
gluLookAt просто устанавливает преобразование объектов, как будто вы смотрите на него, но все же то, что преобразуется, это объект.
Что касается этой функции, я предполагаю, что она устанавливает преобразование, чтобы установить ее так, чтобы представление было выровнено по плоскости, а не выровнено по горизонтали и висело в центре, а не позади, поэтому у нас есть + знак поворота и - знак трансляции, Обратите внимание, что вызовы не устанавливают преобразование, но обновляют его.