html5-img
1 / 65

Synthèse d’images 4. Animation

Synthèse d’images 4. Animation. Licence Pro 2005-2006 Sébastien THON IUT de l’Université de Provence, site d’Arles Département Informatique. Introduction Animation = succession d’images fixes, à une fréquence suffisante pour tromper l’œil (cinéma : 24 images/sec).

Télécharger la présentation

Synthèse d’images 4. Animation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Synthèse d’images 4. Animation Licence Pro 2005-2006 Sébastien THON IUT de l’Université de Provence, site d’Arles Département Informatique

  2. Introduction Animation = succession d’images fixes, à une fréquence suffisante pour tromper l’œil (cinéma : 24 images/sec). « FPS »: « Frames Per Second »  Pour produire une animation : modifier la position d’objets au cours du temps.

  3. En synthèse d’images, 2 types d’animation : • - Animation 3D temps réel • Ex: simulateur, jeu, … • Produit avec une librairie graphique (OpenGL, DirectX, …). • Il faut calculer suffisamment d'images par seconde. Le nombre de FPS dépend de la machine. • - Animation 3D précalculée • Ex: film d’animation, effets spéciaux, … • Produit avec un logiciel de synthèse d’images (3D Studio Max, Maya, Lightwave, …). • On peut passer plusieurs minutes ou heures pour calculer une image.

  4. 3 étapes : • Modélisation • Représenter les objets par des modèles 3D. • Animation • Associer un mouvement aux objets. • Rendu • Créer les images qui composent l’animation. Modélisation Dans le cas d’une animation temps-réel, il faut que cette boucle soit la plus rapide possible (effectuée au moins 20 fois par seconde  20 FPS) Animation Rendu

  5. Animation temps réel Modélisation Si lors de l’étape de rendu on efface l’écran et on affiche directement les différents éléments à l’écran, alors on observe un effet de scintillement. Animation Rendu

  6. Solution : affichage en « double buffer » On utilise deux buffers d’image. On affiche la scène dans un buffer en mémoire alors que l’autre buffer est affiché. Lorsque l’image est construite, on permute les deux buffers. • L’image qui apparaît à l’écran est complète • Pas de scintillement Affichage échange Mémoire Écran Mémoire Écran

  7. affichage en « double buffer » avec OpenGL // Lors de l’initialisation de l’affichage Glut,on requiert un affichage // en double buffer. glutInitDisplayMode( GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH ); // Méthode appelée par Glut pour l’affichage GLvoid callback_display() { // On efface l’image du buffer en mémoire glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); // On affiche la scène dans le buffer en mémoire affiche_scene(); // Permutation des deux buffers. Le buffer en mémoire devient visible. glutSwapBuffers(); }

  8. Remarque: Si on utilise un affichage en « double buffer », alors on prend en mémoire vidéo le double de la mémoire nécessaire pour le « Color buffer ». Ex: en 1024x768, 24 bits : taille color buffer = 2.25 Mo en double buffer : 2.25 x 2 = 4.5 Mo

  9. Quelques techniques d’animation abordées : • Interpolation de positions-clés • Utilisation d’expressions mathématiques • Cinématique directe et inverse • Simulation dynamique • Collisions • Effets spéciaux (motion blur)

  10. 1. Interpolation de positions clés Permet à l’utilisateur de ne pas avoir à définir toutes les étapes de l’animation : il définit des positions clés (« key frame ») et l’ordinateur se charge de calculer les images intermédiaires par interpolation. Deux images crées par l’utilisateur Images intermédiaires générées par l’ordinateur  s’apparente à du morphing en 3D.

  11. 1.1 Définition des positions clés • Définition manuelle • Capture de mouvements

  12. 1.1.1 Définition manuelle L’utilisateur donne les valeurs des positions et autres paramètres à interpoler pour chaque position clé. • Grand contrôle possible pour l’utilisateur. • Travail fastidieux.

  13. Exemple L’animation de personnages dans les jeux (Quake2, Quake3, …) se fait souvent par interpolation de points clés. Ensemble des positions clés pour la course d’un personnage. Tous ces modèles ont exactement le même nombre de points et de facettes. Seule la position des points change d’un modèle-clé à l’autre. Toutes les positions intermédiaires sont obtenues par interpolation.

  14. Exemple Animation de visage par interpolation entre des expressions clés. On peut doser l’importance d’une expression en jouant sur la « distance » entre l’expression au repos et une expression particulière. Au repos Joie Peur Colère

  15. Exemple

  16. 1.1.2 Capture de mouvement « Motion capture » (MoCap) : utilisation de capteurs placés en des points de référence sur un acteur, un objet, etc.  Utilise les données mesurées pour un modèle virtuel. • Mouvements très réalistes. • Prédétermination du mouvement  très spécifique.

  17. 1.2 Interpolation entre les positions clés • On a maintenant les positions clés. • Comment définir les positions intermédiaires ? • Courbes d’interpolation

  18. 1.2.1 Concept de courbe d’interpolation La forme de la courbe représente le type de mouvement. paramètre Décélération Mouvement constant Accélération Pas de mouvement temps • Mouvement constant • Mouvement d’accélération • Mouvement de décélération

  19. Quel paramètre d’un objet peut être interpolé ? • Position • Rotation • Échelle • Couleur • … • Différents types de courbes d’interpolation : • Linéaire • Cubique • …

  20. 1.2.2 Interpolation linéaire Soit un point P(x,y,z) en mouvement. On veut l’amener de (x0,y0,z0) au temps t0 au point (x1,y1,z1) au temps t1. On peut utiliser une interpolation linéaire : P(x1,y1,z1) Y P(x,y,z) P(x0,y0,z0) Z X Si on considère que t0=0 et t1=1, alors : X(t) = (1-t).x0 + t.x1 avec t  [0 ,1] = x0 + t.(x1-x0)

  21. 1.2.3 Autres types d’interpolation Courbes splines Etc.

  22. 2. Expressions mathématiques • La position des objets 3D en mouvement peut être donnée par une expression mathématique quelconque dépendante du temps : • x = f1(t) • y = f2(t) • z = f3(t) • Courbes paramétriques (paramétrées par le temps t) Ex: Trajectoire circulaire d’une lune autour d’une planète : xL = xP + r . cos(2..f.t) yL = yP + r . sin(2..f.t) zL = zP (xL,yL,zL) r (xP,yP,zP)

  23. 3. Cinématique directe et inverse Méthodes très utilisées, notamment pour l’animation de personnages (Half-Life, Unreal Tournament, Max Payne, etc.) Permet plus de souplesse d’animation qu’une interpolation entre des positions clés. On peut obtenir des positions qui n’étaient pas prédéfinies (Ex: un personnage qui tombe au sol ne passera pas au travers d’un mur mais restera adossé).

  24. 3.1 Squelette et enveloppe • Squelette • Définit la charpente d’un objet. • On anime l’objet en animant le squelette. • En général, le squelette est définit par un ensemble de chaînes. • Enveloppe • Définit l’extérieur visible de l’objet. • L’enveloppe est déformée par le squelette.

  25. 3.2 Chaînes • Racine (1) • Point de départ de la chaîne. • Os (2) • Ligne droite qui relie deux joints. • Joint (3) • Point de rotation entre deux os. • Point de contrôle (effector) (4) • Placé au bout de la chaîne, permet d’invoquer la cinématique inverse. 1 2 3 4

  26. 3.3 Contrôle d’une chaîne • Cinématique directe (« forward kinematics ») • On spécifie directement l’angle de chaque joint de la chaîne. • Cinématique inverse (« inverse kinematics ») • On spécifie la position du bout de la chaîne (« effector ») et on calcule automatiquement les angles des joints.

  27. Exemple de chaîne 2 l2 l1 X=(x,y) 1 (0,0) • (0,0) est la racine • l1etl2sont les os • Xest le bout de la chaîne (« effector ») • 1 et 2 sont les angles des joints

  28. Cinématique directe 2 l2 l1 X=(x,y) 1 (0,0) • On spécifie directement 1 et 2 • Ensuite on calcule X

  29. Cinématique inverse Que faire si l’animateur connaît la position du bout de la chaîne X ? 2 l2 l1 X=(x,y) 1 (0,0) On va calculer les angles des joints 1 et 2 à partir de X  Cinématique inverse.

  30. 4. Simulation dynamique 4.1 Principe Certaines animations seraient trop complexes à régler manuellement.  Utilisation d’une simulation dynamique en utilisant des lois de la physique.

  31. 4.2 Systèmes de particules 4.2.1 Présentation Ensemble d’éléments dont les mouvements sont régis par des lois physiques (gravité, forces de frottement, collisions, etc.) Ensemble de particules dotées de vitesses propres

  32. Les système de particules permettent de représenter des objets qui n’ont pas forme bien définie (pluie, neige, feu, fumée, chute d’eau, explosion, feu d’artifice, etc.) Les particules peuvent être représentées par de simples points, des polygones ou des objets 3D. On utilise souvent des quadrilatères texturés avec une texture RGBA, orientés face à l’utilisateur (« billboarding »).

  33. 4.2.2 Attributs des particules • Chaque particule du système est caractérisée par un ensemble d’attributs, comme par exemple : • Position • Vitesse • Masse • Taille • Couleur • Transparence • Durée de vie • etc.

  34. 4.2.3 Utilisation Système dynamique : lorsque les particules sont crées, elles ont un temps de vie au cours duquel leurs attributs peuvent être modifiés, puis elles disparaissent. Temps de vie Modification des attributs Création Utilisation Suppression Gestion d’une particule au cours du temps

  35. Gestion d’un ensemble de particules • A chaque nouvelle image de l’animation, on effectue les étapes suivantes : • Génération de nouvelles particules • Réglage des attributs des nouvelles particules • Les particules en fin de vie sont détruites • Les particules restantes sont déplacées et transformées en fonction de leurs attributs • Les particules restantes sont affichées

  36. Structures de données class Particule { float x, y, z; float masse; int duree_de_vie; }; class Systeme { list <Particule> liste; };

  37. Calcul de la position au cours du temps • Discrétisation du temps. • Force supposée constante pendant dt. • Exemple : Déplacement dans un champ de force. Schéma d’intégration d’Euler : P(t+dt) = P(t) + V(t).dt

  38. 4.3 Simulations dynamiques avancées • Pour représenter certains mouvements de la réalité, on a besoin d’utiliser des modèles physiques plus ou moins complexes : • Solides • Liquides • Fumée • Feu • Tissus • … Méthodes complexes, faisant encore l’objet de recherches scientifiques. Temps de calculs souvent très élevés. Au prix d’approximations, on peut obtenir du temps réel.

  39. 4.3.1 Animation de liquides

  40. L’espace est discrétisé en un maillage 3D de sommets. Au cours du temps, des vecteurs vitesse de fluide sont calculés en chaque sommet grâce à des équations de la mécanique des fluides (équations de Navier-Stokes). Des particules de fluide sont placées dans cette matrice 3D. Leur position est donnée par interpolation des vecteurs vitesse. Maillage 3D de sommets

  41. 4.3.2 Animation de fumée Le principe est le même que pour l’animation de liquides.

  42. 4.3.3 Animation de feu Le principe est le même que pour l’animation de liquides.

  43. 4.3.4 Animation de tissus Principe: maillage 2D de sommets reliés par des liaisons plus ou moins élastiques (système masses-ressorts). Des forces sont appliquées sur les sommets. Maillage 2D de sommets

  44. 4.3.5 Animation de solides

  45. 4.4 API physiques HAVOK http://www.havok.com Utilisé dans plus de 150 jeux sur PC, PS2, PS3, PSP, XBOX, XBOX 360, GameCube. (Half-Life 2, F.E.A.R., HALO 2, Max Payne 2, …) AGEIA PhysX http://www.ageia.com TOKAMAK (Gratuit) http://www.tokamakphysics.com/ …

  46. 5. Collisions • Le test de collisions entre des objets dans une scène 3D est indispensable dans une application 3D interactive (simulateur, jeu, …) : • Est-ce que l’avion a touché le relief du sol ? • Est-ce que le personnage est contre le mur du couloir? • Est-ce que le boulet de canon a touché le bateau ? • …

  47. 5.1 Principe • Dans le cadre d’animation d’objets, on est confronté au problème des collisions entre ces objets. • Détection de collision • Déterminer quand et où deux objets se touchent. • Résolution de collision • Déterminer comment la collision affecte le mouvement des objets.

  48. 5.2 Détection de collision Pour détecter si deux objets sont entrés en collision, il faudrait vérifier si le volume de l’un intersecte celui de l’autre, en testant chacun de leurs triangles.  Très lourd en temps de calcul. 60000 triangles 5000 triangles

  49. Accélération de la détection de collision Il est nécessaire de mettre en œuvre des stratégies d’accélération de la détection de collision : - Partition de l’espace - Volumes englobant les objets On utilise souvent les deux simultanément.

More Related