WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Animation d'un personnage virtuel


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'a permis 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....................................................................................................22 Bibliographie.....................................................................................................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)
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.





Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"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