Bonjour à tous,
Je débute en openGL (utilisé en C) et je souhaite pouvoir visualiser ma scène en me déplaçant autour à la façon d'un doom like. La souris sert de direction, les touches UP/DOWN pour avancer/reculer et les touches LEFT/RIGHT sont pour les déplacements latéraux.
J'ai pas mal cherché sur le net, sur ce forum, mais je n'y arrive toujours pas
Dans ma fonction de gestion des clicks de souris, j'ai mis :
Dans celle pour les mouvements de souris (sachant que beta est l'angle d'orientation pour regarder de guache à droite et alpha l'angle pour regarder de bas en haut) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 GLvoid window_mouseFunc(int button, int state, int x, int y) { if(state == GLUT_DOWN && button == GLUT_LEFT_BUTTON){ xold = x; } }
Et dans mon render_scene, j'ai placé ce code avant l'affichage des éléments de ma scène :
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 GLvoid window_motionFunc(int x, int y) { betaCamera += x-xold; alphaCamera += y-yold; if(betaCamera >= 360) betaCamera -= 360; if(betaCamera < 0) betaCamera += 360; if(alphaCamera >= 360) alphaCamera -= 360; if(alphaCamera < 0) alphaCamera += 360; xViseCamera = sinTable[betaCamera]; yViseCamera = sinTable[alphaCamera]; zViseCamera = -cosTable[betaCamera]; xold = x; yold = y; glutPostRedisplay(); }
Au départ, x/y/zCamera est à 0, tout comme x/y/zCamera.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 gluLookAt(xCamera,yCamera,zCamera,xViseCamera,yViseCamera,zViseCamera,0.0,1.0,0.0);
Ce code devrait permettre de positionner la caméra en 0 et de visualiser, sans bouger la scène en tournant à 360° dans tous les sens. Mais ça ne marche même pas. Je ne vois pas pourquoi ... donc pour avancer/reculer/déplacement latéral, c'est pas la peine.
Merci d'avance.
Partager