400 likes | 530 Views
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
E N D
Soutenance de TEREncadrant : EricLanguénoujeudi 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
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 deSOAP Fichier POV Rendu de la scène
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 I3- Organisation et découpage du travail
Plan Général 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
Regroupe l'ensemble des informations II1- Parser XML : la scène <?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 <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"> <deplacement> <allure>course</allure> <tete>15</tete> <corps>15</corps> </deplacement> </pointspassages> ...
Synchronisation entre deux personnages uniquement Deux types de synchronisation disponibles « arrivée » « départ » II1- XML : les synchronisations <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> </pos> </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, 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, 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
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 : Interpolation
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 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 Fichier XML 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> }
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