Bonjour,
Quand j'ai commencé mon projet j'ai copié collé un bout de code pour géré la vue qui me convenait bien :
Ce code permet de donner les degrés de libertés nécessaire a la simulation d'une vue a la "FPS"..
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
23
24
25
26 void player::look() { gluLookAt( position.X,position.Y,position.Z, target.X,target.Y,target.Z, 0,0,1 ); } void player::vectorsFromAngles() { static const vector3d up(0,0,1); if (phi > 89) phi = 89; else if (phi < -89) phi = -89; double r_temp = cos(phi*M_PI/180); forward.Z = sin(phi*M_PI/180); forward.X = r_temp*cos(theta*M_PI/180); forward.Y = r_temp*sin(theta*M_PI/180); left = up.crossProduct(forward); left.normalize(); target = position + forward; }
Le problème c'est que cette vue n'est "compatible" qu'avec un monde plat sur un plan x,y.
Je m'explique, dans mon projet le joueur se situe sur une planète cubique.
Quand le joueur se trouve sur la face du haut de la planète la vue actuel convient parfaitement.
Mais quand je change de face (de planète) j'aimerai changé les degrés de liberté de la vue pour avoir le même rendu que sur la face du dessus (alors que les axe du nouveau plant on changé a cause du changement de face de la planète).
Je sais pas si j'ai été claire, si vous m'avez compris... Si vous avez des questions n'hésitez pas.
Merci d'avance
Cordialement,
Baton
Partager