Мне кажется, что я понимаю использование матрицы вида модели и gluLookAt
. То есть, объявив gluLookAt(ex,ey,ez,lx,ly,lz,ux,uy,uz)
, можно легко настроить способ взглянуть на определенную точку напрямую.gluLookAt и MODELVIEW MATRIX
Мой вопрос - начиная с gluLookAt
после умножения на текущую матрицу, если вы загружаете личность до вызова gluLookAt
, а текущий шаблон матрицы - это модель, что произойдет, если вы нарисуете куб?
Так что-то вроде этого:
glMatrixMode(GL_PERSPECTIVE);
glLoadIdentity();
glFrustum(-5, 5, -5, 5, 15, 150);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0, 0, 16, 0, 0, 0, 0, 1, 0);
glutSolidCube(1.0);
Где куб оказывается в мировых координатах? По какой-то причине в этом случае он отображается в мировом происхождении, и вы можете видеть его в окне просмотра, но почему? Должно ли gluLookAt
изменить матрицу вида просмотра с помощью поворота и перевода? Должен ли куб быть сделан главным образом с камерой внутри?
Можно ли интерпретировать это как глобальную систему координат, gluLookAt переводит мировое происхождение относительно камеры? – geogaddi
в вашем случае да. Но в целом это может быть поворот + перевод. поэтому gluLookAt создает ModelViewMatrix, которая преобразует (вращает + переводит) из координат модели (которая в основном является мировыми координатами, т. е. источником (0,0,0) для просмотра координат (0,0, -1)) для просмотра координат (система координат как видно из камеры/глаза, т.е. источника в положении кулачка, направление просмотра камеры) – Dirk
Отлично! Трудные вещи, но я думаю, что я понял это сейчас. – geogaddi