IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

Rotations...


Sujet :

OpenGL

  1. #1
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 10
    Par défaut Rotations...
    Bonjour à tous,

    Je vous explique mon problème : je dois modéliser un objet en 3d et pouvoir, à l'aide de la souris, le faire tourner autour des axes X, Y et Z par rapport à ce que je vois.
    Or avec glRotate, l'orientation des axes change et donc l'objet ne tourne pas comme je le souhaite.

    Quelqu'un pourrait-il me donner un exemple de code afin de m'aider ?

    J'ai essayé :

    glRotatef(angleX,1.0,0.0,0.0);
    glRotatef(angleY,0.0,1.0,0.0);
    glRotatef(angleZ,0.0,0.0,1.0);
    make_cube();

    Je voudrai que les rotations s'effectue par rapport à ce que je vois et non par rapport au repère qui est modifié après chaque glRotate.

    Merci de me répondre
    Scratch

  2. #2
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 37
    Par défaut
    Salut,

    il faudrait que tu connaisse les coordonnées du centre de ton objet:
    et faire quelque chose de ce genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    glTranslatef(-centre.x,-centre.y,-centre.z);
    glRotatef(angleX,1.0,0.0,0.0); 
    glRotatef(angleY,0.0,1.0,0.0); 
    glRotatef(angleZ,0.0,0.0,1.0); 
    glTranslatef(centre.x,centre.y,centre.z);
    make_cube();
    je suis plus très sûr de ce code mais en tout cas, c quelque chose qui ressemble à cà.

  3. #3
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 10
    Par défaut
    Le centre de mon cube est en 0,0,0

    Scratch

  4. #4
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    essaye plutot avec ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    glPushMatrix()
        glLoadIdentity();
        glTranslatef(posX,posY,posZ);
        glRotatef(angleX,1,0,0);
        glRotatef(angleY,0,1,0);
        glRotatef(angleZ,0,0,1);
        make_cube();
    glPopMatrix();
    par contre je suis pas sure qu'il faile mettre le glTranslate avant les glRotate... essaye les 2...
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  5. #5
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 10
    Par défaut
    J'ai déjà essayé cette solution mais le problème, c'est que angleX, angleY et angleZ sont mise à jour dynamiquement et les rotations ne correspondent plus.

    Je veux que les rotations soient par rapport à ca que je vois et non par rapport au repère de l'objet.

    Je me prend la tête depuis longtemps dessus sans comprendre :
    J'avais aussi essayé un truc comme :
    glRotatef(angleX,1,0,0);
    glRotatef(angleY,0,cos(angleX),sin(angleX));

    Ca marche bien pour la deuxième rotation mais la première ne marche plus.
    Tu vois ce que je veux faire?

    Scratch

  6. #6
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    ha... ton probleme vient donc du grimbal lock...
    en gros c'st parce que tes otation se surchargent... tu ne peut rien y faire avec des rotation basic. il faut regarder les quaternions pour resoudre sa...
    google est ton ami...
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  7. #7
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 10
    Par défaut
    Je ne suis pas mathématicien alors les quaternions ne me disent pas grand chose. Je vois bien que ca serait la solution à mon problème mais je ne comprend pas du tout comment les implémenter.

    Pourrais-tu me donner un dernier conseil?

    Merci pour ta précieuse aide.
    Scratch

  8. #8
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 37
    Par défaut
    Regarde le tut sur les quaternions de cette page :


    http://www.gametutorials.com/Tutoria...OpenGL_Pg4.htm

    Bonne chance

  9. #9
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 10
    Par défaut
    Merci pour le lien mais je suis bloqué dès qu'une URL contient "game"


    Du coup, je suis pas plus avancé.
    Je te remercie quand même pour avoir trouvé le lien

    Scratch

  10. #10
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 10
    Par défaut
    Pour ceux que ça intéresse, voilà une bonne faq sur les matrices et les quaternions in french : http://membres.lycos.fr/javamus/articles/mqfaq.html

    A+
    Scratch

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de rotation
    Par Francky033 dans le forum DirectX
    Réponses: 1
    Dernier message: 17/07/2003, 16h38
  2. Rotation de Bitmap -> ScanLine
    Par jujuesteban dans le forum Langage
    Réponses: 7
    Dernier message: 03/07/2003, 15h11
  3. Rotation d'un bouton ?
    Par ken_survivant dans le forum Composants
    Réponses: 3
    Dernier message: 01/04/2003, 18h16
  4. matrice et rotation
    Par charly dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 07/12/2002, 17h59
  5. algo : rotation d'objet 3d
    Par numeror dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 19/08/2002, 22h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo