Il y'a déjà pas mal de posts et de tutos sur ce sujet, mais aucun ne m'a permis d'avoir une idée claire, et encore moins d'obtenir le résultat que je souhaite![]()
J'aimerais donc avoir des éclaircicements sur le point précis qui m'occupe :
- Le point de vue est celui du pilote d'un vaisseau spatial.
- Le déplacement du vaisseau est le suivants :
-- Il peut avancer et reculer, s'arréter, se déplacer latéralement et verticalement. Tout ceci étant gérré par le clavier à la manière d'un doom-like
-- Il peut pivoter dans n'importe quelle direction sans limite. C'est a dire qu'il peut faire un tour complet sur lui même sur n'importe quel axe. Ces rotations son gérrées par la souris mais diffèrent des doom-like sur un point important : le mouvement sur Y de la souris correspond à une rotation sur l'axe Y du vaisseau et non du repère fixe d'opengl.
Or, j'utilise deux commandes succéssives opengl :
glRotatef(xRot, 1.0, 0.0, 0.0);
glRotatef(yRot, 0.0, 1.0, 0.0);
ce qui pose un problème. En effet, lorsqu'on regarde vers le haut ou vers le bas (xRot = 90 ou -90) le mouvement obtenu par le mouvement latéral de la souris (sur Y) aboutit à une rotation des objets autour du centre de l'écran, et non à une translation de la gauche vers la droite ou de la droite vers la gauche.
Bref, j'ai eu beau regarder les divers tutoriaux je n'arrive pas à coder le bon comportement. Quelqu'un pourrait-il m'aider ?
PS : pour ceux qui connaissent, le comportement des rotations est exactement le même que celui des vaisseaux dans AS-Mothership d'unreal tournament 2004.
Partager