soutenance de ter encadrant : eric languénou jeudi 2 juin 2005
DESCRIPTION
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 - PowerPoint PPT PresentationTRANSCRIPT
Soutenance de TEREncadrant : 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é
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 existant2- Schéma général de Soap3- 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
Interfacegraphique
FichierXML
FichierPOV
Moteur deSOAP
Rendu dela 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
I- Présentation du travail demandé
II- Principes de fonctionnement1- Parser XML2- Passage de la 2D à la 3D3- Passage de la 3D à l'animation
III- Exemples et analyse de séquences animées
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>
...
Regroupe l'ensemble des informations
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>
...
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>
Synchronisation entre deux personnages uniquement
Deux types de synchronisation disponibles
« arrivée »
« départ »
Exemple de spécification du mouvement de la caméra :
Uniquement des mouvements panoramiques
II1- Parser XML : la caméra (1)
... <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>
II1- Parser XML : la caméra (2)
Le ratio de l’image est fixe
Position 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)
)tan(..
)tan(..
)tan(.
yyZY
xxZX
xr
RZ
Rayon de la sphère englobante du personnage
Rayon du disque englobant du point
de passageOuverture 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 msEND 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
Linéaire
Nurbs
Utilisation des points clés
Méthode de globale interpolation
Trajectoire moins saccadée
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
I- Présentation du travail demandé
II- Principes de fonctionnement
III- Exemples et analyse de séquences animées
1) Analyse du processus d’animation2) Exemples de séquences
III1- Analyse du processus d’animation
Story-board
III1- Analyse : Du fichier XML à la 3D
FichierXML
Soap2D
parser
Soap3DSoap
Interpolation
Realpaver
Génération de fichiers POV
SoapContraintes
III1) Analyse : Nurbs associées :
Courbe de la vitesse du premier personnage
point1
point2
point3
point4
point5
Accélération jusqu’à la vitesse de marche
III1) Analyse : fichiers POV-Ray
#version 3.1global_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 ?