quaternions

publicité
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
Téléchargement