Soutenance de TER Encadrant : Eric Languénou jeudi 2 juin 2005 SOAP GOURAUD Benjamin, GUITTENY...

Preview:

Citation preview

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 ?

Recommended