6 par page

Post on 05-Jan-2017

227 views 0 download

Transcript of 6 par page

Chapitre 7 : AnimationModélisation 3D et Synthèse

Fabrice Aubertfabrice.aubert@univ-lille1.fr

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