gluLook на объяснение? - PullRequest
       30

gluLook на объяснение?

26 голосов
/ 19 апреля 2011

Пытается понять 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 */
  1. Что именно означает «вектор положительного Y-вверх»?-вектор 3 параметры как все 1 с, например 1, 1, 1?И, если это возможно, что именно это означает?
  2. Возможно ли, чтобы вектор повышения имел значение больше 1, например, 2, 3, 4?

Спасибо.

Ответы [ 3 ]

48 голосов
/ 19 апреля 2011

Sketchup на помощь!

GluLookAt params

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

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

3 голосов
/ 28 ноября 2013

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

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

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

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

2 голосов
/ 19 апреля 2011

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

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

, изменив его с (0,1,0), вы можете сделать боковое вращение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...