Souris et camera openGL

Résolu
yuriashford Messages postés 10 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 2 juin 2010 - 24 avril 2005 à 12:53
 Utilisateur anonyme - 6 avril 2006 à 11:17
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

KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
24 avril 2005 à 17:50
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
3
yuriashford Messages postés 10 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 2 juin 2010
24 avril 2005 à 18:30
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.
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
24 avril 2005 à 18:54
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
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
24 avril 2005 à 19:02
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
24 avril 2005 à 23:55
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.
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
25 avril 2005 à 19:28
Arf voui pardon j'ai completement zapé ces fonctions.... désolé.

KeniiyK
0
Utilisateur anonyme
6 avril 2006 à 11:17
le lien ci-dessus ne marche pas. Dommage, j'ai tant de problèmes avec ma caméra.

yeah! vive java
0
Rejoignez-nous