Chapitre 7 : Animation

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