Главная страница
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.04 c
1-1123005272
iskatel
2005-08-02 21:54
2005.08.21
прокси


14-1122486666
Starcom
2005-07-27 21:51
2005.08.21
Почему в Windows 98/Me енто не работает?


8-1113335006
Fedor
2005-04-12 23:43
2005.08.21
И снова DSPack


14-1121602423
Blaster
2005-07-17 16:13
2005.08.21
Delphi 2005 - стоитли пробовать?


1-1122651997
rolex
2005-07-29 19:46
2005.08.21
Как узнать запущено ли хоть одно полноэкранное приложение?