Soutenance de TER Encadrant : Eric Languénou jeudi 2 juin 2005 SOAP GOURAUD Benjamin, GUITTENY Fabrice, PERE Sabine Master 1 informatique
Introduction (1) Idée originale : mouvements de caméras souvent limités des Soap-opéras Outil simple et rapide pour créer des séquences animées S'inspire des storyboards de films pour décrire une scène Scènes réalistes du point de vue des mouvements des personnages et de caméra
Introduction (2)
Plan Général I- Présentation du travail demandé 1) Travail demandé et existant 2) Schéma général de Soap 3) Organisation et découpage du travail II- Principes de fonctionnement 1) Parser XML 2) Passage de la 2D à la 3D 3) Passage de la 3D à l'animation III- Exemples et analyse de séquences animées 1) Description de fichiers XML 2) Étude du fichier de contraintes 3) Analyse des NURBS utilisées 4) Intégration vers POV-Ray 5) Animation de la séquence
Plan Général I- Présentation du travail demandé II- Principes de fonctionnement III- Exemples et analyse de séquences animées
Plan Général I- Présentation du travail demandé 1- Travail demandé et existant 2- Schéma général de Soap 3- Organisation et découpage du travail II- Principes de fonctionnement III- Exemples et analyse de séquences animées
I1- Travail demandé et existant Langage utilisé : C++ Travail demandé : moteur du logiciel Non demandé : interface graphique Existant : plusieurs applications
I2- Schéma général Interface graphique Fichier XML Moteur de SOAP POV Rendu de la scène
I3- Organisation et découpage du travail Définition des spécifications du fichier XML et réalisation d'un parser Intégration des données dans la structure Soap2D Exportation vers la structure Soap3D Calculs de projections vers la 3D Utilisation d'un solveur de contraintes Utilisation de NURBS Génération de fichiers POV Interprétation de la structure 3D Calcul des images Création de l'animation
Plan Général II- Principes de fonctionnement I- Présentation du travail demandé II- Principes de fonctionnement 1- Parser XML 2- Passage de la 2D à la 3D 3- Passage de la 3D à l'animation III- Exemples et analyse de séquences animées
II1- Parser XML : la scène Regroupe l'ensemble des informations <?xml version="1.0" encoding="ISO-8859-1"?> <scene> <nom>scene1</nom> <ouverturex>12</ouverturex> <ouverturey>33</ouverturey> <plan> <a>12</a> <b>15</b> <c>18</c> <d>0</d> </plan> ...
II1- XML : les personnages <perso nom="jeannot" taille="1" couleur="255 50 100"> <pointspassages> <pt x="0" y="0" r="0.02"> <deplacement> <allure>marche</allure> <tete>10</tete> <corps>30</corps> </deplacement> </pt> <pt x=“0.5" y=“0.5" r=“0.08"> <allure>course</allure> <tete>15</tete> <corps>15</corps> </pointspassages> ...
II1- XML : les synchronisations Synchronisation entre deux personnages uniquement Deux types de synchronisation disponibles « arrivée » « départ » <synchro> <synpt pers1="jeannot" numpt1="0" typsync1="arrivee" pers2="pierrot" numpt2="1" typsync2="arrivée"/> <synpt pers1="pierrot" numpt1="1" typsync1="depart" pers2="jeannot" numpt2="2" typsync2="départ"/> </synchro>
II1- Parser XML : la caméra (1) Exemple de spécification du mouvement de la caméra : Uniquement des mouvements panoramiques
II1- Parser XML : la caméra (2) ... <camera x="0.5" y="0.5" ratio=“1.33"> <pointcamera> <pos theta="10" phy="30"> <ouvx>0</ouvx> <ouvy>23</ouvy> </pos> <pos theta="50" phy="20"> <ouvx>10</ouvx> <ouvy>20</ouvy> </pointcamera> <synchrocam> <syncampt pers="jeannot" poscam="2" pospers="1" typsync="arrivée"/> <syncampt pers="pierrot" poscam="4" pospers="4" typsync="départ"/> </synchrocam> </camera> </scene> Position fixe Le ratio de l’image est fixe Points de passage : 2 angles et zoom (en fonction de l’ouverture en x et en y)
II2- Passage de la 2D à la 3D Calcul du point 3D (X,Y,Z) à partir du point 2D (x,y) Rayon de la sphère englobante du personnage Rayon du disque englobant du point de passage Ouverture horizontale Ouverture verticale
II2- 2D en 3D : Solveur de Contraintes Solveur utilisé : Realpaver Principe : En entrée : un fichier texte contenant le CSP (système de contraintes) Les constantes Les variables et leur domaine Le système de contraintes En sortie : un fichier texte contenant les résultats
II2- 2D en 3D : solveur de Contraintes, II2- 2D en 3D : solveur de Contraintes, exemple de fichier de contraintes Constants p00_arriv=0, p00_p01=31.5636, p01_p02=3.79875, p02_p03=1.2, p03_p04=1.2; Variables p00_dep in [0,+oo[, p01_dep in [0,+oo[, p01_arriv in [0,+oo[, p02_dep in [0,+oo[, p02_arriv in [0,+oo[, p03_dep in [0,+oo[, p03_arriv in [0,+oo[, p04_arriv in [0,+oo[; Constraints p00_dep>=p00_arriv, p01_arriv=p00_dep+p00_p01, p00_dep=p00_arriv, p01_dep>=p01_arriv, p02_arriv=p01_dep+p01_p02, p01_dep=p01_arriv, p02_dep>=p02_arriv, p03_arriv=p02_dep+p02_p03, p02_dep=p02_arriv, p03_dep>=p03_arriv, p04_arriv=p03_dep+p03_p04, p03_dep=p03_arriv;
II2- 2D en 3D : solveur de Contraintes, II2- 2D en 3D : solveur de Contraintes, exemple de fichier de résultats RealPaver v. 0.4 (c) LINA 2004INITIAL BOX p00_dep in [0 , +oo[ p01_dep in [0 , +oo[ p01_arriv in [0 , +oo[ p02_dep in [0 , +oo[ p02_arriv in [0 , +oo[ p03_dep in [0 , +oo[ p03_arriv in [0 , +oo[ p04_arriv in [0 , +oo[ OUTER BOX 1 p00_dep = 0 p01_dep in [31.5636 , 31.5636] p01_arriv in [31.5636 , 31.5636] p02_dep in [35.36234999999999 , 35.36235000000001] p02_arriv in [35.36234999999999 , 35.36235000000001] p03_dep in [36.56234999999999 , 36.56235000000001] p03_arriv in [36.56234999999999 , 36.56235000000001] p04_arriv in [37.76234999999998 , 37.76235000000001] precision: 2.84e-14, elapsed time: 0 ms END OF SOLVING Property: reliable process (no solution is lost) Elapsed time: 0 ms
II2- 2D en 3D : Interpolation avec les NURBS But : rendre les trajectoires des personnages plus élégantes, fluides et réalistes Prendre en compte les accélérations et décélérations lors d'un changement d'allure Adoucir les rotations du corps et de la tête Accentuer la fluidité des mouvements de caméra et du zoom
II2- 2D en 3D : Linéaire vs Nurbs Utilisation des points clés Méthode de globale interpolation Trajectoire moins saccadée Nurbs Linéaire
II2- 2D en 3D : Interpolation Réalisée à la manière d'une boîte noire Autonome du reste du logiciel Soap Réutilisation possible pour d'autres applications
II2- 2D en 3D : Utilisation des Nurbs (1) Exemple : Interpolation de la vitesse
II2- 2D en 3D : Utilisation des Nurbs (2) Autre interpolations : Angle du corps Angle de la tête Angles de rotation de la caméra Zoom
II3- Passage de la 3D à l'animation Calcul de la durée totale de la scène Itération sur le temps Toutes les n secondes, génération d’un fichier POV Récupération des informations à l’aide de l’interpolation POV vers PNG (POV-Ray) Animation
Plan Général III- Exemples et analyse de séquences animées I- Présentation du travail demandé II- Principes de fonctionnement III- Exemples et analyse de séquences animées 1) Analyse du processus d’animation 2) Exemples de séquences
III1- Analyse du processus d’animation Story-board
III1- Analyse : Du fichier XML à la 3D parser Soap2D Realpaver Soap Contraintes Soap3D Soap Interpolation Génération de fichiers POV
III1) Analyse : Nurbs associées : Courbe de la vitesse du premier personnage point3 point5 point2 point4 point1 Accélération jusqu’à la vitesse de marche
III1) Analyse : fichiers POV-Ray #version 3.1 global_settings { assumed_gamma 2.2 } #include "colors.inc" #include "textures.inc" #include "skies.inc" #include "bonhomme.inc" camera {up <0.0, 1.0, 0.0> right <1.33, 0.0, 0.0>location <0,0,0> angle 90 rotate <0,0,0> rotate <0,0,0>} sky_sphere { S_Cloud1 } light_source {<10,11,12> color rgb<255,255,255>/255} plane { <0, 1, 0>, -30 texture { Yellow_Pine scale 100 } } #declare bob=dessine_bonhomme( rgb<255,50,100>/255,10.5715); object { bob scale 0.5 rotate <0,10,0> translate <-37.7578,-30,108.046> } #declare franz=dessine_bonhomme( rgb<70,234,255>/255,-5.94179); object { franz scale 0.5 rotate <0,-9,0> translate <5.55556,-30,15.8976> }
III1) Analyse : Animation
III2) Exemple - 1 Synchronisation deux personnages
III2) Exemple - 2 Synchronisation deux personnages
III2) Exemple - 3 Allures différentes
III2) Exemple - 4 Mouvements de caméra : panoramique horizontal
III2) Exemple - 5 Mouvements de caméra : panoramique vertical
III2) Exemple - 6 Plusieurs points de synchronisation
Conclusion : futures extensions Interface graphique ( OpenGL, Java3D, ...) Mouvements caméras plus complexes comme les travellings Doublage sonore Étoffer la scène avec des objets (problème de collisions) Effets spéciaux, flou de focale
Flou de focale (1)
Flou de focale (2)
Des questions ?