Animation sur OpenSim (2/2)

Maintenant que vous commencez à maîtriser l’utilisation de bvhacker, nous allons essayer de résoudre ensemble quelques unes des difficultés que vous pourriez rencontrer.

Tout d’abord, deux précisions :

  • les animations, sur Second Life ou OpenSim, ne peuvent pas dépasser 10 secondes. Alors vérifiez bien la durée, elle est indiquée en bas à gauche de l’écran. Si elle est supérieure, l’import ne se fera pas.
  • les fichiers motion capture peuvent être très lourds. Utilisez le bouton resample to 20 fps qui donne un débit largement suffisant.

1)  bvhacker m’indique que l’alignement des bras est fait sur l’axe des Y

En bas à gauche de l’écran  Arms alignment : along Y axis

Traitons le sujet par l’exemple. Téléchargez sur le site d’animazoo le fichier jump_kick.bvh. Il possède ce type de structure non compatible avec Second Life.

Exécutez scrupuleusement les opérations dans l’ordre suivant :

  • reconstituez le squelette au format poser
Hips hip
LeftUpLeg lThigh
LeftLeg lShin
LeftFoot lFoot
LeftFootHeel Supprimé
End  Site OK
RightUpLeg rThigh
RightLeg rShin
RightFoot rFoot
RightFootHeel Supprimé
End Site OK
Spine abdomen
Spine1 chest
LeftShoulder lCollar
LeftArm lShldr
LeftForeArm lForeArm
LeftHand lHand
End Site OK
RightShoulder rCollar
RightArm rShldr
RightForeArm rForeArm
RightHand rHand
End Site OK
Neck neck
Head head
End Site OK

Cliquez successivement :

  • sur le bouton NoOff . Simple précaution : Bvhacker va vérifier que le format n’utilise pas plus d’offsets des joints que Second Life n’en supporte et va si nécessaire supprimer les offsets excédentaires.
  • sur le bouton !Zero. Simple précaution également. Second Life risque ignorer les rotations en dessous d’une certaine valeur. bvhacker va apporter si c’est le cas les corrections nécessaires. ATTENTION : à n’utiliser qu’une fois avant toute manipulation sur le fichier !
  • sur le bouton SLify, et répondez oui au deux questions qui vous sont posées.

Mettez vous en mode translation, en vue Floor, et, le joint hip sélectionné, descendez le personnage avec le curseur Y jusqu’à ce que ses pieds touchent le sol.

Vous pouvez maintenant rajouter votre pose de départ avec SetT et sauver votre animation.

La précaution à prendre : la fonction SLify tente de renommer les joints au format poser mais se révèle très approximative. Commencez toujours par reconstituer le squelette manuellement, sinon elle risque corrompre le fichier définitivement.

2. Le mouvement de l’animation que je souhaite traiter ne se fait pas face à l’écran (translation Z) mais de gauche à droite (translation X)

Surtout n’essayez par de traiter le problème par une rotation de l’animation. Ou plutôt, essayez une fois pour voir le résultat…..désastreux.

Souvenez vous : le sens de l’animation est fourni dans Second Life par la pose T de départ. Il faut donc effectuer une rotation de 90° de cette pose seulement. bvhacker ne permet malheureusement pas cette opération, nous allons devoir utiliser un logiciel d’animation.

Téléchargez et installez QAvimator .

Si vous chargez votre animation telle qu’elle, vous aurez la surprise de voir que vous ne pouvez pas modifier la première image. QAvimator étant un logiciel dédié aux animations Second Life, la première image est pour lui intangible.

Nous allons donc tricher un peu. Dans bvhacker, cliquez une deuxième fois sur SetT et vous allez obtenir deux poses en T successives au début de l’animation. Vous pouvez désormais appliquer dans QAvimator la rotation nécessaire du joint hip pour que la pose T soit dans le même sens que l’animation (positionnez le curseur sur le joint hip de l’image 2 et appliquez une rotation Y de –90 ou 90°) . Sauvegardez, ré-importez dans bvhacker et cliquez sur RemT. La première image est supprimée et vous avez désormais en première image une position en T orientée dans le sens souhaité.

Si votre fichier bvh n’est pas parfaitement compatible Second Life et que vous essayez de le charger dans QAvimator, vous aurez….un beau crash

3. L’animation est trop lente (ou trop rapide)

En bas de l’écran de bvhacker, modifiez le frame time. La vitesse n’est pas exactement conforme à ce que vous allez obtenir sur OpenSim, alors faites des essais. Et surveillez la durée de l’animation (animation time en bas à gauche de l’écran) pour ne pas dépasser les 10 secondes autorisées.

4. Je veux faire plusieurs animations et c’est fastidieux de renommer les joints à chaque fois.

Si les fichiers sont du même format (nom des joints du squelette), vous pouvez automatiser un peu le traitement.

Téléchargez Fart, un petit utilitaire de recherche et remplacement de texte.

Faites-vous un fichier batch. Voici à titre d’exemple celui que j’utilise pour les fichiers de C.M.U.

fart -r monfichier.bvh Hips "hip"
fart -r monfichier.bvh LeftUpLeg "lThigh"
fart -r monfichier.bvh LeftLeg "lShin"
fart -r monfichier.bvh LeftFoot "lFoot"
fart -r monfichier.bvh RightUpLeg "rThigh"
fart -r monfichier.bvh RightLeg "rShin"
fart -r monfichier.bvh RightFoot "rFoot"
fart -r monfichier.bvh Spine "abdomen"
fart -r monfichier.bvh Spine1 "chest"
fart -r monfichier.bvh Neck1 "neck"
fart -r monfichier.bvh LeftShoulder "lCollar" 
fart -r monfichier.bvh LeftArm "lShldr"
fart -r monfichier.bvh LeftForeArm "lForeArm"
fart -r monfichier.bvh LeftHand "lHand"
fart -r monfichier.bvh RightShoulder "rCollar" 
fart -r monfichier.bvh RightArm "rShldr"
fart -r monfichier.bvh RightForeArm "rForeArm"
fart -r monfichier.bvh RightHand "rHand"

A l’aide d’un éditeur de texte, remplacez “monfichier.bvh” par le nom de votre fichier et sauvegardez en fart.bat

Lancez fart.bat qui doit être dans le même répertoire que fart.exe et le fichier à traiter.

Attention à une utilisation avec *.bvh : non seulement tous les fichiers du répertoire seront traités mais aussi ceux des sous-répertoires.

5. Je ne connais pas la correspondance des joints du fichier bvh avec ceux de Second Life.

Désolé, je ne peux pas vous aider. Si les champs de structure des joints et de leurs mouvements sont standards dans les fichiers bvh, il est possible de créer dans les logiciels d’animation autant de types de squelettes qu’on le souhaite. Vous connaissez la structure d’arrivée et je vous ai fourni deux exemples, faites des essais et vous trouverez.

Pour terminer, vous trouverez dans la page lien les sites de fichiers bvh gratuits que je connais. Bonne animation !

Animation sur OpenSim (1/2)

Peut être avez vous envie de nouvelles animations ? Et ni le courage d’apprendre a maitriser les poids-lourds de cette technique, ni les moyens de vous les offrir (Motion Builder 4.400€ H.T.)

Plus sérieusement, le logiciel le plus adapté serait sans doute Poser, ne serait-ce que pour son intégration naturelle avec Second Life (et donc opensim) puisque leurs avatars ne sont que les mannequins d’une ancienne version (la version 2). Mais bon, 200€ quand même.

Il existe une alternative qui s’appelle “motion capture”. Il existe des milliers de fichiers au format normalisé bvh en téléchargement libre dans lesquels vous trouverez probablement votre bonheur. Encore faut il les adapter, ce sera le sujet de cette première leçon, dédiée aux membres de Francogrid .

Notre principal outil de travail sera bvhacker que vous allez télécharger ici .

Prenez connaissance de son fonctionnement sur cette page.

Nous allons prendre notre exemple sur la Carnegie Mellon University Motion Capture Database (environ 2.500 fichiers). Rendez vous sur la page de téléchargement au format bvh Motion Builder qui se trouve ici .

Lancez le téléchargement du fichier zip  BVH directories 01-09 (32 MB) et allez prendre un café.

Dézipper le fichier. Le zip contient un fichier d’index avec la description des motions capture existantes qui pourra vous orienter par la suite dans vos choix.

Dans la série 02, nous allons travailler sur le fichier 02_01 Walk pour créer une courte animation de marche. Ouvrir le fichier avec bvhacker et lancer l’animation . Nous allons devoir apporter plusieurs corrections :

  • le sujet n’est pas centré
  • il se déplace suivant l’axe des Z (alors qui nous voulons une marche “sur place”)
  • le squelette est au format Motion Builder et non au format de Poser/SL
  • nous voulons une marche en boucle

Par contre sa position en rotation Y est correcte, il est face à nous. Une autre position devrait être corrigée, nous verrons comment par la suite.

De même l’alignement des bras (signalé en bas à gauche : arm alignment along X axis) est correct. Un alignement selon les Y devrait être également corrigé.

  1. Modification du squelette

Sauvegarder le fichier (bouton save) dans un répertoire de travail, bvhacker est parfois un peu capricieux pour les manipulations que nous allons effectuer.

Voici le tableau de passage du format des joints de Motion Builder au format Poser :

Hips (ou Hip) hip
LHipJoint Supprimé
Thigh (ou LeftUpLeg) lThigh
LeftLeg lShin
LetfFoot lFoot
LeftToeBase Supprimé
End Site OK
RHipJoint Supprimé
RightUpLeg rThigh
RightLeg rShin
RightFoot rFoot
RightToeBase Supprimé
End Site OK
LowerBack Supprimé
Spine abdomen
Spine1 chest
Neck Supprimé
Neck1 neck
Head head
End Site OK
LeftShoulder lCollar
LeftArm lShldr
LeftForeArm lForeArm
LeftHand lHand
LeftFingerBase Supprimé
LFingers Supprimé
End Site OK
LThumb Supprimé
End Site Supprimé
RightShoulder rCollar
RightArm rShldr
RightForeArm rForeArm
RightHand rHand
RightFingerBase Supprimé
RFingers Supprimé
End Site OK
RThumb Supprimé
End Site Supprimé

Pour modifier le nom d’un joint, sélectionnez le dans le tableau en haut a gauche, clic droit et Rename joint.

Pour le supprimer, clic droit et Delete Joint..

Attention à respecter parfaitement les noms et la casse, sinon le fichier ne fonctionnera pas.

Nous devons aboutir à ceci :

image

Si vous êtes arrivé jusque là sans crash de bvhacker, sauvegardez cette étape. Sinon, recommencez avec des sauvegardes intermédiaires.

2. Correction des positions et translations

image Vérifiez que le joint sélectionné est bien hip et sélectionnez le mode translation. La position en X est à 10.42 . Ramenez la à zéro avec le curseur. Ramenez éventuellement le champ du curseur au minimum (2) pour vous aider

Attention au fonctionnement de bvhacker. Toute modification de la position des curseurs change la totalité des images et pas uniquement celle sur laquelle vous êtes positionné. Cette fonction est très puissante et va nous être très utile, mais bvhacker n’autorise pas la modification d’une image (ce n’est pas un logiciel d’animation).

Ensuite, en haut à droite de l’écran, cliquez sur le bouton Z. Cela va mettre tous les champs de translation sur l’axe Z à zéro. Lancez l’animation. Notre sujet est maintenant centré au milieu de l’écran et marche sur place.

image Dans le champ des vues à droite (View) cliquez sur le bouton Floor pour vérifier que l’avatar ne va pas flotter au dessus du sol. Dans le cas présent nous n’avons pas de modification à apporter. Sinon nous aurions modifié sa position avec le curseur Y. Placez vous maintenant en vue right pour faire la boucle.

Remarque : nous aurions pu utiliser le bouton X pour mettre a zéro les translations en X, mais comme le sujet marche droit, un simple centrage des vues nous permet de conserver le balancement des hanches.

Sauvegardez cette étape.

3. Mise en place de la boucle

Comme il s’agit d’une animation de marche, nous souhaitons mettre en place une boucle infinie. Pour cela faites défiler l’animation pour essayer de trouver aux deux bouts de l’animation des positions les plus similaires possible dans le même mouvement.

Choisissons par exemple les images 9 et 278.

Positionnez vous sur l’image 9 et cliquez en bas à droite de l’écran sur le bouton Mark in. Puis sur l’image 278 et cliquez sur le bouton Mark out.

Ensuite cliquez sur Crop, ce qui va effacer les images hors du champ que vous avez sélectionné. Puis cliquez sur Knit ce qui va adoucir la transition entre la première et la dernière image.

Lancez l’animation. Voilà une belle boucle ! Sauvegardez cette étape.

4. Mise en forme du fichier pour opensim

image 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 initiale des hanches. Cette image n’est jamais jouée.Toutes les translations et les rotations sont à  0 sur cette première image (pose en T).

Cliquez sur le bouton Set T qui va la générer.

Cliquez enfin sur le bouton Slify qui va contrôler la compatibilité SL.

Sauvegardez votre projet final prêt pour l’import.

5. Importation de l’animation sur opensim

image Connectez vous à OpenSim et dans le menu, utilisez File, Upload animation pour charger votre fichier bvh.
Cochez la case loop. Vérifiez le bon fonctionnement de votre animation.
Au moment de l’import, une priorité d’exécution est donnée à l’animation. Le niveau de priorité varie entre 0 et 4, 4 étant la priorité la plus haute. Les animations standards ont en général une priorité de 2. Si par exemple votre animation est destinée à un “animation overrider”, mettez la priorité à 4.

Upload ! Félicitations, vous venez d’importer votre première animation sur OpenSim. Dans un billet suivant, nous verrons quelques astuces complémentaires.