MOTEURS DE JEU ! RAPPELS MATHÉMATIQUES Rémi Ronfard, Septembre 2014 1 Cette présentation récapitule les concepts mathématiques nécessaires à la mise en place d’un pipeline d’affichage 3D. Son but n’est pas de développer les aspects mathématiques purs, mais bien de fournir des clefs « pratiques » de mise en œuvre. MATHÉMATIQUES DE LA 3D 1. Espace 3D • Définitions • Points et vecteurs • Opérateurs utiles • Géométrie dans l’espace 3D • Rappels de trigonométrie ! 2. Stockage matriciel • Représentation • Addition et multiplication • Inversion de matrices ! 3. Transformations 3D • Définition • Translations, rotations, changements d’échelle • Compositions matricielles ! 4. Quaternions • Définition • Opérateurs utiles ESPACE 3D DÉFINITION ESPACE 3D DÉFINITION L’espace de travail usuel est un espace Euclidien continu : R3 ! La base de cet espace est formée par les vecteurs suivants: (1,0, 0), (0, 1, 0) et (0, 0, 1) Les vecteurs de la base sont 2 à 2 orthogonaux et de norme 1, ils forment donc une base orthogonale. ! Les 3 dimensions sont généralement dénommées respectivement X, Y et Z ! La base peut être soit directe (repère main droite), soit indirecte (repère main gauche) Coordinate systems Different game engines define coordinate systems differently • Most of you will probably use the OpenGL coordinate system y x z z “Horizontal plane” y • Plane parallel to the ground (in OpenGL, the xz-plane) x “Up-axis” • Axis perpendicular to horizontal plane (in OpenGL, the y-axis) z x y ESPACE 3D POINTS ET VECTEURS ESPACE 3D POINTS ET VECTEURS ESPACE 3D POINTS ET VECTEURS 9 ESPACE 3D POINTS ET VECTEURS 10 ESPACE 3D OPÉRATEURS UTILES 11 ESPACE 3D OPÉRATEURS UTILES 12 ESPACE 3D OPÉRATEURS UTILES 13 ESPACE 3D GÉOMÉTRIE DANS L’ESPACE 14 ESPACE 3D GÉOMÉTRIE DANS L’ESPACE 15 ESPACE 3D GÉOMÉTRIE DANS L’ESPACE 16 ESPACE 3D GÉOMÉTRIE DANS L’ESPACE Intersection de 2 droites !! Soient les droites suivantes: Pa = P1 + ua (P2 - P1) Pb = P3 + ub (P4 - P3) !! Il faut au préalable vérifier (à l’aide d’un produit scalaire) que les 2 droites ne sont p parallèles. !! En résolvant pour le point où Pa = Pb, on obtient les 3 équations à 2 inconnues (ua et ub) suivantes: x1 + ua (x2 - x1) = x3 + ub (x4 - x3) y1 + ua (y2 - y1) = y3 + ub (y4 - y3) z1 + ua (z2 - z1) = z3 + ub (z4 - z3) !! On en déduit une valeur pour ua ou ub, que l’on réinjecte dans l’équation de droite pour obtenir la position du point d’intersection. 17 ESPACE 3D GÉOMÉTRIE DANS L’ESPACE 18 ESPACE 3D GÉOMÉTRIE DANS L’ESPACE 19 ESPACE 3D GÉOMÉTRIE DANS L’ESPACE Distance et position d’un point par rapport à un plan !! Soit le plan d’équation: Ax + By + Cz + D = 0 !! Soit le point P, dont on veut connaître la distance et la position relativement au plan. !! En injectant les coordonnées du point P dans l’équation du plan, on obtient une valeur V telle que: !! • La valeur absolue de V définit la distance du point P au plan • Le signe de V définit la position du point relativement au plan (positif: le point P est situé au-dessus du plan relativement à la normale) ESPACE 3D RAPPELS TRIGONOMÉTRIQUES 21 ESPACE 3D RAPPELS TRIGONOMÉTRIQUES Cosinus et Sinus ! Soit le cercle de centre O et de rayon 1. Soit α l’angle entre un rayon OM’ de ce cercle et l’axe horizontal. ! On appelle cosinus de l’angle α, noté cos(α), la longueur de la projection orthogonale du rayon OM’ sur l’axe horizontal passant par O. ! On appelle sinus de l’angle α, noté sin(α), la longueur de la projection orthogonale du rayon OM’ sur l’axe vertical passant par O. ESPACE 3D RAPPELS TRIGONOMÉTRIQUES STOCKAGE MATRICIEL STOCKAGE MATRICIEL DÉFINITIONS STOCKAGE MATRICIEL DÉFINITIONS STOCKAGE MATRICIEL DÉFINITIONS STOCKAGE MATRICIEL DÉFINITIONS STOCKAGE MATRICIEL DÉFINITIONS STOCKAGE MATRICIEL DÉFINITIONS STOCKAGE MATRICIEL DÉFINITIONS STOCKAGE MATRICIEL DÉFINITIONS STOCKAGE MATRICIEL DÉFINITIONS TRANSFORMATIONS 3D 18/09/2014 34 TRANSFORMATIONS 3D TRANSLATION 18/09/2014 35 TRANSFORMATIONS 3D ROTATION AUTOUR D’UN AXE CANONIQUE 18/09/2014 36 TRANSFORMATIONS 3D ROTATION AXIALE GÉNÉRALISÉE TRANSFORMATIONS 3D CHANGEMENT D’ÉCHELLE TRANSFORMATIONS 3D COMPOSITION DES TRANSFORMATIONS Les différentes transformations à appliquer à un objet (rotation, translation, …) doivent s’enchaîner dans un ordre bien précis pour que l’objet soit correctement placé dans l’espace. !! Soit l’exemple suivant: on veut positionner un avion (défini dans son propre repère de coordonnées) à la position P dans l’espace, selon sa direction de vol. !! !! L’enchaînement des transformations nécessaires va donc être: • Rotation de l’avion dans la bonne orientation (RDir) • Déplacement de l’avion orienté à la position P ! ! ! ! ! ! • • • L’axe Zp sera le vecteur directeur de vol (DOF) L’axe Xp sera dépendant du roulis, et perpendiculaire à Zp L’axe Yp sera perpendiculaire à Xp et Yp TRANSFORMATIONS 3D COMPOSITION DES TRANSFORMATIONS TRANSFORMATIONS 3D COMPOSITION DES TRANSFORMATIONS Un autre cas de figure qui nous intéresse est la combinaison des transformations liées aux changements de repères: !! • • Modélisation d’objets CAD Modèles animés hiérarchisés TRANSFORMATIONS 3D COMPOSITION DES TRANSFORMATIONS Soit le point P, et les 4 repères suivants: !! !"1→2 = T(4,2) !"2→3 = T(2,3) * S(0.5, 0.5) !"3→4 = T(6.7, 1.8) * R(45°) ! On constate que: !"i→k = !"j→k * !"i→j !"i→k = (!"k→i) et: ! -1 Prenons pour exemple l’animation d’un tricycle. La rotation de la roue avant doit être dépendante de la direction du guidon, et sa position dépendante de la Position du cadre dans le repère global. Le principe est d’animer chaque sous-partie dans son propre repère, lui-même exprimé dans le repère de l’élément parent (hiérarchie), puis de cumuler les transformations des éléments parents jusqu’à la racine (repère global). ! !"!"ℎ!"!"!" = T!"!"!"!" ∗ !"!"!"!"!" ∗ T!"!"!"!" ∗ QUATERNIONS QUATERNIONS DÉFINITION Un quaternion est un type de nombre hypercomplexe. ! L’ensemble des quaternions constitue un extension de l’ensemble des nombres complexes. Les relations entre les quaternions et les rotations 3D en font un outil mathématique de choix pour l’animation dans l’espace. !! L'espace ℍ des quaternions est un espace vectoriel réel de dimension 4 rapporté à une base notée (i, j, k, 1). Tout quaternion q ∈ ℍ s'écrit donc de manière unique q = ai + bj + ck + d. !! Pour faire simple, un quaternion stocke: • Un axe 3D de rotation • Un rotation signée autour de cet axe Marc Moulis QUATERNIONS INITIALISATION Marc Moulis QUATERNIONS ADDITION/SOUSTRACTION Addition/soustraction de quaternions: !! L’addition/soustraction de quaternions est équivalente à l’addition/soustraction de vecteurs 4D (opération membre à membre). !! !! Opposé d’un quaternion: !! !"!" = !"1!" + !"2!"! !"!" = !"1!" + !"2!"! !"!" = !"1!" + !"2!"! !"!" = !"1!" + !"2!"! En se basant sur l’addition de deux quaternions, pour laquelle l’élément neutre est 0, on déduit que l’opposé d’un quaternion s’obtient en inversant chacun de membres du quaternion. ! Marc Moulis !"’!" = −!"!"! !"’!" = −!"!"! !"’!" = −!"!"! QUATERNIONS MULTIPLICATION Le produit de deux quaternions !! !"1 = !"1!" + !"1!"!" + !"1!"!" + !"1!"!"! et !"2 = !"2!" + !"2!"!" + !"2!"!" + !"2!"!"! !! s'obtient en développant le produit formellement, puis en effectuant les réductions i² = − 1,i.j = k,…,k2 = −1. !! La multiplication de deux quaternions correspond à la composition des deux transformations, de la même manière que pour la composition de deux rotations stockées sous forme matricielle. La multiplication de deux quaternions n’est pas commutative (comme pour la forme matricielle). !! !"!" = !"1!" ∗ !"2!" + !"1!" ∗ !"2!" + !"1!" ∗ !"2!" − !"1!" ∗ !"2!"! !"!" = !"1!" ∗ !"2!" + !"1!" ∗ !"2!" + Marc Moulis !"1!" ∗ !"2!" − !"1!" ∗ !"2!"! QUATERNIONS OPÉRATEURS QUATERNIONS CONVERSION DES FORMES MATRICIELLES Marc Moulis Prochaine séance : RENDU 3D TEMPS REEL + OPENGL Rémi Ronfard Septembre 2014 QUATERNIONS INTERPOLATIONS SPHÉRIQUES LINÉAIRES ET CUBIQUES Marc Moulis QUATERNIONS INTERPOLATIONS SPHÉRIQUES LINÉAIRES ET CUBIQUES • • • • • • • Comment interpoler une rotation entre R1 et R3 ? La matrice (R1 + R3)/2 n’est pas une matrice de rotation ! Le quaternion (Q1 + Q3)/2 n’est pas unitaire ! Les rotations se composent par multiplication matricielle R(t1->t3) = R(t2-> t3) R(t1-t2) Les quaternions se composent par multiplication Q(t1->t3) = Q(t2->t3) Q(t1->t2) • • • Une solution consiste à calculer angle = angle(Q1 Q2) Q = [ sin((1-t) angle) Q1 + sin( t angle) Q2 ] / angle ! Rémi Ronfard Septembre 2014