par Vincent Sindt Université Joseph Fourier - Grenoble - Master Informatique 2004
Copyright (c) Vincent SINDT Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
Master 1ère année - Informatique
Animation d'un
personnage virtuel SINDT Vincent
Rapport de stage magistère
Université Joseph Fourier -
LaboratoireGRAVIR - Equipe Evasion
Responsable : François Faure
Remerciements A mon tuteur François Faure pour sa patience et sa disponibilité et qui m'apermis d'effectuer ce stage bien que je n'avais pas les prédispositions requisesn'ayant pas fait l'option infographie cette année et à l'équipe EVASION qui m'aacceuilli dans ses rangs.
Table des matières 1 Introduction......................................................................................................4
1.1 Présentation du laboratoire........................................................................4 1.2 Présentation du sujet..................................................................................4 2 Etat de l'art dans l'animation..........................................................................7
2.1 Animation dynamique.................................................................................7 2.2 Animation KeyFrame..................................................................................7
2.2.1 Capture de Mouvement......................................................................8 2.2.2 A la main.............................................................................................9
2.3 Le graphe de scène...................................................................................9 3 Travail réalisé.................................................................................................11
3.1 La problématique......................................................................................11 3.2 Prise en main...........................................................................................12
3.2.1 la plate forme d'animation : AnimAL.................................................12 3.2.2 Le logiciel de skinning.......................................................................13
3.3 Animation par squelette...........................................................................13
3.3.1 Interpolation de transformations.......................................................13 3.3.2 Déformation du maillage...................................................................14 3.3.3 Algorithme.........................................................................................15 3.3.4 Interface graphique...........................................................................16
3.4 Résultats...................................................................................................17 4 Conclusion et perspectives.........................................................................20
4.1 Perspectives.............................................................................................20
4.1.1 Accélération graphique.....................................................................20 4.1.2 modélisation du vêtement.................................................................20 4.1.3 collisions............................................................................................20
4.2 Conclusion................................................................................................20 A Le skinning....................................................................................................22Bibliographie.....................................................................................................24
1 Introduction 1.1 Présentation du laboratoire
Le laboratoire GRAVIR, situé à Montbonnot dans les locaux de l'INRIA est
un laboratoire travaillant dans les domaines de la synthèse d'image, de lavision et de la robotique. Il est spécialisé notamment dans les domainessuivants :
Réalité virtuelle et rendu d'image, interaction en environnement virtuel.
Modélisation 3D des images.
Mouvements et animations.
L'équipe EVASION (Environnements Virtuels pour l'Animation et la
Synthèse d'Images d'Objets Naturels) dans laquelle j'effectue le stage a étécréée le 1er janvier 2003. Elle regroupe cinq chercheurs ou enseignants-chercheurs permanents, onze étudiants en thèse et un ingénieur expert.Ses travaux de recherche sont dédiés à la modélisation, à l'animation, et à lavisualisation d'objets et de phénomènes naturels. Pour cela, deux grand axes de recherche sont privilégiés :
d'une part le développement d'outils fondamentaux destinés à la
spécification de scènes et objets naturels complexes, à la mise au point de modèles alternatifs pour la forme, le mouvement et l'apparence ainsiqu'à la conception d'algorithmes reposant sur un niveau de détailadaptatif pour gérer au mieux la complexité.
d'autre part la validation de ces outils sur des scènes naturelles
spécifiques, qui vont du monde minéral (océan, ruisseaux, lave, avalanches, nuages) au monde animal (simulation d'organes, visagescorps et chevelure d'un personnage, mouvements d'animaux), en passant pas les scènes végétales (morphogénèse de plantes, prairies,arbres). 1.2 Présentation du sujet
L'informatique d'aujourd'hui permet de produire des images d'une qualité
proche du réalisme et ce grâce à des ordinateurs de plus en plus performant capables d'effectuer en un temps raisonnable les calculs nécessaires à cetteélaboration.
Ces images peuvent être soient fixes soit animées. Et dans ce dernier cas,
du fait des contraintes imposées par le temps réel, un rendu à la fois réaliste visuellement c'est à dire suffisamment probant pour l'oeil humain et réalistedans son animation, avec des mouvement fluides et naturels, offre unchallenge à la fois complexe et intéressant mais aussi excitant. Dans divers domaines, et notamment celui du divertissement et du multimédia comme lejeux-vidéo, les personnages utilisés qui sont censés être recouverts de
vêtements ne sont modélisés que dans seul « bloc » : ceux-ci sont en général texturés c'est à dire que les polygones composant notre personnage sontcoloriés afin de représenter les éventuels habits qu'il porterait (cf. fig. 1.1).
Ce choix de représentation utilisé depuis des années à l'avantage de
n'être pas très coûteux en termes de calculs de polygones mais confère un rendu moyennement convaincant à notre modèle. C'est pour cela que pour lesprochaines années, il serait souhaitable de pouvoir habiller ces êtres virtuels avec des vêtements physiquement et graphiquement réalistes.
Fig 1.1 : Vêtements texturés sur un personnage de jeux-vidéo
L'animation d'un personnage virtuel habillé est un problème complexe mettant en jeu deux problèmes distincts, problèmes rencontrés fréquemment dans lemonde de l'animation :
tout d'abord il nécessite des modèles mécaniques complexes utilisés
dans le calcul des déformations du tissu (système masse-ressort)
ensuite, il introduit une détection et une gestion de collision qui peut
s'avérer coûteuse et nuire de manière significative à la qualité de l'animation.
Le but de ce stage était de rassembler les différentes techniques à notre
disposition au sein du labo pour pouvoir animer un personnage habillé sur la plate-forme d'animation AnimAL développée par François Faure. Dans lespremiers mois de mon stage, j'ai d'abord travaillé sur la modélisation etl'animation de vêtements à partir d'un patron 2D mais nous avons abandonné cette idée pour animer les vêtements autrement, en plaçant le maillage dansun syteme d'octree. Malheureusement, l'outil d'octree n'étant à l'heure actuelle
toujours pas disponible, je n'est pas pût mener à bien ces travaux. Mon travail a donc consisté à porter et améliorer sur la plate-forme un logiciel fourni basésur l'animation par squelette et le skinning (cf. Annexe A page 21).
Ce rapport de stage est organisé en trois parties :
la première introduira la notion d'animation et présentera différentes
techniques existantes ;
la seconde partie présentera le travail effectué ;
enfin, la dernière partie proposera un certain de nombre de perspectives
à notre système avant de conclure.
Fig. 1.2 : un personnage habillé d'un vêtement modélisé
2 Etat de l'art dans l'animation
Il existe différentes techniques d'animation 3D. Voici les 2 méthodes les
plus couramment utilisées dans l'animation. 2.1 Animation dynamique
Les objets sont animés par un comportement basé sur des lois physiques
(cf. exemple fig. 2.1) ou comportementales. Par exemple, un personnagetenant une épée, la lâche. La gravité s'appliquant sur cette épée fait qu'elle tombe sur le sol puisqu'aucune contrainte ne la retient. Précédemment, lagravité s'appliquait aussi mais la main du personnage empêchait l'épée detomber. Dans certains cas et notamment dans le domaine du jeux vidéo, il n'y a pas forcément besoin d'un comportement dynamique mais il suffituniquement de faire croire à ce comportement, de le rendre plausible. Ouencore, dans le cas de lois comportementales, on peux prendre l'exemple des fantômes dans « Pac-Man » qui n'ont pas un un animation basée sur de laphysique mais réagissent selon leur environnement.
x, m
x : position m : masse
a : gravité
v
x = x + h *v
i+1
i
i
où h la longueur de l'intervalle de
a
temps, x la position courante et v la
i
i
vitesse courante
Trajectoire théorique
Trajectoire calculée ( théorique)
Fig. 2.1 : Animation d'une sphère un chute libre avec une
vitesse initiale, basée sur des lois physiques 2.2 Animation KeyFrame
Le principe de ce type d'animation est simple. Il suffit de positionner dans
l'espace des éléments les uns par rapports aux autres, et cela d'une manière chaque fois différente à des instants donnés. Chaque positionnementcorrespond à un point clef, visualisable sur une ligne temporelle (cf fig. 2.2).Le rendu final consistera alors à calculer chaque image de l'animation (aurythme de 25 images par seconde par exemple) et pour cela il faut définir les positions intermédiaires entre les points clefs.
t
Fig. 2.2 : Positions clefs d'une sphère
Il est possible de créer les KeyFrame selon 2 techniques différentes. 2.2.1 Capture de Mouvement
Dans la capture de mouvement, on utilise un acteur pour récupérer ses
mouvements. Pour ceci, on va disposer sur lui des capteurs (cf. fig. 2.3). Puis on va utiliser une méthode pour récupérer les mouvements de ces capteurs etles transcrire dans notre format d'animation. Il nous faut pour cela disposerd'un modèle 3D avec un mesh (maillage) et un squelette. C'est sur le squelette que nous allons localiser les points auxquels correspondent les capteurs del'acteur de manière à répercuter les mouvements de celui-ci sur le squelette du modèle 3D.
Les mouvements des capteurs sont retranscrits sous forme de keyframes.
Ce type d'animation nécessitant de gros moyens et une technologie que nous n'avions pas à notre disposition, ce n'est pas cette méthode qui a été retenue.Elle est néanmoins très utilisée dans les jeux-vidéo actuellement car ellepermet de rendre le plus fidèlement possible des mouvements complexes qu'il serait très difficle de réaliser « à la main ».
Fig. 2.3 : une séance de Capture de Mouvement
2.2.2 A la main
L'utilisateur définit lui même les positions clefs de l'animation. Cela permet
de garder la maîtrise de celle-ci et offre la possibilité de reproduire n'importequel mouvement. On peut ainsi créer des animations inédites ou farfelues mais on peut également les faire réalistes, le choix est laissé au bon vouloir del'animateur. Pour animer notre personnage, on peut ainsi utiliser 2 solutions :
l'animation par squelette, qui consiste à déformer le maillage de la peau
suivant les différentes positions du squelette ;
la déformation du maillage, où on connait la disposition du maillage à
chaque position clef.
Cette dernière méthode nécessite un grand nombre de positions clefs si l'on veut avoir un mouvement correct. Nous avons donc choisi la première méthodecar elle impose moins de contraintes : il suffit de donner les positions clefs desos.
Avant de parler du travail effectué, je vais présenter les problèmes
auxquels j'ai été confronté au départ. Pour cela il faut que j'introduise la notionde graphe de scène. 2.3 Le graphe de scène
Le graphe de scène permet d'organiser les éléments d'une scène 3D sous
forme d'une structure hiérarchique (cf. fig. 3.1). Chaque noeud de l'arbrereprésente un de ces éléments contribuant à la scène. Par exemple, pourmodéliser un système solaire, la position d'une planète va dépendre de celle de l'étoile centrale, de même que les transformations appliquées à la planètedoivent être répercutées sur d'éventuels satellites. Cet héritage depositions/transformations sous-entend une relation hiérarchique entre lesobjets d'où l'intérêt d'un graphe de scène.
Scène
Transformation
Maillage
Corps
Transformation Transformation Transformation Transformation
Bras Gauche
Bras Droit
Jambe Gauche Jambe Droite
Fig. 3.1 : schéma simple d'un graphe de scène
De par sa définition, une transformation effectue un changement de
repère. Le nouveau repère, (O',x',y',z'), s'obtient en appliquant latransformation au repère d'origine (O,x,y,z). Dans l'exemple de la figure 3.2 (a),un cube est défini dans le repère bleu issu de la composition de 2transformations : une rotation d'angle a qui nous donne le repère (O,x',y') puisune translation de longueur le rayon du cercle et de direction -l'axe des Y ce qui nous donne le repère (O,x'',y''). Dans l'exemple de la figure 3.3 (b), lerepère vert est résultat d'une composition de 2 autres transformations : leprécedent repère (O,x'',y'') est translaté selon l'axe des X d'une longueur de2*le rayon du cercle puis il subit une rotation d'angle b et l'on obtient le repère(O,x''' ,y''' ). Lorsque l'on effectue une transformation (rotation, translation...),les coordonnées de tout nouvel objet sont définies dans le nouveau repèreobtenu. Il est donc important d'effectuer les transformations dans le bon ordre.Dans les exemples précédents, en inversant une translation avec une rotation, on obtient des résultats différents.
Les calculs des matrices des transformations sont souvent fastidieux mais
heureusement dans X3DTK, il existe des fonctions permettant de les réaliser facilement : il suffit de donner la translation suivant un vecteur et la rotationd'angle a autour d'un axe.
x"
x'
y" a
x
x
x'''
x"" b
y'
y
y
y' '
y""
(a) une rotation puis une translation
(b) une translation puis une rotation
Fig. 3.2 : rotation de 2 carrés autour d'un point dans le plan
Le graphe de scène est donc un arbre dont les noeud sont des compositions
de transformations : chaque transformation est la composition d'une translation et d'une rotation.
3 Travail réalisé 3.1 La problématique
Nous avons donc choisi d'animer notre personnage selon la méthode dites
de l'animation par squelette.On dispose d'un squelette animé par KeyFrame, c'est à dire une hiérarchie de transformations appliquées aux os du squelette àdes instants donnés et d'un maillage représentant la peau de notrepersonnage. La fig. 3.1 est une représentation simplifiée du graphe de scène correspondant. On se rend compte que le maillage ne connait pas les donnéesdu squelette donc lorsque il y a animation de ce dernier, le maillage ne suivra pas la déformation (cf. fig. 3.3).
Point du maillage
articulaton
Fig. 3.3 : animation du squelette sans déformation du maillage
L'idée est de rajouter un noeud « englobant » qui permet d'échanger les
données entre les différentes positions du squelette et le maillage pour quecelui-ci se déforme en suivant l'animation du squelette : c'est leCharacterNode. De plus pour avoir une animation fluide, il faut calculer lespositions des os entre les points clefs : c'est ce qu'on appelle l'interpolation.Pour chaque transformation, j'ai donc rajouté des noeuds qui effectuent cescalculs : ce sont les KeyFrameNode. On obtient la structure de graphe descène de la figure 3.4.
Scène
CharacterNode
Transformation
Maillage
Corps
KeyFrameNode
Transformation Transformation
Bras Droit
BrasJauche
KeyFrameNode
KeyFrameNode
Fig. 3.4 : schéma du graphe de scène final
3.2 Prise en main 3.2.1 la plate forme d'animation : AnimAL
AnimAL est une librairie d'animation écrite en C++ fournissant des outils
et des algorithmes pour l'animation. Cette librairie a pour but de mutualiser lestravaux menés dans l'équipe et de les rendre aisément ré-utilisables. Les outilsdisponibles sont :
Une interface graphique utilisateur ou GUI (Graphic User Interface)
basée sur la librairie Qt, une librairie standard de création de GUIC++, qui permet de contrôler notre animation via le réglage de divers paramètres.
Un viewer qui nous permet de visualiser notre animation.
Un format d'entrée-sortie de notre animation basé sur le format X3D
et fournissant un éditeur simple de graphe de scène.
Elle a été développée pour fonctionner sous le système d'exploitation Linux et a été portée depuis peu sous Windows.
Je me suis plongé dans la documentation accessible depuis internet et j'ai
commencé à étudier un exemple déjà existant pour me familiariserconcrètement avec les différentes possibilités offertes par AnimAL.Programmée en C++, et bien qu'ayant suivi des cours de programmation objet au cours de ma scolarité (mais en Java) et de C, il m'a fallu me documenterquelque peu sur les subtilités du langage C++. J'ai donc consulté des ouvrages sur le sujet [C++] aimablement prétés par mon tuteur François ainsi que dessites consacrés au C++.
Fichier au format X3D
Charger/sauver
Interface
la scène
utilisateur
Affichage
Calcul de
Graphe
l'animation
de scène
Fig. 3.5 : Architecture de AnimAL
L'architecture de la plate-forme est structurée autour du X3D ToolKit, unebibliothèque développée par Yannick Le Goc permettant de charger, d'afficher et d'animer des modèles X3D. X3D est un nouveau format de fichiers 3D. Il estextensible c'est à dire que l'on peut facilement lui rajouter de nouvellescaractéristiques, ce qui permet de créer des modèles de données
correspondant au plus près à ce que l'on désire. Il est le fruit du travail duweb3d consortium [WEB3D].
Le X3DToolKit a été conçue pour faciliter le travail des développeurs 3D. Il
permet de travailler efficacement sur le graphe de scène, élément important dans l'animation d'objets 3D (cf. §3.1 page 9).
3.2.2 Le logiciel de skinning
Ce logiciel a été développé par Benjamin Rouveyrol [Rou04] dans le cadre
d'un stage au sein de l'entreprise Virtual Actors. Il s'articule autour du principede skinning (cf. §A page 18) : il calcule automatiquement les poids des« vertices » nécessaires à la détermination du maillage durant l'animation.Développé pour Windows, il a fallu dans un premier temps le porter sous Linux. Bénéficiant des codes sources, il ne m'a pas été nécessaire d'étudier enprofondeur le code. J'ai remodelé quelques fichiers (notamment le « main ») et fabriqué un Makefile pour faciliter la compilation sous Linux. Une fois que j'aiobtenu un programme se compilant et s'exécutant, je l'ai introduit dansAnimAL. Ce dernier ayant été conçu pour pouvoir réaliser ce type d'opération, cela s'est passé très facilement.
La structure des fichiers utilisée par Benjamin étant assez particulière, il
m'a fallu l'adapter au format X3D et à ma structure de graphe de scène. On obtient donc un fichier constitué ainsi :
une (ou plusieurs) forme représentant le maillage à animer
une hiérarchie de transformation permettant d'animer le squelette
Le noeud « CharacterNode » du graphe de scène permettant de faire
le lien entre le squelette et le maillage. 3.3 Animation par squelette
Nous disposons donc d'un squelette animé par KeyFrame et d'un maillage.
Pour obtenir une animation correcte, il faut affiner l'animation du squelette etdéformer le maillage selon cette animation : c'est l'animation par squelette. 3.3.1 Interpolation de transformations
Les positions clefs des os sont contenues dans le fichier X3D mais c'est le
logiciel d'animation qui est chargé d'effectuer le calcul des positionsintermédiaires : c'est ce que l'on appelle l'interpolation. Comme il n'existaitdans AnimAL qu'un outil permettant l'interpolation de points et qu'il nous fallaitinterpoler des noeuds de transformation, j'ai donc réalisé la partie effectuantcette application. La formule pour calculer la position du point P entre 2positions clefs P1 et P2 dans une translation est :
P = P1 + a (P2 P1)
où a est incrémenté à chaque pas de temps.
Pour les rotations, c'est la meme chose. Il faut juste savoir que l'on travaille
avec des angles d'Euler (composition de 3 rotations autour des axes du repère) dans notre fichier chargé et il faut les convertir car la transformation rotationdans X3DTK est de forme « axe-angle ». AnimAL fournit les outils permettant cette convertion grâce aux quaternions.
Z
ZZ'
X
XY'
Y
X'
Y
Fig 3.6 : angle d'Euler
90° selon l'axe Z et 45° selon l'axe Y
On met à jour les valeurs des angles d'Euler puis on converti sous forme de donnéee « angle-axe » grâce aux quaternions.
3.3.2 Déformation du maillage
Maintenant que notre squelette est correctement animé, il faut à présent
déformer notre maillage représentant « la peau » de notre personnage. Celle-ci va se déformer selon la position des différents os du squelette. La formule de ladéformation d'un point s'exprime ainsi :
P
-1
final = Mcourant * Mrepos * Pinitial
Pinitial est la position dans le repère monde du point du maillage quand ce
dernier est au repos.
M
-1
repos est la matrice associée à un os qui permet de passer d'un point
du monde dans les coordonnées locales à l'os. En réalisant lamultiplication matrice-vecteur M
-1
repos * Pinitial, on obtient notre point au
repos dans les coordonnées de notre joint.
Mcourant est la transformation actuelle de l'os et permet de passer du
repère de l'os au repère monde. En l'appliquant à notre point« intermédiaire » précédant, on obtient le point Pfinal désiré (cf. fig. 3.7).
Une première approche pour un novice de l'animation 3D constituerait à
associer un seul os à chaque point du maillage, une solution qui paraît simple et évidente. Mais lors de certains mouvements, les limites de cette méthodeapparaissent très rapidement car on peut constater des enchevetrements de polygones au niveau des articulations, ce qui donne des mouvementsvisuellement peu esthétiques (cf. fig A.4 page 22).
maillage
Repère Local
P
M
-1 * P
initial
repos
initial
Repère Monde
Repère Monde
Repère Local
Pfinal
Repère Monde
Repère Monde
Fig 3.7 : déformation du maillage par squelette
Cette méthode est depuis remplacée par celle dite du « skinning » : la
position d'un point est determinée non pas par un seul os mais par plusieurs avec une certaine pondération (cf. Annexe A page 21 pour plus de détails). Onobtient donc ainsi une déformation plus souple au niveau des articulations. 3.3.3 Algorithme
Le noeud englobant situé au sommet du graphe de scène se charge de
parcourir la hiérarchie de transformations une fois les calculs effectués. Ilconnait ainsi les nouvelles positions des os. Grâce à ces données et auxfonctions et méthodes développées par B. Rouveyrol, le nouveau maillage est calculé puis l'affichage est mis à jour. Pour cela, il doit connaitre les poids dechaque point en fonction des repères des os. Il y'a plusieurs façon de d'obtenirces poids :
ils peuvent être chargés à partir du fichier X3D au moment de sa
lecture ;
ils peuvent être calculés dans une phase d'initialisation précédent
l'animation.
Algorithme Animation par squelette
//initialisation lecture du fichier X3DTK initialisation des données (os, maillage, poids...)
//lancement de l'animation à chaque pas de temps {
Pour chaque noeud Transform {
interpolation de sa position en fonction de son père
}
Calculer les matricesVersMonde du squelette selon les paramètres des os Pour chaque point p {
PositionFinale=0 Pour chaque os i influençant p {
pLocal=(matriceRepos(i))^-1 * pRepos positionFinale+=poids(i,p)*(matriceVersMonde(i))*pLocal
}
}
Affichage
} 3.3.4 Interface graphique
J'ai également réalisé une interface qui permet de modifier des paramètres au
cours de l'animation ou d'afficher des données qui peuvent s'averées utilespour l'utilisateur (cf. fig. 3.8). Elle est accessible en cliquant sur le noeud« englobant » du graphe (noeud chargé de faire les échanges de donnéesentre le squelette et le maillage). L'interface permet de modifier plusieursparamètres :
interpolation ou non des KeyFrame ;
affichage du squelette
informations sur les vertex (ses coordonnées, quels os ont une influence
et degré de cette influence) ;
paramètres d'affichage, etc...
Fig. 3.8 : interface de l'animation par squelette 3.4 Résultats
Notre travail nous permet de déformer n'importe quel maillage suivant un
squelette. Il suffit de connaître les keyFrame du squelette et de posséder un maillage de départ pour pouvoir réaliser n'importe qu'elle animation. La figure3.9 montre un maillage existant auqel j'ai ajouté un squelette très simple animé.Le maillage se deforme suivant le squelette. Dans le cas d'un personnage (cf. fig. 3.11), une animation interpolée est très lente et donne un résultatmoyennement satisfaisant. De plus des problèmes dus aux angles d'Euler font apparaître des positions pour le moins incongrues. Néanmoins ce problèmepeut être résolu aisément à l'aide de tests afin de calculer la valeur correcte quidoit être utilisée pour l'animation.
En comparant aussi avec une animation par déformation du maillage, on
se rend compte qu'il y a besoin de moins de positions clefs pour l'animation parsquelette à fin d'obtenir un résultat correct.
(a) Dino initial
(b) Dino après déformation du maillage
Fig. 3.9 : déformation d'un maillage quelconque
Fig3 3.10 : animation d'un bras articulé
(a) problèmes de rotations
(b) limites du skinning
Fig. 3.9 : défauts apparants
4 Conclusions et perspectives 4.1 Perspectives 4.1.1 Accélération graphique
Actuellement, les nouvelles cartes graphiques permettent de faire du
skinning. Cet outil matériel permet de soulager le CPU dans ses calculs et est même plus rapide (20 à 30%), ce qui permettrait de gagner en fluidité dansl'animation, notamment de scènes contenant beaucoup d'informations. Dansun futur proche, il serait donc intéressant de « porter » le code sur le skinningafin d'utiliser les capacités des cartes graphiques. 4.1.2 modélisation du vêtement
Notre première approche sur la modélisation du vêtement était basée sur
un système de masse-ressort. Le vêtement était constitué de triangles dont les sommets correspondaient aux masses et les arètes aux ressorts. On sait déjàque ce type de technique offre des résultats très satisfaisants. Néanmoinsnous avions mis cette idée de côté pour utiliser une modélisation volumique du vêtement : celui est défini dans un octree qui sera déformé pour obtenir notreanimation. Cette méthode n'a pas encore fait l'objet de nombreuses recherches et peut s'avérer intéressante dans le cadre de notre sujet.
4.1.3 collisions
Une fois le vêtement modélisé et le personnage réalisé, il faut animer le
tout. Il faut fonc que le vêtement se déforme en fonction de l'état dupersonnage : c'est la détection de colision. Il en existe plusieurs techniques.Dans un premier temps on ne pourrait que se concentrer sur les collisionspersonnage-vêtement et ensuite, on pourrait rajouter de l'auto-collision sur le vêtement. Ce type de techniques sont le plus souvent coûteuses et peuventdonc nuire à la qualité de l'animation. Il faudrait étudier les différentesméthodes à notre disposition afin de chosir celle qui offre le meilleurcompromis entre une faible utilisation des ressources et une facilitéd'adaptation à notre système. 4.2 Conclusion
A la fin de ce stage, l'objectif de réaliser une animation d'un personnage
virtuel habillé dans AnimAL n'a pas put être atteint. Néanmoins il est désormaispossible d'animer n'importe quel maillage à partir d'un squelette.
Le travail réalisé ici n'est pas forcément un travail de recherche. Il
s'agissait essentiellement d'utiliser des techniques déjà existantes et de lesintégrer les unes aux autres afin d'obtenir le résultat souhaité. Néanmoins j'ai
put évoluer au cours de ces mois de stage au sein d'un laboratoire derecherche et j'ai put me rendre compte des méthodes de travail et des moyens existants au sein de la recherche. Ce stage m'a permis aussi d'approfondirquelque peu mes connaissances du monde informatique et d'en découvrir de nouvelles facettes, notamment du monde de la 3D.
Annexes A Le skinning
Les points de la peau sont attachés aux différents os du squelette. Ils
subissent donc une combinaison pondérée de transformations.
Position des points avant pliure
(1,0)
(.75,.25
(.5,.5)
(.25,.75
(0,1)
p
q
r
s
t
Fig. A.1 : les points au repos
Formule de calcul du nouveau point :
Où T est la transformation appliquée au point p selon le repère i
Chaque point de la peau est situé dans le repère local d'un os. Lors de la transformation d'un os, le point va lui aussi subir une transformation. Pourcalculer le nouveau point final obtenu, on va utiliser la formule de skinning avecles différents poids que l'on aura associés à chaque point suivant le repère dans lequel on est.
p1
t2
q1
s2
r2
r1
q2
s1
p2
t1
Fig. A.2 : les points dans les reperes
p
t
q
s
r
Fig. A.3 : le maillage avec skinning/sans skinning
Un comparatif entre une déformation avec skinning et une déformation sans skinning :
sans skining
avec skinning
Fig. A.4 : Difference entre une déformation normale
et une déformation avec skinning
Références
[Rou04] Benjamin Rouveyrol. Animation skinnée par sémantique d'articulation.
Virtual Actors, 2004
[Blo02] Jules Bloomenthal. Medial-Based Vertex Deformation. Unchained
Geometry, Inc., 2002.
[KNF04] Stefan Kimmerle, Matthieu Nesme and François Faure. Hierarchy Accelerated Stochastic Collision Detection. EUROGRAPHICS, 2004.
[C++] Nell Dale, Chip Weems, Mark Headington. Programming and Problem Solving with C++, second edition. Jones and bartlett Publishers, 2000.
[AnimAL] http://www-evasion.imag.fr/Membres/Laure.Heigeas/AnimAL/doc/
[WEB3D] Open Standards for Real-Time 3D Communication :
http://www.web3d.org/
[X3DTK] X3DToolKit Homepage :
http://artis.imag.fr/Members/Yannick.Legoc/X3D/index.html
[Info] Infographie : http://raphaello.univ-fcomte.fr/IG/
GNU Free Documentation License Version 1.2, November 2002
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
0. PREAMBLE
The purpose of this License is to make a manual, textbook, or otherfunctional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it,with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a wayto get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivativeworks of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleftlicense designed for free software.
We have designed this License in order to use it for manuals for freesoftware, because free software needs free documentation: a free program should come with manuals providing the same freedoms that thesoftware does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter orwhether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
1. APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work, in any medium, thatcontains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants aworld-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below,refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if youcopy, modify or distribute the work in a way requiring permission under copyright law.
A "Modified Version" of the Document means any work containing theDocument or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section ofthe Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject(or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part atextbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historicalconnection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regardingthem.
The "Invariant Sections" are certain Secondary Sections whose titlesare designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If asection does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zeroInvariant Sections. If the Document does not identify any Invariant Sections then there are none. The "Cover Texts" are certain short passages of text that are listed,as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text maybe at most 5 words, and a Back-Cover Text may be at most 25 words.
A "Transparent" copy of the Document means a machine-readable copy,represented in a format whose specification is available to the general public, that is suitable for revising the documentstraightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely availabledrawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for inputto text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwartor discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amountof text. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGMLor XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples oftransparent image formats include PNG, XCF and JPG. Opaque formats
include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/orprocessing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some wordprocessors for output purposes only.
The "Title Page" means, for a printed book, the title page itself,plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works informats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title,preceding the beginning of the body of the text.
A section "Entitled XYZ" means a named subunit of the Document whosetitle either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for aspecific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title"of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These WarrantyDisclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any otherimplication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.
2. VERBATIM COPYING
You may copy and distribute the Document in any medium, eithercommercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License appliesto the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not usetechnical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may acceptcompensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies.
3. COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly haveprinted covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose thecopies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts onthe back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must presentthe full title with all words of the title equally prominent and visible. You may add other material on the covers in addition.Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treatedas verbatim copying in other respects.
If the required texts for either cover are too voluminous to fitlegibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacentpages.
If you publish or distribute Opaque copies of the Document numberingmore than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copya computer-network location from which the general network-using public has access to download using public-standard network protocolsa complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps,when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the statedlocation until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of thatedition to the public.
It is requested, but not required, that you contact the authors of theDocument well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
4. MODIFICATIONS
You may copy and distribute a Modified Version of the Document underthe conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the ModifiedVersion filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copyof it. In addition, you must do these things in the Modified Version:
A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document.E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License.I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.
O. Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections orappendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or allof these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice.These titles must be distinct from any other section titles.
You may add a section Entitled "Endorsements", provided it containsnothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text hasbeen approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the listof Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (orthrough arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you orby arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicitpermission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this Licensegive permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
5. COMBINING DOCUMENTS
You may combine the Document with other documents released under thisLicense, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of theInvariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in itslicense notice, and that you preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, andmultiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name butdifferent contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the originalauthor or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled"History"; likewise combine any sections Entitled "Acknowledgements",and any sections Entitled "Dedications". You must delete all sectionsEntitled "Endorsements".
6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of thisLicense in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License forverbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distributeit individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in allother respects regarding verbatim copying of that document.
7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage ordistribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rightsof the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does notapply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half ofthe entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or theelectronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the wholeaggregate.
8. TRANSLATION
Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section 4.Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may includetranslations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include atranslation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also includethe original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement betweenthe translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserveits Title (section 1) will typically require changing the actual title.
9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document exceptas expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and willautomatically terminate your rights under this License. However, parties who have received copies, or rights, from you under thisLicense will not have their licenses terminated so long as such parties remain in full compliance.
10. FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versionsof the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but maydiffer in detail to address new problems or concerns. See http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of thisLicense "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version orof any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a versionnumber of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.
"Et il n'est rien de plus beau que l'instant qui précède le voyage, l'instant ou l'horizon de demain vient nous rendre visite et nous dire ses promesses"Milan Kundera