Souris et camera openGL [Résolu]

yuriashford 10 Messages postés jeudi 31 mars 2005Date d'inscription 2 juin 2010 Dernière intervention - 24 avril 2005 à 12:53 - Dernière réponse :  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
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
KeniiyK 326 Messages postés vendredi 13 août 2004Date d'inscription 2 novembre 2007 Dernière intervention - 24 avril 2005 à 17:50
3
Merci
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

Merci KeniiyK 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de KeniiyK
yuriashford 10 Messages postés jeudi 31 mars 2005Date d'inscription 2 juin 2010 Dernière intervention - 24 avril 2005 à 18:30
0
Merci
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.
Commenter la réponse de yuriashford
KeniiyK 326 Messages postés vendredi 13 août 2004Date d'inscription 2 novembre 2007 Dernière intervention - 24 avril 2005 à 18:54
0
Merci
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
Commenter la réponse de KeniiyK
KeniiyK 326 Messages postés vendredi 13 août 2004Date d'inscription 2 novembre 2007 Dernière intervention - 24 avril 2005 à 19:02
0
Merci
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
Commenter la réponse de KeniiyK
luhtor 2023 Messages postés mardi 24 septembre 2002Date d'inscription 28 juillet 2008 Dernière intervention - 24 avril 2005 à 23:55
0
Merci
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.
Commenter la réponse de luhtor
KeniiyK 326 Messages postés vendredi 13 août 2004Date d'inscription 2 novembre 2007 Dernière intervention - 25 avril 2005 à 19:28
0
Merci
Arf voui pardon j'ai completement zapé ces fonctions.... désolé.

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

yeah! vive java
Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.