Animation/fr

Une animation dans Second Life est un jeu d’instructions qui permet à un avatar d’enchaîner une séquence de mouvements.
Vous pouvez jeter un œil à la thèse de Martin Garstenauer (Martin Garstenauer's thesis (en anglais)) qui propose une intéressante introduction aux principes de base de l’animation et à la notion de Quaternion. Vous pouvez également lire cet article sur le format des animations.
Les animations ne sont pas créées dans SL et nécessitent un programme externe tels que Poser ou Blender. 
En 2005, un résident de SL a mis en place un créateur de poses appelé le Posemaker (cf. forum Posemaker). 
En 2006, deux nouveaux programmes libres ont été créés : Avimator (cf. forum Avimator) et slat (cf. forum Slat). 
Les animations peuvent être importées dans SL via des fichiers « Biovision Hierarchy files » (d’extension .BVH) depuis le menu « files > Upload animations » et en payant 10L$ par animation. Les animations peuvent être visualisées avant import.
Les animations peuvent être utilisées avec des gestures, mais ne sont pas des gestures à proprement parler.
Les animations peuvent être lancées depuis l’inventaire par double-clic ou par la fonction « open » (ouvrir) du menu contextuel (clic droit sur l’objet). Ces deux actions ouvrent une boite de dialogue avec le nom de l’animation, une zone de description (éventuellement modifiable) et deux boutons : « Play in World » (jouer dans le monde) ou « Play Locally » (jouer localement). 
- « Play Locally » permet de jouer l’animation sans qu’elle soit visible par les autres résidents (très utile pour tester une animation avant de la jouer)
- « Play in World » permet de jouer l’animation (visible pour tous les résidents dont vous êtes dans le champ de vision.).
Il y a de nombreuses animations de disponibles dans SL, certaines gratuites et d’autres payantes. Vous pouvez en chercher à l’aide l’outil de recherche de SL (bouton « search » (rechercher) en bas de l’écran du client SL).
La suite de ce document détaille : 
- Les connaissances de base à avoir en animations dans SL. 
- Un tutorial de création et d’importation d’animations (orienté Poser 5/6). 
=== Les connaissances de base nécessaire à la création d’animations dans SL ===
1. Le format BVH 
Il s’agit d’un format de fichier texte qui décrit comment chaque partie du corps doit évoluer durant l’animation (en terme de position et d’angle). En plus de l’animation, le fichier BVH contient également le détail du squelette à animer, ces os sont hiérarchisés afin de tracer leur interdépendance.
Le fichier peut être ouvert en mode texte (mais est difficilement lisible en l’état).
2. Le rôle clé dans hanches
Dans le format BVH, les hanches sont au sommet de la hiérarchie, cela signifie que ce sont elles qui décident de la position et de l’inclinaison globale du corps de votre avatar. (Par exemple pour réaliser une simple translation du corps, il suffit de réaliser une translation des hanches.).
3. Les images clés
Les animations sont constituées d’une succession d’images (ou « frames » en anglais) qui vues les unes après les autres, donne un sentiment de fluidité. Les outils informatiques actuels utilisent la méthode dite des « Keyframes » (images clés). Cette méthode, sur la base de quelques images (clés), est capable de calculer toutes les positions intermédiaires requises par l’animation, cette méthode permet de grandement simplifier le travail des animateurs.
4. La pose en T (ou T-Pose)
Dans Second Life, la première image d’une animation sert uniquement de référence pour définir les parties du corps à animer et la position initial des hanches. Cette image n’est jamais jouée dans SL. 
On fixe généralement tous les angles et les positions à 0 sur cette première image. Cette pose est communément appelée pose en T (ou « T-Pose » en anglais) car elle positionne l’avatar en T (bras écartés et jambes serrées). Cette convention permet de repérer plus facilement les parties du corps qui seront animées. Les parties du corps dont les valeurs (rotations & translations) ne changent pas, pourront être affectées par n’importe quelles autres animations, cette fonction permet par exemple de jouer plusieurs animations en même temps (sur des parties différentes du corps). Un tutorial en fin de page illustre ce phénomène. 
Il est possible, pour les poses statiques, de ne travailler que sur une seule image (l’outil d’import dans SL interpolera la deuxième image à partir de la première).
5. Les méthodes d’interpolation 
Sur la base des images clés identifiées, il est nécessaire de pratiquer une interpolation afin de définir les images intermédiaires. 
Plusieurs méthodes existent, les plus courantes sont la méthode linéaire et la méthode des splines. Etudiez votre outil d’animations pour connaître la ou les méthode(s) disponibles.
Si vous appliquez une méthode d’interpolation par splines, vous observerez parfois des phénomènes assez étonnants (bras ou jambe baladeur, acrobatie improbable, etc.), repérez l’option “rupture de spline” (Break spline) qui permet de limiter l’influence de certaines images clés (très utile pour éviter que la « T-pose » n’influence le reste de l’animation par exemple.)
Par ailleurs, SL applique sa propre méthode d’interpolation au moment de l’import (cf plus bas).
6. La kinematic inversée
Tous les outils d’animation ne proposent pas cette fonction.
Cette fonction permet de « coller » une partie du corps (mains et/ou pieds) et d’animer votre avatar avec cette contrainte. 
Par exemple, avec la kinematic inversée appliquée aux pieds, abaisser les hanches fera s’accroupir votre avatar, alors que sans elle, les pieds de votre avatar passeront simplement au travers du sol). Il est conseillé dans un premier temps de désactiver cette option.
7. La vitesse de l’animation (Framerate)
La vitesse par défaut d’une animation est de 30 FPS (Frame per seconds), il faut alors 1 seconde pour jouer 30 images, une animation de 10 secondes nécessitera 300 images. Une animation dans SL ne peut durer plus de 30 secondes. 
Tous les outils d’animation ne permettent pas de changer la vitesse de l’animation.
8. Les priorités
Au moment de l’import, une priorité d’exécution est donnée à l’animation. Cette priorité ne peut plus être modifiée après import. 
Le niveau de priorité varie entre 0 et 4, 4 étant la priorité la plus haute. 
Ce système de priorité permet de jouer plusieurs animations en même temps en les priorisant entre elles. Avec l’utilisation de la T-pose, il est possible de restreindre les animations à certaines parties du corps et donc par extension la gestion de ces priorités. 
Par exemple, si l’on joue en même temps : 
- une animation A de priorité 3 qui influe tout le corps (ex : une pose statique). 
- une animation B de priorité 4 qui influe uniquement la tête (ex : une rotation de la tête). 
L’avatar jouerait l’animation A sauf sa tête qui jouerait l’animation B. 
En présence, de deux animations de même priorité sur la même partie du corps, c’est la dernière activée qui est appliquée. 
Des animations standard sont disponibles dans SL. Elles ont un niveau de priorité fixe (max 2 en général). Elles peuvent éventuellement remplacer votre animation si cette dernière a une priorité insuffisante.
9. L’import dans SL
L’outil d’import d’animations de SL réalise une optimisation de votre animation.
En effet, afin de réduire sa taille, l’outil d’import peut être amené à appliquer certaines modifications (il ne faut pas oublier que votre animation sera stockée sur un serveur et devra être téléchargée en temps réel par les clients SL). 
Les mouvements trop infimes entre deux images seront ignorés. La formule appliquée est très complexe au vu du nombre de données à analyser (3 axes de rotation + 3 axes de translation pour chaque parties du corps combinés à la position de la jointure dans la hiérarchie du fichier BVH + d’autres éléments). 
 
Dans le cas de mouvements lents avec une vitesse d’animation (FPS) élevée, la variation entre images devient trop infime et l’import ignore l’animation. Une astuce consiste alors à diminuer la vitesse et à recaler les images clés en conséquence.
10. Les proportions du corps
Les proportions du corps des avatars influencent le résultat final de votre animation et il y a peu de chance pour qu’une animation renvoie exactement le même résultat sur deux avatars différents (surtout s’ils sont de sexe différent).
Ces différences viennent des proportions du corps de l’avatar. Par exemple, pour une même pose assise, certains avatars seront bien assis, alors que d’autres seront en lévitation ou enfoncés dans le sol. La position des hanches est fixée de manière absolue alors que tous les avatars n’ont pas les jambes de la même longueur...
11. Animation du visage et des mains
Il n’est pas possible de personnaliser ces animations, mais des animations standard peuvent être choisies au moment de l’import (elles ne peuvent plus être changées après). 
Il est également possible de lancer une animation faciale par script (cf. les animations standard).
12. Ecran de chargement d’animation dans SL
On accède à cet écran depuis le menu “file>upload animation” après avoir choisi le fichier BVH à importer. 
1. Nom : Le nom de votre animation (obligatoire). 
2. Description : Une remarque sur votre animation (optionnel). 
3. Priority : La priorité varie de 0 à 4, 4 est la plus garde valeur. 
4. Preview while : Vous pouvez sélectionner plusieurs états pour visualiser votre animation (cette option est sans impact sur l’animation finale). 
5. Loop : L’option permet de jouer l’animation en boucle entre les deux bornes « in » et « out ». 
- IN =0% et OUT = 100% : jouera l’animation en entier en boucle, 
- IN = 100% et OUT = 100% : jouera l’animation une fois puis s’arrêtera sur la dernière image. 
7. Hand Pose : Vous pouvez choisir ici l’animation des mains à appliquer. 
8. Expression : Vous pouvez choisir ici l’animation faciale à appliquer.
9. Ease In(sec) & Ease Out(sec) : Ces options permettent de poser le temps nécessaire pour passer de votre animation à une autre. Une valeur à 0 provoquera un changement instantané d’animation au lieu d’une transition plus fluide. 
10. Play & Stop : Ces boutons permettent de lancer ou d’arrêter l’animation de la fenêtre de visualisation. 
11. Pose screen : Vous pouvez utiliser les fonctions de la caméra (zoom, rotation, etc.) afin d’obtenir une meilleure vue de votre animation (molette de la sourie et touches ALT, CTRL et SHIFT).
=== Tutorial 1 : créer une pose statique assise dans SL ===
 Ce complément bien qu’orienté Poser 5/6 donne une idée globale de la procédure.
* Poser 6 par défaut contient plusieurs bugs, notamment dans l’export de BVH, il est conseillé d’appliquer les derniers patchs (SR2, sinon SR1) disponibles à l’adresse suivante : Updates & Documentations
==== A - Paramétrer poser ====
Avant tout, il vous faut utiliser les modèles hommes et femmes proposés par SL (disponible ici). Ces modèles ont été optimisés pour SL, l’utilisation d’autres modèles risque de faire échouer l’import dans SL. Le fichier zip contient un fichier BVH de la T-pose ainsi que des recommandations pour utiliser ces modèles sous Poser.
Ouvrez Poser et vérifiez que vous avez bien à l’écran les fenêtres listées ci-dessous (si ce n’est pas le cas, utilisez le menu « Windows » pour les ouvrir). 
- Parameter Dials : Cette fenêtre permet de modifier les différentes parties du corps. Vous pouvez tourner les molettes ou entrer directement une valeur (en cliquant sur la molette). 
- Animation Palette : Cette fenêtre renvoie toutes les images composant l’animation. Cette fenêtre permet de naviguer d’une image à l’autre.
Vous devriez à présent avoir les 3 fenêtres à l’écran (avec la fenêtre de visualisation de l’animation).
Dans la fenêtre Animation Palette, les points verts clairs indiquent les images clés (pour chaque parties du corps). La première image (extrême gauche) est systématiquement considérée comme une image clé. On peut ajouter ou supprimer des images clés en cliquant sur + et -.. Tout en bas de la fenêtre, vous pouvez observer la plage de lecture de l’animation (sous la forme d’une ligne continue). Déplacer le point de départ de l’animation (sur la 1ere image) et placez le sur la seconde (de façon à ne pas jouer la fameuse T-Pose).
1. Sélectionnez l’option « preference » dans le menu « Poser 6 ». 
2. Allez dans l’onglet « Interface » de « General Preferences » et choisissez le mètre (meter) comme unité de mesure (unité de mesure utilisée par SL) 
3. Sélectionnez « Lauch to previous state » dans « Lauch Behavior » et validez. 
4. Cette configuration sera dorénavant appliquée à chaque utilisation de Poser.
==== B - Créer une pose assise. ====
1. Dans la partie haute de la fenêtre Animation Palette, entrez la valeur 2 à droite de “Of”. Vous passez ainsi l’animation sur 2 images (initialement vous aviez sûrement 30 images). 
2. Sélectionnez la 2eme images (vérifiez dans la partie haute de Animation palette, que vous avez bien la mention Frame 00002 Of 00002) 
3. Vérifiez que vous avez bien désactivé la « Kinematic Inversée ». 
4. Sélectionnez les hanches (cliquez sur les hanches dans la fenêtre de visualisation ou sur la ligne correspondante dans la fenêtre Animation Palette.).
Note1: Les données Body (corps) et CenterOfMass (Centre de Masse) sont ignorées (seule la position des hanches est importante). 
Dans la fenêtre Parameter Dials, entrez les données suivantes : 
- Hanches : « move down-up » = -0.4 
- Cuisse gauche : « xRotate » = -90 
- Jambe gauche : « xRotate » = 90
- Pied gauche : « xRotate » = 1 (pour éviter qu’il ne soit animé par une autre animation (cf. la gestion des priorités dans les connaissances de base). 
9. Utilisez la fonction « Symétrie : copier gauche sur droite ». 
10. Faite une sauvegarde de ce fichier (pz3). 
11. Sélectionnez le menu « file > Export > BVH motion... ». Choisissez l’option « Scale automatically » lorsque l’on vous la demande et noter le répertoire où vous sauvegardez le fichier BVH.
==== C – Charger votre animation dans SL ====
Retournez sous SL
1. Sélectionnez la fonction « File > Upload Animation » 
2. Sélectionnez le fichier BVH que vous avez créé. 
3. Dans la fenêtre de chargement saisissez les données suivantes : 
- priorité (priority) à 4 (priorité maximale) 
- fonction « Loop » active (l’animation se jouera en boucle) 
puis appuyez sur la touche « Play » pour visualiser votre animation avant import
4- Lancez l’import et payez les 10$L. 
Note2: Lorsque vous jouez l’animation et que vous vous déplacez en même temps, la partie haute du corps doit bouger alors que les jambes restent fixes. Ce phénomène est normal vu que dans notre animation nous n’avons pas touché à la partie haute du corps (cf. Priorité dans les connaissances de base). 
Note3: Il est possible que votre avatar lévite ou s’enfonce dans le sol lorsque l’animation est jouée car la position des hanches est fixée de manière absolue sans prendre en compte les proportions de votre avatar. Pour correctement fixer la hauteur, il vous faut retourner dans Poser et lever ou baisser les hanches du modèle sans tenir compte de la prévisualisation sous Poser (mais sans toucher aux autres parties du corps). 
=== Tutorial 2 : Créer une animation dans SL ===
Aller sous Poser et repartez du modèle SL initial (prenez le modèle féminin). 
1. Vérifiez que vous avez bien 30 images (30 frames). 
2. Vérifiez que la kinematic inversée est désactivée
3. Allez sur la dernière image (la 30eme) et entrez la donnée suivante : 
- Hanches : "spin right-left" = 360
5. Sauvegardez votre nouvelle animation, exportez la au format BVH et chargez la avec la priorité 4 et l’option « Loop » (afin de la jouer en boucle). 
Jouer l’animation dans SL, votre avatar se comporte étrangement. : Son corps tourne sur lui-même sans que sa tête ne bouge. En effet, comme nous n’avons pas modifié la position du cou et de la tête, ces dernières continuent d’être animées par les animations standard de SL.
Pour éviter ce phénomène, retournez sous Poser et sur la 2eme image, appliquez un léger mouvement au cou et à la tête (cou : « xRotate »=1 et tête : « xRotate »=-1). Exportez l’animation en BVH et importez à nouveau l’animation dans SL, le phénomène a disparu. 
=== Tutorial 3 : Utilisation de la kinematic inversée ===
Tous les outils d’animation ne proposent pas cette fonction, qui est cependant très utile pour créer des animations réalistes. 
Retournez sous Poser, chargez une nouvelle animation vierge avec le modèle SL féminin. 
1. Utilisez une animation de 30 images (état par défaut normalement) 
2. Assurez vous d’avoir désactivé la Kinematics inversée sur toutes les extrémités du corps
3. Allez sur l’image 2 et appliquez les modifications suivantes : 
- Hanche : "pitch up - down" = 90 & "move up-down"= -0.4
- Jambe gauche : "xRotate" = -20
- Cuisse gauche : "forward - back" = -20 
- Epaule gauche : "reach down - up" = -60 
- Avant bras gauche : "bend front - back" = -5
- Main gauche "bend front - back" =90
- Abdomen : "bend back - forward" = 15 
- Poitrine : "bend back -forward" =-10
- Cou : "bend up - down" = -10
- Tête : "bend up - down" = -10
4. Utilisez la fonction "Symétrie : Gauche sur droite" 
5. A présent, activez la Kinématic inversée sur les 4 extrémités (pieds et mains). 
6. Positionnez vous sur la 15ème image et appliquez les valeurs suivantes 
- Hanche : "move down - up" = -0.7 & "move backwards - forwards"= 0.03
(Vous devriez voir les bras et les jambes bouger) 
- Abdomen : "move back - forward" = -5
- Poitrine : "back - forward" = -20
- Cou : "bend up - down" = -20 
- Tête : "bend up - down" = -20 
7. Positionnez vous sur la 2ème image et sélectionnez les 5 parties suivantes (gardez la touche CTRL enfoncée) : 
- les hanches, 
- l’abdomen, 
- la poitrine, 
- le cou, 
- la tête 
et copiez les sur la 30ème (la dernière) 
8. Retournez sur la 2ème image et appliquez sur ces 5 parties une « rupture de spline » (afin que la T-pose n’influence pas l’animation) 
9. Supprimez les éventuelles poses de caméras (pour éviter des rotations intempestives lors de la visualisation sous Poser). 
10. Jouez l’animation dans Poser
11. Le mouvement des jambes peut sembler un peu curieux. 
12. Allez sur la 8ème image et entrez les données suivantes : 
- Hanche : « move backwards – forwards » = 0.03
13. Allez sur la 23ème image et entrez les données suivantes : 
- Hanche : « move backwards – forwards » = 0.03
14. A présent l’animation devrait donner l’impression d’une poussée réaliste, vous remarquerez que cette animation n’a pas nécessité d’opérations complexes grâce à l’utilisation de la Kinematic Inversée. 
15. Sauvez l’animation, exportez la en BVH et importez dans SL. 
Vous remarquerez qu’il est possible que l’animation ne rende pas le même résultat sur votre avatar et dans Poser, ce phénomène est dû aux problématiques de proportion, vous pouvez faire des ajustements sous Poser. 
=== Autres sources d’information : ===
* Animation