Je rencontre des problèmes avec un appareil photo que j'essaie d'utiliser dans mon programme. Quand je change le camera_target de l'appel gluLookAt, tout mon terrain tourne au lieu de tourner la caméra comme elle le devrait.Rotation de l'appareil photo (OpenGL)
Voici une partie de ma méthode render:
camera->Place();
ofSetColor(255, 255, 255, 255);
//draw axis lines
//x-axis
glBegin(GL_LINES);
glColor3f(1.0f,0.0f,0.0f);
glVertex3f(0.0f,0.0f,0.0f);
glVertex3f(100.0f, 0.0f,0.0f);
glEnd();
//y-axis
glBegin(GL_LINES);
glColor3f(0.0f,1.0f,0.0f);
glVertex3f(0.0f,0.0f,0.0f);
glVertex3f(0.0f, 100.0f,0.0f);
glEnd();
//z-axis
glBegin(GL_LINES);
glColor3f(0.0f,0.0f,1.0f);
glVertex3f(0.0f,0.0f,0.0f);
glVertex3f(0.0f, 0.0f,100.0f);
glEnd();
glColor3f(1,1,1);
terrain->Draw();
Et Pivoter et place de méthodes de ma classe de la caméra:
void Camera::RotateCamera(float h, float v){
hRadians += h;
vRadians += v;
cam_target.y = cam_position.y+(float)(radius*sin(vRadians));
cam_target.x = cam_position.x+(float)(radius*cos(vRadians)*cos(hRadians));
cam_target.z = cam_position.z+(float)(radius*cos(vRadians)*sin(hRadians));
cam_up.x = cam_position.x-cam_target.x;
cam_up.y = ABS(cam_position.y+(float)(radius*sin(vRadians+PI/2))) ;
cam_up.z = cam_position.z-cam_target.z;
}
void Camera::Place() {
//position, camera target, up vector
gluLookAt(cam_position.x, cam_position.y, cam_position.z, cam_target.x, cam_target.y, cam_target.z, cam_up.x, cam_up.y, cam_up.z);
}
Le problème est que tout le terrain se déplace autour de la caméra , alors que la caméra devrait juste tourner.
Merci pour toute aide!
EDIT - Trouvé quelques didacticiels et en tenant compte des réponses ici, je fais une meilleure classe de la caméra. Merci les gars
Dans opengl - Je pensais que la caméra était fixe et vous avez fait pivoter le terrain? – naiad
Je pensais que le gluLookAt s'occuperait de ça. – paintstripper
En Russie soviétique, la caméra tourne VOUS! – James