Partage
  • Partager sur Facebook
  • Partager sur Twitter

[OpenGL] Récupérer la position et l'orientation actuelle ?

    3 janvier 2008 à 11:05:07

    Bonjour ! :)

    J'aimerais savoir si il n'est pas possible de récupérer la position actuelle et les rotations effectués après plusieurs translations et rotations !

    Je m'explique, imaginons ce code :

    1. glTranslated(-2,0,0);
    2. glRotated(45,0,0,1);
    3. glRotated(90,1,0,0);
    4. glTranslated(3,8,9);

    Après ce bout de code, comment savoir où j'en suis ? mes coordonnées dans le repère ? mes degrés de rotations ?
    Existe-t-il un moyen de récupérer une matrice ou autre ?
    • Partager sur Facebook
    • Partager sur Twitter
      3 janvier 2008 à 11:18:41

      Non, si tu en as besoin alors tu dois le faire de tes propres mains. Regardes dans le code de VTK, il y a une classe C++ ./Common/vtkTransform.cxx qui fait quelque chose dans le genre.
      • Partager sur Facebook
      • Partager sur Twitter
        3 janvier 2008 à 11:33:36

        oui, tout a fait :)
        Le resultat de tes opérations est stocké dans la matrice MODELVIEW, tu peux la récupérer avec glGet en passant GL_MODELVIEW_MATRIX

        http://pyopengl.sourceforge.net/documentation/manual/glGet.3G.html

        Tu récupereras ainsi 16 valeurs flottantes :

        un point et 3 vecteurs (une base donc, définition meme des matrices 4x4 dans un espace affine)

        EDIT : le "tout a fait" répondais a l'auteur, en lui disant que c'est possible de tout récupérer.

        Frava > meme s'il est en effet conseillé de se faire un petit moteur de gestion, par dessus, OpenGL est une machine a état, qui stocke donc plein d'état, et la fonction glGet est un accesseur global, qui peut accéder a toutes les données en interne
        • Partager sur Facebook
        • Partager sur Twitter

        Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

          3 janvier 2008 à 11:56:13

          1. void print_actual_matrix()
          2. {
          3.         int i, j;
          4.         GLfloat matrix[4][4];
          5.         glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat *) matrix);
          6.         for(i=0; i<4; i++){
          7.                 for(j=0; j<4; j++){
          8.                         printf("%f ", matrix[j][i]);
          9.                 }
          10.                 printf("\n");
          11.         }
          12. }


          Alors, à quoi correspond quoi ? ^^
          • Partager sur Facebook
          • Partager sur Twitter
            3 janvier 2008 à 12:16:30

            Donne moi les résultats que tu obtiens, je vais te les intérpréter :)
            • Partager sur Facebook
            • Partager sur Twitter

            Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

            [OpenGL] Récupérer la position et l'orientation actuelle ?

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown