Подтвердить что ты не робот

GluLookAt объяснение?

Попытка понять gluLookAt, особенно последние 3 параметра.

Может кто-нибудь объяснит?

gluLookAt(camera[0], camera[1], camera[2], /* look from camera XYZ */ 
          0, 0, 0,  /* look at the origin */ 
          0, 1, 0); /* positive Y up vector */
  • Что именно означает "положительный Y-вектор"?
  • Возможно ли, чтобы все последние 3-кратные параметры были как все 1s, например. 1, 1, 1? И, если это возможно, что именно это означает?
  • Возможно ли, чтобы вектор возраста имел значение больше 1, например. 2, 3, 4?

Спасибо.

4b9b3361

Ответ 1

Sketchup на помощь!

GluLookAt params

У вашего изображения есть "вверх" , который может быть отделен от мира вверх. Синее окно на этом изображении можно рассматривать как "ближний самолет", на который нарисованы ваши образы: ваш монитор, если хотите. Если все, что вы подаете, - это точка зрения и точка, это окно свободно вращается. Вам нужно дать дополнительное "вверх" направление, чтобы прикрепить его. OpenGL будет нормализовать вектор, который вы поставляете, если он не является единицей длины. OpenGL также будет проектировать его так, чтобы он составлял 90-градусный угол с вектором "z", определяемым глазом и в (если вы не дадите вектор "вверх" , который находится точно в том же направлении, что и линия от "глаза" до "в'). Определяются направления" в" (z) и "вверх" (y), легко рассчитать направление "справа" или (x) от этих двух.

На этом рисунке "поставленный" вектор вверх (0,1,0), если синяя ось находится в направлении y. Если вы должны были дать (1,1,1), это скорее всего повернет изображение на 45 градусов, потому что, говоря, что верхняя часть синего окна должна быть направлена ​​в этом направлении. Следовательно, образ парня, казалось бы, был бы опрокинут (в противоположном направлении).

Ответ 2

последний вектор, также известный как камеры вверх-вектора, определяет ориентацию камеры.

представьте себе палку, прикрепленную к верхней части "реальной" камеры. направление палки - это верхний вектор.

изменив его с (0,1,0), вы можете выполнять боковую перемотку.

Ответ 3

первые 3 параметра - положение камеры следующие 3 параметра - целевое положение последние 3 параметра представляют собой качение камеры.

Очень важно использовать gluLookAt после "glMatrixMode (GL_MODELVIEW);"

Другая полезная подсказка всегда указывает ее 0,0,1 для последних 3 параметров. В общем случае координаты записываются как x, y, z. z - вектор вверх. 0,1,0 приводит к путанице как x, z, y.

так что лучше всего оставить его на 0,0,1.