yuriashford
Messages postés10Date d'inscriptionjeudi 31 mars 2005StatutMembreDerniè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
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 20072 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....
yuriashford
Messages postés10Date d'inscriptionjeudi 31 mars 2005StatutMembreDerniè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.
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 20072 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 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: