Souris et camera openGL [Résolu]

Signaler
Messages postés
10
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
2 juin 2010
-
 Utilisateur anonyme -
Bonjour je suis nouveau sur cppfrance alors je ne sais pas si la question a ete
pose si c le cas je m'excuse a l'avance. Bon je créé actuellement une chambre en
3d avec opengl j'ai reussi la modelisation et je peux me deplacer sur la droite
gauche en avant en arriere. Je cherche tout d'abord a savoir comment se deplacer en diagonale et ensuite comment deplacer la camera simplement en bougeant la
souris. Pourriez vous me repondre ou simplement m'indiquer une source fiable.
Merci

7 réponses

Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
Salut et bienvenue sur CPPFrance !

Apparement tu te déplaces dans ta scène via des appels à glTranslatef(...) et suivant un seul axe (X et Y je pense Z étant la hauteur...), donc si tu veux te déplacer en diagonale tu peux continuer a utiliser glTranslatef(...) mais sur deux axes, par contre si tu veux regarder " ou tu vas" il faudra aussi utiliser glRotatef(...) sur les Z (si tu es bien dans le "schéma" parenthèsé précédent).
Pour les évènements souris ca dépend de ton API de "fenêtrage" si c'est la GLUT alors regarde du coté des fonctions :
// cette fonction est appellé quand il y a un clic ou "declic" souris (tu recois ici le numero du bouton, son etat (enfonce/relache) et la position souris x,y)
glutMouseFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y));

// celle ci c'est quand il y a eu un clic souris et que le bouton est toujours enfoncé et que la souris se déplace, ici tu recois la position souris x,y
glutMotionFunc(void (GLUTCALLBACK *func)(int x, int y));

// et celle la c'est quand il n'y a pas de bouton cliqué et que la souris se déplace, idem tu recois la position souris x,y
glutPassiveMotionFunc(void (GLUTCALLBACK *func)(int x, int y));

Voila ce que je peux te dire, si tu utilises les MFC, API_WIN32 je peux pas trop t'aider... désolé.
Par contre si tu utilises Qt je peux te venir en aide.... mais dis moi d'abord sous quelle API tu travailles

Mais il y a plein de source "simples" et bien commentées ici et dans toutes les APIs je pense alors tu trouveras surement ton bonheur....

KeniiyK
Messages postés
10
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
2 juin 2010

Merci bcp pour les renseignements en effet pour le deplacement j'utilise des
glTranslate ne sachant pas correctement utilise le gluLookAt (j'ai honte).POur le deplacement en diagonale je me demandaiscomment si on pouvait gerer deux etat en meme
temps genre : GLUT_KEY_UP && GLUT_KEY_RIGHT. En tout cas merci pour le deplacement de souris.
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
Ok, définition de gluLookAt( eyeX , eyeY, eyeZ , targetX , targetY , targetZ , upX , upY ,upZ );

eyeXYZ = position de la camera.
targetXYZ = position du point que tu regardes (=>"vers ou tu regardes")
upXYZ = vecteur definissant le "haut"

Voilou et bon courage...

KeniiyK
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
Et pardon j'ai pas fini de répondre : avec la GLUT, c'est pas possible de gérer 2 touches en meme temps a part CTRL+touche, ALT+touche et SHIFT+touche via glutGetModifiers(); (et apparement le CTRL marche po...., regardes le post juste avant le tien).

KeniiyK
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Bien sur que si c'est possible de gérer deux touches en meme temps, et
d'ailleurs le déplacement en diagonale marche très bien ainsi, mais
faut utiliser SpecialFunc et UpSpecialFunc il me semble. Tu peux
regarder comment j'ai fais dans mon prog:

http://www.cppfrance.com/ajoutcode.aspx?ID=27055



Je strafe et avance avec le clavier et orientation de la caméra avec la souris.
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
Arf voui pardon j'ai completement zapé ces fonctions.... désolé.

KeniiyK

le lien ci-dessus ne marche pas. Dommage, j'ai tant de problèmes avec ma caméra.

yeah! vive java