Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Caméra 3D] Quaternions ou Trigonométrie

Le plus avantageux?

    15 mars 2014 à 0:26:15

    Bonjour,

    Je programme actuellement mon moteur de jeux et je sais qu'en général les caméras 3D utilisent les Quaternions seulement jusqu’à maintenant je codais ma caméra avec la trigo, c'est a dire avec des cos et sin.

    Ma caméra marche parfaitement mais je me demandais l'avantage d'utiliser les Quaternions ? Moins de calculs pour l'ordinateur?

    J'ai fait une petite recherche mais j'ai rien trouvé.

    Merci

    • Partager sur Facebook
    • Partager sur Twitter
      15 mars 2014 à 1:08:26

      Voici à la fin, un extrait tiré d'un article de Wikipédia... j'avoue que cette explication était bien cachée au milieu des nombreuses formules. Pour ma part, j'insisterais davantage sur le dernier point (le blocage de cardan) : une représentation avec 3 angles comporte des singularités qui sont justement un cauchemar pour les problèmes de mouvement de caméra... dans un autre registre, les modèles utilisant des quaternions sont généralement plus stables numériquement (notamment autour des singularités) que ceux utilisant 3 angles.

      Description qualitative des avantages des quaternions

      La représentation d'une rotation sous la forme d'un quaternion (4 nombres) est plus compacte que la représentation en tant que matrice orthogonale (9 nombres). De plus, pour un axe et un angle donné, on peut facilement construire le quaternion correspondant, et réciproquement, pour un quaternion donné, on peut facilement extraire l'axe et l'angle. Toutes ces opérations sont beaucoup plus difficiles avec des matrices ou des angles d'Euler.

      Dans les jeux vidéo et dans d'autres applications, on a souvent besoin de « rotations fluides », c'est-à-dire que la scène représentée doit tourner harmonieusement et pas d'un seul coup. On peut obtenir ce résultat en choisissant une courbe comme celle de l'interpolation linéaire sphérique dans l'espace des quaternions, avec une extrémité qui est la transformation identique 1 (ou correspondant à une autre rotation initiale) et l'autre extrémité correspondant à la rotation finale désirée. C'est plus difficile à faire avec d'autres représentations des rotations.

      Quand on compose plusieurs rotations sur un ordinateur, les erreurs d'arrondi s'accumulent forcément. Un quaternion qui est légèrement erroné représente toujours une rotation après avoir été renormalisé ; une matrice qui est légèrement erronée ne sera plus orthogonale et sera difficile à convertir à nouveau en une matrice orthogonale qui convienne.

      Les quaternions évitent également un phénomène appelé le blocage de cardan qui peut apparaître lorsque, par exemple dans des systèmes de rotations décrivant le roulis, le tangage et le lacet, le tangage est de 90° vers le haut ou le bas, de telle façon que le roulis et le lacet correspondent au même mouvement, et qu'un degré de liberté ait été perdu. Dans un système de navigation inertielle à base de cardans, par exemple, cela peut avoir des conséquences désastreuses si l'avion monte en flèche ou descend à pic.

      • Partager sur Facebook
      • Partager sur Twitter
        15 mars 2014 à 5:02:39

        Effectivement les arguments ont du poids :D

        Bon bah il me reste plus qu'a plonger dans l'univers des Quaternions.

        Merci pour ta réponse.

        • Partager sur Facebook
        • Partager sur Twitter
          16 mars 2014 à 0:57:41

          Je te recommande très vivement excellentissime série de tutoriels Anton's OpenGL 4 Tutorials que j'ai découverte récemment. Elle me parait peu connue, alors que pour autant que tu aies les bases nécessaires en C++ et en OpenGL, tu y verras sûrement comme moi une mine très précieuse d'informations ! En plus, même si le titre indique OpenGL 4, la plupart des tutoriels sont parfaitement adaptés à OpenGL 3. L'auteur à même prit la précaution de préciser les changements nécessaires ! Bien sûr, c'est en anglais, mais je pense que ça ne doit pas te poser de problèmes. :p

          Pour ce qui t'intéresse aujourd'hui, c'est le Quaternion Quick-Start, le plus clair des articles que j'ai trouvé sur le sujet !

          • Partager sur Facebook
          • Partager sur Twitter
            16 mars 2014 à 17:17:12

            Ah merci sympa :p

            Pendant mes recherches je suis tombé sur la série de tutoriels de Songho qui sont assez bien expliqués aussi.

            Je rajoute ton lien en favoris :)

            • Partager sur Facebook
            • Partager sur Twitter

            [Caméra 3D] Quaternions ou Trigonométrie

            × 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