![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Повороот сцены
Chevrt © (2005-04-29 16:23:00)Здравствуйте!
Как можно осуществить поворот камеры, к примеру так, как это реализовано в играх.
К примеру есть у меня куб:
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glPushMatrix;
glEnable(GL_TEXTURE_2D);
glBegin (GL_QUADS);
glTexCoord2f(0.0,0.0); glVertex3f (1.0, 1.0, 1.0);
glTexCoord2f(1.0,0.0); glVertex3f (-1.0, 1.0, 1.0);
glTexCoord2f(1.0,1.0); glVertex3f (-1.0, -1.0, 1.0);
glTexCoord2f(0.0,1.0); glVertex3f (1.0, -1.0, 1.0);
glTexCoord2f(0.0,0.0); glVertex3f (1.0, 1.0, -1.0);
glTexCoord2f(1.0,0.0); glVertex3f (1.0, -1.0, -1.0);
glTexCoord2f(1.0,1.0); glVertex3f (-1.0, -1.0, -1.0);
glTexCoord2f(0.0,1.0); glVertex3f (-1.0, 1.0, -1.0);
glTexCoord2f(0.0,0.0); glVertex3f (-1.0, 1.0, 1.0);
glTexCoord2f(1.0,0.0); glVertex3f (-1.0, 1.0, -1.0);
glTexCoord2f(1.0,1.0); glVertex3f (-1.0, -1.0, -1.0);
glTexCoord2f(0.0,1.0); glVertex3f (-1.0, -1.0, 1.0);
glTexCoord2f(0.0,0.0); glVertex3f (1.0, 1.0, 1.0);
glTexCoord2f(1.0,0.0); glVertex3f (1.0, -1.0, 1.0);
glTexCoord2f(1.0,1.0); glVertex3f (1.0, -1.0, -1.0);
glTexCoord2f(0.0,1.0); glVertex3f (1.0, 1.0, -1.0);
glTexCoord2f(0.0,0.0); glVertex3f (-1.0, 1.0, -1.0);
glTexCoord2f(1.0,0.0); glVertex3f (-1.0, 1.0, 1.0);
glTexCoord2f(1.0,1.0); glVertex3f (1.0, 1.0, 1.0);
glTexCoord2f(0.0,1.0); glVertex3f (1.0, 1.0, -1.0);
glTexCoord2f(0.0,0.0); glVertex3f (-1.0, -1.0, -1.0);
glTexCoord2f(1.0,0.0); glVertex3f (1.0, -1.0, -1.0);
glTexCoord2f(1.0,1.0); glVertex3f (1.0, -1.0, 1.0);
glTexCoord2f(0.0,1.0); glVertex3f (-1.0, -1.0, 1.0);
glEnd;
glDisable(GL_TEXTURE_2D);
glPopMatrix;
SwapBuffers(DC);
Как поворачивать я разобрался, а вот как сделать, как в играх, чтобы можно было обходит вокруг него, поворот камеры?
Прочитал, что можно при помощи gluLookAt, или я не прав?
Приведи примерчик пожалуйсто
Dozer (2005-05-01 12:42:00) [1]После отчистки экрана ставишь glLookAt. Чтобы сделать крутящуюся вокруг этого куба камеру, можно написать:
GluLookAt(Sin(t)*3,0,Cos(t)*3,0,0,0,0,1,0);
XProger (2005-04-29 17:41:00) [2]
gluLookAt(e.X, e.Y, e.Z,
c.X, c.Y, c.Z,
Up.X, Up.Y, Up.Z);
e - позиция наблюдателя.
c - точка в которую смотрим.
Up - вектор направленный вверх. С помощью него можно реализовывать поворот относительно оси наблюдения. А также корректировать поворот относительно прямой перпендикулярной плоскости, построенной на векторах e и с, при строго вертикальных ракурсах обзора.
VVV-First (2005-04-29 17:26:00) [3]
> Прочитал, что можно при помощи gluLookAt, или я не прав?
да я делал с помошью нее поворот вокруг планеты, с собой этого куска кода конечно нет , но точно помню получилось то что надо,
там передается в параметра, положения центра, положения наблюдателя, и помоему компоненты вектора (могу ошибаться)