Chapitre 9 : Moteurs 3D - LaCIM

Transcription

Chapitre 9 : Moteurs 3D - LaCIM
Chapitre 9 : Moteurs 3D
Alexandre Blondin Massé
Département d’informatique
Université du Québec à Montréal
9 novembre 2016
Infographie
INF5071
A. Blondin Massé (UQAM)
9 novembre 2016
1 / 18
Table des matières
1. Transformations
2. Rotations
3. Moteurs 3D
A. Blondin Massé (UQAM)
9 novembre 2016
2 / 18
Deux objets de base
Dans une application 3D, il est primordial de distinguer :
I
Les points, qui sont des triplets (x, y, z) ∈ R3 et qui
représentent des positions,
I
Des vecteurs, qui sont aussi des triplets (a, b, c) ∈ R3 qui
représentent des directions;
I
Souvent, on confond les deux notions, ce qui est
acceptable si on comprend bien la différence.
I
Il y a plusieurs opérations qui peuvent être effectuées sur
des points et/ou des vecteurs.
A. Blondin Massé (UQAM)
9 novembre 2016
3 / 18
Sommes et différences
Soient
I
p, q ∈ R3 des points et
I
~u, ~v ∈ R3 des vecteurs.
Alors
I
p + ~u et p − ~u sont des points;
I
~u + ~v et ~u − ~v sont des vecteurs;
I
p + q n’est pas défini;
I
Par contre, p − q est un vecteur !
I
Ces différentes opérations sont particulièrement
importantes
A. Blondin Massé (UQAM)
9 novembre 2016
4 / 18
Produits
Soient
I
a ∈ R un scalaire;
I
p ∈ R3 un point;
I
~u, ~v des vecteurs.
Alors
I
ap est un point;
I
a~u est un vecteur (multiplication par un scalaire) ;
I
~u · ~v est un scalaire (produit scalaire);
I
~u × ~v est un vecteur (produit vectoriel);
A. Blondin Massé (UQAM)
9 novembre 2016
5 / 18
Autres opérations
I
Calcul de la norme :
q
k~uk = u21 + u22 + u23 ,
qui est un scalaire.
I
Normalisation :
~u 7→
~u
,
k~uk
qui construit un vecteur unitaire pointant dans la même
direction que le vecteur de départ.
A. Blondin Massé (UQAM)
9 novembre 2016
6 / 18
Transformations
I
Une transformation est une fonction de la forme
T : R3 → R3 ,
qui associe à chaque point de R3 un autre point de R3 .
I
Une transformation peut agir sur des points et/ou des
vecteurs.
I
Exemples : rotations, translations, réflexions,
changements d’échelle, projections, transvections,
etc.
I
Plusieurs de ces transformations sont linéaires;
I
Autrement dit, elles peuvent être représentées par des
matrices.
A. Blondin Massé (UQAM)
9 novembre 2016
7 / 18
Transformations linéaires
Quelques transformations linéaires :
I
Les rotations;
I
Les changements d’échelle;
I
Certaines projections;
I
Les transvections, etc.
Quelques transformations affines (presque linéaires) :
I
Les translations.
I
Elles peuvent également être représentées par des
matrices si on utilise les coordonnées homogènes.
A. Blondin Massé (UQAM)
9 novembre 2016
8 / 18
Table des matières
1. Transformations
2. Rotations
3. Moteurs 3D
A. Blondin Massé (UQAM)
9 novembre 2016
9 / 18
Rotations 2D
I
Une rotation d’angle θ autour de l’origine est représentée
par
cos θ − sin θ
R(θ) =
sin θ cos θ
I
Notons que
cos 0 − sin 0
1 0
R(0) =
=
sin 0 cos 0
0 1
◦
◦
cos 45 − sin 45
0.7071 −0.7071
◦
R(45 ) =
≈
sin 45◦ cos 45◦
0.7071 0.7071
I
Appliquer une rotation à un point p = (x, y) revient
simplement à le multiplier par la matrice correspondante :
cos θ − sin θ x
sin θ cos θ
y
A. Blondin Massé (UQAM)
9 novembre 2016
10 / 18
Rotations 2D quelconque
I
I
Effectuer une rotation en 2D autour d’un point p
quelconque est simple :
I
~
On effectue une translation de vecteur −Op,
I
On applique la rotation;
I
Puis on applique la translation inverse de vecteur
~
0p.
La situation est plus complexe en 3D.
A. Blondin Massé (UQAM)
9 novembre 2016
11 / 18
Rotations 3D
I
Une rotation en 3D s’effectue autour d’un axe de
rotation et non un point;
I
Représentations classiques :
I
En utilisant trois angles (yaw, pitch, roll ou angles
d’Euler);
I
En utilisant les quaternions.
I
Dans la plupart des cas, les angles d’Euler sont suffisants;
I
Mais ils présentent quelques inconvénients : moins
compacts, blocage de cardan, interpolation sphérique.
A. Blondin Massé (UQAM)
9 novembre 2016
12 / 18
Yaw, pitch, roll
A. Blondin Massé (UQAM)
9 novembre 2016
13 / 18
Blocage de Cardan
I
En utilisant certaines combinaisons de rotations, on
perd un degré de liberté;
I
Voir animation sur Wikipedia : https:
//fr.wikipedia.org/wiki/Blocage_de_cardan;
I
Solution : Utiliser les quaternions.
A. Blondin Massé (UQAM)
9 novembre 2016
14 / 18
Table des matières
1. Transformations
2. Rotations
3. Moteurs 3D
A. Blondin Massé (UQAM)
9 novembre 2016
15 / 18
Panda3D
I
Site officiel : https://www.panda3d.org/;
I
Développement bas à Carnegie Mellon University;
I
Couche optimisée en C/C++;
I
Couche de haut niveau en Python;
I
Logiciel libre pour exploitation commerciale ou non;
I
Exportation de Blender relativement facile via YABEE.
A. Blondin Massé (UQAM)
9 novembre 2016
16 / 18
Documentation
A. Blondin Massé (UQAM)
9 novembre 2016
17 / 18
Unity
I
Site officiel : https://unity3d.com/;
I
Permet de faire des jeux 2D et 3D;
I
Déploiement simple sur plusieurs plateformes classiques :
iOS, Android, Linux, Mac, etc.
I
Logiciel très mature en comparaison à d’autres;
I
License à payer selon le type de production :
I
Moins de 100 000$ de revenu : gratuit;
I
Plus de 100 000$ de revenu : à partir de 35$ par
installation par mois.
A. Blondin Massé (UQAM)
9 novembre 2016
18 / 18