Bonjour a tous, je serais vraiment heureux si vous pouviez m'aider a résoudre mon petit probleme !!!
Je fais du openGL depuis quelque temps et j'utilise gluLookAt() pour les déplacements de ma caméra suivit de glRotate pour tourner.
Mais lors que je tourne en arriere de mon objet, les axes se retrouves inversées et je navigue a l'envers.
J'ai essayé de changer le "up vector" lorsque j'arrive en arrière mais ca ne me donne pas rien de fluide et je n'arrive pas a le setter correctement.
Si vous trouvez étrange que je fasse 2 transformations dans mon glPushMatrix c'est prace que la pluspart de mes modèles ne sont pas centrer a l'origine (et c'est voulu) mais avec cest translatation avant la rotation, je tourne autour du centre de mon modele. (un simili arcball rotation!) En réalité je tourne autour du target de la caméra.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 int DrawGLScene(GLvoid) { int i; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); gluLookAt(camPosition.X, camPosition.Y, camPosition.Z, camTarget.X, camTarget.Y, camTarget.Z, 0.0f,upVector, 0.0f); glPushMatrix(); glTranslatef(camTarget.X, camTarget.Y, camTarget.Z); glRotatef(rotAngle.Y,0.0f,1.0f,0.0f); glRotatef(rotAngle.X,1.0f,0.0f,0.0f); glTranslatef(camTarget.X*-1, camTarget.Y*-1, camTarget.Z*-1); for (i = 1; i != NbMesh()+1; ++i) glCallList(i); glPopMatrix(); CheckMouse(); // Look for mouse movement return TRUE; }
camPosition et camTarget sont des vecteurs que je détermine lorsque j'ouvre le modele. Le target est initialiser au centre de la mesh ma se deplace avec la camera lorsqu'elle fait une translation.
Y aurait-il pas un moyen de tourner uniquement les objets et non la camera ou encore, connaissez-vous une solutions a mon probleme ?
Partager