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