Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.21;
Скачать: CL | DM;

Вниз

Повороот сцены   Найти похожие ветки 

 
Chevrt   (2005-04-29 16:23) [0]

Здравствуйте!
Как можно осуществить поворот камеры, к примеру так, как это реализовано в играх.
К примеру есть у меня куб:

 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, или я не прав?
Приведи примерчик пожалуйсто


 
VVV-First   (2005-04-29 17:26) [1]


> Прочитал, что можно при помощи gluLookAt, или я не прав?

да я делал с помошью нее поворот вокруг планеты, с собой этого куска кода конечно нет , но точно помню получилось то что надо,
там передается в параметра, положения центра, положения наблюдателя, и помоему компоненты вектора (могу ошибаться)


 
XProger ©   (2005-04-29 17:41) [2]


gluLookAt(e.X, e.Y, e.Z,
         c.X, c.Y, c.Z,
         Up.X, Up.Y, Up.Z);

e - позиция наблюдателя.
c - точка в которую смотрим.
Up - вектор направленный вверх. С помощью него можно реализовывать поворот относительно оси наблюдения. А также корректировать поворот относительно прямой перпендикулярной плоскости, построенной на векторах e и с, при строго вертикальных ракурсах обзора.


 
Dozer ©   (2005-05-01 12:42) [3]

После отчистки экрана ставишь glLookAt. Чтобы сделать крутящуюся вокруг этого куба камеру, можно написать:

GluLookAt(Sin(t)*3,0,Cos(t)*3,0,0,0,0,1,0);



Страницы: 1 вся ветка

Текущий архив: 2005.08.21;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.028 c
9-1114455134
XSLide_
2005-04-25 22:52
2005.08.21
Новости JnB


3-1121057190
Andrey V.
2005-07-11 08:46
2005.08.21
про UNION ...


14-1122575676
Alexander Panov
2005-07-28 22:34
2005.08.21
товарищъ с адреса 217.106.205.35, не надо так делать!


6-1114143431
M@X
2005-04-22 08:17
2005.08.21
компоненты TcpClient TcpServer


14-1122448141
nk
2005-07-27 11:09
2005.08.21
Восстановление инфы с убитых/форматированных винтов