6 par page
Transcript of 6 par page
Chapitre 7 : AnimationModélisation 3D et Synthèse
Fabrice [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 ouaide 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) : chaqueimage calculée est immédiatement affichée.
• Contrainte de temps : 10 images/s pour la perception d’une continuité, 25/30 imagespour 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 (pasné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 selonplusieurs positions clefs, suivi d’une courbe
I Mouvement de personnage : défini à la "main" (interpolation), motion-capture, générationautomatique 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), latrajectoire des objets, fonctions mathématiques de déformation des objets, outilsd’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 donnedes positions clés, et le logiciel d’animation doit générer les positions intermédiaires pourobtenir 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 (interpolationspline).
I On peut mettre dans le descriptif des outils tels que : le morphing (techniqued’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 lespositions 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 lorsde l’animation.
I Exemple : simulation d’un banc de poisson (chaque poisson répond principalement selondes 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ésde 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 segmentsinclus dans l’objet). L’animation de l’habillage (souvent une surface géométrique) est déduitde 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 lemouvement).
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 plusloin), et si on connait l’accélération on pourra en déduire la position.
• Vitesse à l’instant t : v(t) = ∂x∂t (t) = x(t) (dérivée de la position par rapport au
temps).• Accélération à l’instant t : a(t) = v(t) (dérivée de la vitesse)• Autrement dit : x(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) = v0t + 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) = 1
2 at2 + v0t + 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) = mAvA(t) (mA : masse,vA(t) : la vitesse).
I on calcule alors l’accélération du point A grâce à la Relation Fondamentale de laDynamique (RFD) :
FA(t) = pA(t) où pA(t) =∂mAvA
∂t(t) = mAaA(t) = mAxA(t)
I On connait donc l’accélération :
xA(t) =FA(t)mA
I Dans la suite on note les formules sans préciser t (ne pas oublier que les valeursdépendent de t).
F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 16 / 43
Intégration du mouvement
I Trouver x à partir de x = Fm 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èsparticuliers : 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 estappelé le pas de temps de la simulation).
I On effectue les approximations suivantes sur les dérivées : at = vt =vt+δt−vt
δt = ( Ftm
d’après RFD) et vt = xt =xt+δt−xt
δt
I Ce qui donne, avec at =F(t)
m :
vt+δt = vt +Ftm δt
xt+δt = xt + vt δtnoté et+δt = et +δt
( Ftmvt
)
I et =
(vtxt
)est appelé vecteur d’état.
I ne pas prendre un pas δt ni trop grand (approximation fausse) ni trop petit (erreursnumériques). Le choix d’un « bon »pas de temps est conditionné par le rapport F
m .
I ⇒ é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 plusieursinstants 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=0e_t=(x_t,v_t)=(x_0,v_0); // e_t = vecteur d’etatTant que simulation non finie faire
t=t+delta_tRésoudre collision // correction/génération de forcesCalculer F_t/me_t=e_t+delta_t*(F_t/m,v_t) // Euler expliciteAfficher
fin tant que
F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 2015-2016 19 / 43
Exemple
I Une force unique : le poids mg avec g = 9.81 et m la masse du point.
F. Aubert (MS2) 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. Principalproblème : risque de traverser sans détecter.
• Détection dynamique : intersection de trajectoire (intersection entre les positions à tet à t +dt) pour déterminer l’instant de collision. Principal problème : peut s’avérertrè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 vT et normale vN (i.e.v = vT + vN et vN = (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 = xold +(1+ ε)(H− xold ) avec H projection de xold sur le plan.
F. Aubert (MS2) 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 =−G m1m2‖x2−x1‖ (x2− x1)
F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 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 − j
m1N et v2new = v2old +
jm2
N avec j le coefficient d’impulsion.
• On calcule que j = −(1+ε)(v2old−v1old )·N( 1
m1+ 1
m2)N·N
F. Aubert (MS2) 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 encollision).
I Tenir compte des masses m1 et m2 des sphères pour distribuer le déplacement D entre p1et p2.
p1new = p1old +(1+ ε) m1m1+m2
D NN·N
p2new = p2old − (1+ ε) m2m1+m2
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 autressphè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 pairesde 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 :
• vnew = vold +Fm dt
• xnew = xold + vold dt
I Pour un solide :
• trouver la position x(t) ET trouver l’orientation θ(t) (rappel : le placement de toutobjet 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érerl’objet comme un point réduit à son iso-barycentre).
• Pour l’orientation θ(t) : il faut faire intervenir d’autres notions mécaniques pour lacalculer⇒ 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 = vG +−→PG×−→ω
I Comment trouver l’angle θ(t)?⇒ on applique le théorème du moment cinétique.
F. Aubert (MS2) 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 Pdonné.
• MF/P = F ×AP (produit vectoriel). En 2D (i.e. z = 0) : une seule composante (le zdu 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 :
• Par rapport à un point P : IP =∫ ∫
A∈S(AP)2dm• On choisit généralement le centre de masse P = G.• Exemple : rectangle de masse totale M et de dimension (l,h) : IG = 1
12 M(l2 +h2).
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
IGI Application d’Euler :
−→ω new =−→ω old +MF/G
IGdt
θ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 :
vGnew = vGold +jm N
−→ω new =−→ω old +(−→PG× jN)
Avec
j =−(1+ ε)vP old ·N
1m + N·((PG×N)×PG)
IGI 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 cevecteur 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.I Disjoints ? Comparez les λ : [λmin
1 ,λmax1 ] intersecte [λmin
2 ,λmax2 ]?
I On appelle distance de séparation sur l’axe la distance de superposition (sur l’exemple :λmax
1 −λmin2 ).
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 : v1Gnew = v1
Gold +j
m1 N et−→ω1
new =−→ω1
old +(−−→PG1× jN) (similaire pour
2 mais avec −j).
j =−(1+ ε)(v1
P old − v2P old ) ·N
1m1 +
1m2 +
N·((P1G1×N)×P1G1)I1G
+ N·((P2G2×N)×P2G2)I2G
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 situationd’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 :
• G1new = G1
old +m1
m1+m2 DN et G2new = G2
old − m2
m1+m2 DN (moyenne pondérée parles masses).
F. Aubert (MS2) M3DS/ Chapitre 7 : Animation 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 lesinformations 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