Chapitre 7 : Animation Modélisation 3D et Synthèse Fabrice Aubert [email protected] Master Informatique 2015-2016 F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 1 / 43 1 Introduction F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 2 / 43 Animation I Animation = succession d’images. I Domaine : artistique (liberté de la caméra, des formes), simulation (outils pédagogiques ou aide au geste : chirurgie, assemblage, pilotage), ludique (jeux vidéos). I Génération à temps différé : pré-calcul des images, puis diffusion de ces images ("film"). • Pas de contrainte de temps (permet d’obtenir le réalisme nécessaire). • Pas d’interaction avec l’animation. I Génération dynamique (dite abusivement "à temps réel" ou à temps interactif) : chaque image calculée est immédiatement affichée. • Contrainte de temps : 10 images/s pour la perception d’une continuité, 25/30 images pour un confort visuel. • Interaction possible (simulation avec intervention humaine). I Temps réel : l’image calculée avec un paramètre t correspondant au "vrai" temps t (pas nécessairement à une fréquence élevée...). F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 3 / 43 Exemple d’objets animés I Mouvement de caméra : interaction sur l’orientation, la position, interpolation selon plusieurs positions clefs, suivi d’une courbe I Mouvement de personnage : défini à la "main" (interpolation), motion-capture, génération automatique de marche. I Mouvement rigide d’objets : soumis à un poids, chocs ⇒ réalisme physique. I Déformation d’objets : déformation géométrique, simuler des objets "mous". I Déformation topologique : briser les objets. I Fluides : simulation des mouvement d’eau. F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 4 / 43 2 Techniques d’animation F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 5 / 43 Descriptive I L’animation est décrite explicitement (scénario, scripts, ...) en utilisant des outils (principalement) géométriques. I Exemples : courbe b-spline pour la trajectoire de caméra (avec contrôle de vitesse), la trajectoire des objets, fonctions mathématiques de déformation des objets, outils d’expressions des visages, d’aide à la conception de la marche, etc... I Outre ces outils, la technique maîtresse du descriptif est l’interpolation : l’animateur donne des positions clés, et le logiciel d’animation doit générer les positions intermédiaires pour obtenir du 25 images/seconde. I ⇒ appelée "key-framing" (interpoler les paramètres entre 2 positions clefs). I L’interpolation peut être linéaire (souvent insuffisante) ou ... plus complexe (interpolation spline). I On peut mettre dans le descriptif des outils tels que : le morphing (technique d’interpolation), le motion capture (acquisition de données). I Avantage : liberté "totale" dans la conception des animations. I On oppose généralement animation descriptive à animation basée physique. F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 6 / 43 Animation basée physique I Faire suivre aux objets les lois mécaniques. I Avantage : réalisme, le mouvement est généré sans intervention humaine (seules les positions initiales des objets et les paramètres des lois sont fixés). I Inconvénient : corps déformables avec rupture difficilement accessible au temps interactif... F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 7 / 43 Comportementale I Chaque entité de l’animation répond à des stimulis qui vont définir son comportement lors de l’animation. I Exemple : simulation d’un banc de poisson (chaque poisson répond principalement selon des critères de proximité), vol d’oiseau. F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 8 / 43 Particule I Uniquement basé sur l’animation de points qui peuvent subir des lois physiques (simples) et souvent accompagnés de lois stochastiques de mouvement. I Exemples : animation de feu et chute d’eau. F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 9 / 43 Animation par contraintes I On fixe un objectif à un objet soumis à des contraintes (géométrique, définition des degrés de liberté, obstacles). I Exemples : • cinématique inverse pour un bras articulé (objectif : main qui saisit une balle ; contraintes : position des articulations fixées par les liaisons). • path-finding : robot muni de capteurs dans un labyrinthe qui doit trouver la sortie. F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 10 / 43 Habillage I On se contente d’animer un "squelette" d’un objet (ensemble de points, ou de segments inclus dans l’objet). L’animation de l’habillage (souvent une surface géométrique) est déduit de l’animation du squelette. I Exemple : "skinning" pour les personnages (par exemple : surface implicite pour la peau). F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 11 / 43 3 Animation basée Physique F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 12 / 43 Mécanique du point I La scène à animer est constituée d’un ensemble de points (ou particules). I Données : forces qui s’appliquent en chaque particule (ce sont les forces qui génèrent le mouvement). I Problème : trouver la position x des points à chaque instant t. I Solution : les forces permettent de calculer une accélération pour chaque particule (cf plus loin), et si on connait l’accélération on pourra en déduire la position. • Vitesse à l’instant t : v (t ) = ∂x (t ) = ẋ (t ) (dérivée de la position par rapport au ∂t temps). • Accélération à l’instant t : a(t ) = v̇ (t ) (dérivée de la vitesse) • Autrement dit : ẍ (t ) = a(t ) (dérivée seconde de la position). F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 13 / 43 Exemple avec accélération nulle I a(t ) = 0 à tout instant : • On trouve v (t ) avec la primitive de a(t ) = 0 ⇒ v (t ) = Constante. • Constante = v0 : cette vitesse v0 doit être connue = vitesse initiale à l’instant t = 0. • On trouve x (t ) avec la primitive de v (t ) = v0 ⇒ x (t ) = v0 t + x0 (x0 = constante = position initiale à l’instant t = 0). F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 14 / 43 Exemple avec accélération constante I a(t ) = a à tout instant : • On trouve v (t ) avec la primitive de a(t ) = a ⇒ v (t ) = at + Constante. • Constante = v0 : cette vitesse v0 doit être connue = vitesse initiale à l’instant t = 0. • On trouve x (t ) avec la primitive de v (t ) = at + v0 ⇒ x (t ) = 12 at 2 + v0 t + x0 (x0 = constante = position initiale à l’instant t = 0). F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 15 / 43 Relation Fondamentale de la Dynamique (RFD) I On trouve l’accélération à partir des forces : poids, attraction, frottement, liaison ressort, contact, ... I on note FA (t ) l’ensemble des forces appliquées au point A à l’instant t. I on appelle quantité de mouvement du point A la grandeur pA (t ) = mA vA (t ) (mA : masse, vA (t ) : la vitesse). I on calcule alors l’accélération du point A grâce à la Relation Fondamentale de la Dynamique (RFD) : FA (t ) = p˙A (t ) où p˙A (t ) = ∂mA vA (t ) = mA aA (t ) = mA x¨A (t ) ∂t I On connait donc l’accélération : x¨A (t ) = FA (t ) mA I Dans la suite on note les formules sans préciser t (ne pas oublier que les valeurs dépendent de t). F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 16 / 43 Intégration du mouvement I Trouver x à partir de ẍ = F m s’appelle « intégrer le mouvement »(résolution d’une équation différentielle). I Cette équation admet difficilement une solution formelle (sauf dans des cas très particuliers : chute d’un corps, pendule, masse suspendue à un ressort,...). I ⇒ adoption de méthodes de résolutions approchées et itératives. I Exemple d’une méthode d’intégration simple : Euler explicite. F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 17 / 43 Euler explicite I A l’instant 0, on connait les positions x0 et les vitesses v0 initiales (elles sont données). I Si xt et vt sont connus à l’instant t, on cherche alors la nouvelle position xt +δt (δt est appelé le pas de temps de la simulation). I On effectue les approximations suivantes sur les dérivées : at x −x d’après RFD) et vt = x˙t = t +δδtt t F (t ) I Ce qui donne, avec at = m = vt xt vt +δt −vt δt = ( Fmt : vt +δt = vt + Fmt δt noté et +δt = et + δt xt +δt = xt + vt δt I et = v˙t = Ft m vt est appelé vecteur d’état. I ne pas prendre un pas δt ni trop grand (approximation fausse) ni trop petit (erreurs numériques). Le choix d’un « bon »pas de temps est conditionné par le rapport I F m. ⇒ étude des problèmes de convergences et de stabilité des méthodes d’intégration I Nombreuses autres méthodes d’intégration : Runge-Kutta (tenir compte de plusieurs instants pour faire une meilleure approximation), méthodes dites implicites (couteuses, mais stables) ⇒ domaine de l’analyse numérique. F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 18 / 43 Boucle de simulation Principe : t=0 e_t=(x_t,v_t)=(x_0,v_0); // e_t = vecteur d’etat Tant que simulation non finie faire t=t+delta_t Résoudre collision // correction/génération de forces Calculer F_t/m e_t=e_t+delta_t*(F_t/m,v_t) // Euler explicite Afficher fin tant que F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 19 / 43 Exemple I Une force unique : le poids mg avec g F. Aubert (MS2) = 9.81 et m la masse du point. M3DS/ Chapitre 7 : Animation 2015-2016 20 / 43 Collision I Détecter la collision ? • Détection statique : déterminer si à l’instant t les objets sont en intersection. Principal problème : risque de traverser sans détecter. • Détection dynamique : intersection de trajectoire (intersection entre les positions à t et à t + dt) pour déterminer l’instant de collision. Principal problème : peut s’avérer très délicat et/ou couteux. I Répondre à la collision ? • Corriger les vitesses/positions (impulsion) • Insérer des forces de répulsion (méthode dite à pénalité) • ⇒ peut être difficile de conserver un raisonnement "physiquement" correct lors de collisions complexes. F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 21 / 43 Collision point/plan infini Détection statique : le point traverse t’il le plan ? I Plan donné par (A, n). Particule en mouvement donnée par sa position Pt . −→ • Instant t : calcul de APt · n (position relative de la particule au plan). −−−−→ • Instant t + dt : calcul de APt +dt · n • Si changement de signe ⇒ la particule a traversé le plan. F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 22 / 43 Collision point/plan infini Réponse : impulsion. I Changement de la vitesse spontanément (principe d’impulsion instantanée) : • On décompose la vitesse v en vitesse tangentielle v T et normale v N (i.e. v = v T + v N et v N = (v · n)n si n normé). • La vitesse tangentielle au contact reste inchangée. • La vitesse normale est opposée, en lui appliquant un coefficient de restitution ε ∈ [0, 1] (traduit le rebond). F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 23 / 43 Impulsion I Soient vold et vnew les vitesses avant et après la collision de la particule : connaissant vold , n et ε quelle est la vitesse vnew ? F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 24 / 43 Exemple I Il faut également corriger la position. I Par impulsion : xnew F. Aubert (MS2) = xold + (1 + ε)(H − xold ) avec H projection de xold sur le plan. M3DS/ Chapitre 7 : Animation 2015-2016 25 / 43 Exemples de forces sur les particules I Amortissement/frottement : F = −kv . I Ressort entre 2 particules x1 et x2 : F1→2 = −k (x2 − x1 − lrepos ) I Force d’attraction gravitationnelle entre 2 particules : F1→2 F. Aubert (MS2) M3DS/ Chapitre 7 : Animation = −G kxm1−mx2 k (x2 − x1 ) 2 1 2015-2016 26 / 43 Autres collisions I Collision point/sphère (localiser la particule par rapport à une sphère). I Collision point/triangle (plan infini puis localisation de l’intersection à l’intérieur). I Collision point/volume (intersection demi-droite avec bord). I Collision point/bsp F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 27 / 43 Animation basée physique avec des sphères I position/vitesse = position/vitesse du centre I la sphère considérée comme un point (application de la physique à son centre). I On applique les même calculs que pour les particules I Mais on gère la collision entre les sphères (prise en compte d’un rayon donné). I Ce qui change ? • détection des collisions entre toutes les sphères deux à deux. • calcul de l’impulsion lors d’une collision entre 2 sphères. I Remarque : on ne gère pas le roulement. F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 28 / 43 Collisions sphère/sphère I Détection : (p2 .position() − p1 .position()).length() < p2 .radius () + p1 .radius () I Réponse par impulsion : correction des vitesses : • On calcule un vecteur impulsion j. • Soit N le vecteur normal au point de contact : on peut prendre (approximation) le vecteur joignant les deux centres. • v1new = v1old − mj N et v2new = v 2old + mj N avec j le coefficient d’impulsion. 1 • On calcule que j = 2 −(1+ε)(v2 old −v1 old )·N ( m1 + m1 )N ·N 1 F. Aubert (MS2) 2 M3DS/ Chapitre 7 : Animation 2015-2016 29 / 43 Collisions sphère/sphère : correction des positions I Eloigner les sphères l’une de l’autre dans la direction N = p2 .position() − p1 .position() I Distance de recouvrement des 2 sphères : D = (p2 .position() − p1 .position()).length() − p1 .radius() − p2 .radius() (négative si en collision). I Tenir compte des masses m1 et m2 des sphères pour distribuer le déplacement D entre p1 et p2 . p1 new = p1 old + (1 + ε) m m+1m D NN·N 1 2 1 2 p2 new = p2 old − (1 + ε) m m+2m D NN·N F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 30 / 43 Remarques I La résolution de la collision entre 2 sphères peut regénérer des collisions avec les autres sphères (problème des multi collisions : très délicat à résoudre en statique). I Les sphères peuvent être utilisées comme modèle de collision d’un objet plus complexe (souvent utilisées avec un principe de pénalité comme réponse). I Si nombreuses sphères, nécessité d’optimiser pour éviter les tests entre toutes les paires de sphères (volumes englobants/partition de l’espace). F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 31 / 43 Animation basée physique avec des boites (cas 2D) F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 32 / 43 Mécanique des solides rigides I Pour une particule : • trouver la position x (t ) : • donner/calculer la somme des forces F qui s’appliquent à la particule. • puis résoudre la RFD avec intégration d’Euler par exemple : F • vnew = vold + m dt • xnew = xold + vold dt I Pour un solide : • trouver la position x (t ) ET trouver l’orientation θ(t ) (rappel : le placement de tout objet 3d se réduit à une composition TR). • Pour la position x (t ) : on peut appliquer la RFD au centre de masse G (i.e. considérer l’objet comme un point réduit à son iso-barycentre). • Pour l’orientation θ(t ) : il faut faire intervenir d’autres notions mécaniques pour la calculer ⇒ moment des forces, moment cinétique, moment d’inertie. • ⇒ pour simplifier, on ne considère que le cas 2D dans la suite. F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 33 / 43 Vitesse angulaire I La position d’un solide à l’instant t est définie par la position x de son centre de masse G, et de sa rotation θ autour de ce centre. I On définit la vitesse angulaire par ω = θ̇ I On définit le vecteur vitesse angulaire par → − − ω = ω→ u où u est l’axe de rotation (dépend de l’instant t). I Vitesse d’un point P quelconque du solide : vP I Comment trouver l’angle F. Aubert (MS2) −→ − = vG + PG × → ω θ(t ) ? ⇒ on applique le théorème du moment cinétique. M3DS/ Chapitre 7 : Animation 2015-2016 34 / 43 Moment d’une force I Moment d’une force (analogie avec la force pour la position) : • c’est l’aptitude d’une force appliquée en A à faire tourner un solide autour d’un pivot P donné. • MF /P = F × AP (produit vectoriel). En 2D (i.e. z = 0) : une seule composante (le z du produit vectoriel est le déterminant). F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 35 / 43 Moment d’inertie et moment cinétique I Moment d’inertie (analogie avec la masse) en 2D : RR 2 • Par rapport à un point P : IP = A∈S (AP ) dm • On choisit généralement le centre de masse P = G. • Exemple : rectangle de masse totale M et de dimension (l , h) : IG = 1 2 2 12 M (l + h ). I Moment cinétique d’un point A du solide (analogie avec quantité de mouvement) en 2D : • Par rapport à un point P : LA/P = p × AP (où p : quantité de mouvement = mv ). • On montre que LA/G = IG ω (i.e. indépendant de A). F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 36 / 43 Théorème du moment cinétique I MF /G = ∂LA/G ∂t = IG ω̇ (analogie avec F = ma). I On a donc une relation pour trouver l’angle à partir de l’accélération angulaire : ω̇ = MF /G IG I Application d’Euler : M → − − ω new = → ω old + IFG/G dt θnew = θold + ωold dt F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 37 / 43 Collision Polygone/Plan infini I Déterminer le sommet le plus loin. I Appliquer une impulsion au point de contact P et considérer la normale N au contact. I L’impulsion induit un changement de vitesse à P, qu’on doit répercuter sur vG et sur I Rappel : vP −→ → − ω. − = vG + PG × → ω I Le calcul de la correction est : vG new = vG old + → − ω new Avec j= j N −→m − =→ ω old + (PG × jN ) −(1 + ε)vP old · N 1 m + N ·((PG×N )×PG) IG I vG est la vitesse du centre de masse, vP est la vitesse du point au contact. F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 38 / 43 Détections de collision entre polygones I Détection par axe séparateur pour des polygones P1 et P2 convexes : • Un vecteur est dit axe séparateur si les projections des deux polygones sur ce vecteur sont disjointes. • S’il existe un axe séparateur alors les polygones sont disjoints. • Pour deux polygones (convexes), s’il existe un axe séparateur, alors un axe orthogonal à une arête des polygones est nécessairement séparateur. • ⇒ recherche d’un axe séparateur pour la détection de collision. F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 39 / 43 Test d’axe séparateur I Projeter sur l’axe u ? ⇒ projeter tous les sommets S sur u : λ = P · u. max max λ : [λmin ] intersecte [λmin ]? 1 , λ1 2 , λ2 I Disjoints ? Comparez les I On appelle distance de séparation sur l’axe la distance de superposition (sur l’exemple : λmax − λmin 2 ). 1 I Remarques : • raisonnement valide pour tout polygone convexe (nombre quelconque de sommets) • se généralise en 3D (les axes à tester sont les normales aux faces, et les normales aux couples d’arêtes de P1 et P2). F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 40 / 43 Réponse à la collision I Par impulsion au point de contact P, avec un contact de normal N (normalisé). I Le polygone 1 subit : v 1 G new 2 mais avec −j). j= 1 m1 + − → − → −−→ = vG1 old + mj 1 N et ω1 new = ω1 old + (PG1 × jN ) (similaire pour 1 m2 + −(1 + ε)(vP1 old − vP2 old ) · N N ·((P 1 G1 ×N )×P 1 G1 ) N ·((P 2 G2 ×N )×P 2 G2 ) + IG1 IG2 I Remarque : la vitesse de P n’est pas la même pour 1 et 2. I Problème : P ? N ? F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 41 / 43 Réponse à la collision I Plusieurs solutions, toutes plus ou moins... incorrectes. I Rappel : il faudrait répondre au contact (collision dynamique), et non à une situation d’intersection (collision statique) ! (i.e. trouver l’instant t qui correspond à la collsion). I Proposition : • N : prendre l’axe qui génère la plus petite superposition D • P : considérer les sommets inclus dans les boites (en tp : moyenne de tous les sommets inclus). I Correction de la position des centres des boites : • G1 new = G1 old + les masses). F. Aubert (MS2) m1 DN m1 +m2 et G2 new = G2 old − M3DS/ Chapitre 7 : Animation m2 DN m1 +m2 (moyenne pondérée par 2015-2016 42 / 43 Accélération de la détection de collisions I Décomposer en 2 phases : narrow-phase (détection fine) et broad-phase (accélération). I Narrow-Phase : • détection "précise" entre 2 corps (sphère/sphère, polygone/polygone, objet/objet, sphère/polygone, AABB/..., etc). • Principaux problèmes : algorithme géométrique d’intersection, mais surtout fournir les informations nécessaires à la réponse choisie (point de contact, normale au contact, distance de superposition, etc). I Broad-Phase : • déterminer des critères entre tous les corps de la scène pour éviter la narrow-phase. • Exemples : • tests d’intersections sur boites englobantes (sphère, AABB, OBB, etc). • axe séparateur sur l’axe x de la scène (projection de tous les objets de la scène). • partitionnement de l’espace (grille régulière, octree dynamique). F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 43 / 43