Modèles et Textures : Modifier des animations avec Nifskope et Blender
Ce tutorial se trouve en version originale sur le site cs.elderscrolls Importing_Animations_from_Blender
Introduction
Copie écran d'une animation modifiée de lancement de sort
La création d'animations pour Oblivion est longtemps restée possible seulement pour les utilisateurs de 3DS Max versions 6 to 8 (AFAIK). Si, comme moi, vous n'avez pas accès à ces applications (et ne voulez utiliser de copies de certaines provenances), il vous reste à vous débrouiller avec Blender, Milkshape, etc.
Obtenir des animations à partir de Blender vers Oblivion donne un peu plus de travail qu'avec l'utilisation de 3DS Max, mais c'est faisable. Ce tutorial permet de modifier partiellement le lancement de sort du PJ sur lui-même, mais le procédé permet de modifier entièrement l'animation si vous le voulez.
Ce tutorial vous permettra de savoir importer, grâce à un fichier NIF modifié, des animations dans Blender, puis, après modification des mouvements, d'exporter vers Nifskope un fichier NIF, et enfin introduire les nouvelles animations dans le fichier KF.
La première chose à faire est de vous assurer que vous disposez des bons outils.
Outils nécessaires
Avant de commencer à faire des animations pour Oblivion, vous avez besoin, au minimum des outils suivants :
- Blender
- Scripts pour l'importation et l'exportation de fichiers NIF vers et depuis Blender.
- NifSkope
- Votre cerveau et un peu de talent :)
Certainement, cela aide beaucoup d'avoir lu quelques tutoriaux sur l'utilisation de ces outils. Les tutoriaux sont disponibles dans les pages de liens données plus loin, et également auprès de cs.elderscrolls tutorials.
Créer une animation dans Blender
La première chose dont vous avez besoin, de faire est d'importer un skeleton et le mesh d'Oblivion vers Blender. Le tutorial Creature Meshes 101 est parfait pour expliquer comment faire cela.
Une fois que vous avez un mesh bien nettoyé dans Blender, faite une animation. Pour notre tutotial, faites une simple rotation du bras gauche (Bip01 L UpperArm) De façon qu'il soit au dessus de la tête du personnage à peu près à mi-chemin de l'animation.
Exporter une animation de blender vers Nifskope
C'est quelque chose de pauvrement documenté, trouvable seulement en examinant le script d'exportation et en vérifiant sur la page NifSkope ce qui n'a pas été mentionné sur les forums (AFAIK) : le script peut actuellement exporter les animations ! Donc, exportez le modèle avec le script d'exportation NifTools pour Blender.
Il crée un fichier NIF qui contient :
- le skeleton,
- le mesh
- l'animation.
Le seul problème, est que ces trois composants sont imbriqués et ne sont pas utilisables dans une animation (.kf) tels quels. Un fichier animation contient simplement les changements de position, orientation et échelle des bones (les os, les articulations). Oblivion n'accepte pas le fichier tel qu'il est exporté.
Donc, exportez le skeleton, le mesh"" et l'animation depuis blender est sauvegardez dans un fichier par exemple test.nif.
Créer un fichier Animation KF
Pour obtenir un fichier d'animation au format correct, les composants du fichier exporté doivent être extraits et placés dans un fichier d'animation correct. Pour faire cela :
- Ouvrir un fichier d'animation existant (par exemple castself.kf) dans NifSkope
- Ouvrir une autre fenêtre NifSkope et charger le fichier exporté (ici test.nif)
Si vous pressez sur le bouton play de la fenêtre qui contient test.nif, vous verrez le modèle s'animer.
Note: pour cet exemple, utilisez un intervalle de temps (time range) de 1,3 secondes qui est la durée due l'animation cast self.
Extraction des fichiers d'animation du fichier NIF de Blender
L'examen de test.nif montre que les animations sont liées aux bones élémentaires en utilisant les blocs NiKeyframeController. Donc, si vous avez animé du bras gauche, naviguez dans l'arbre hiérarchique vers la bas : test->Scene Root->Bip01->Bip01 NonAccum->Bip01 Pelvis->Bip01 Spine->Bip01 Spine1->Bip01 Spine2->Bip01 Neck->Bip01 L Clavicle->Bip01 L UpperArm. Vous verrez un bloc NiKeyframeController qui contient les informations d'animation du bras gauche.
Très important : Le bloc NiKeyframeData en dessous du bloc NiKeyframeController. Ce bloc contient les clefs d'animation et c'est ce bloc qui doit être extrait (Les clefs sont les paramètres de position successives des bones à différents intervalles de temps qui permettent d'interpoler par le calcul la totalité de l'animation).
Sélectionner le bloc NiKeyframeData pour le bras gauche et copiez-le. Collez-le dans le fichier castself.kf file. Il sera ajouté à la fin de la liste des blocs, mais n'est pas encore connecté au reste de l'animation.
Modifier le fichier KF existant
Controller et Interpolator
Un controller block est connecté à un bone pour contrôler directement ce bone. Un controller ne peut pas exister dans un fichier sans bone. Un interpolator, d'un autre coté, n'à pas besoin d'être directement connecté à un bone. Un interpolator indique le bone sur lequel il agit en spécifiant le nom dans un bloc de chaine de caractère (string) contenat des informations supplémentaires. |
Le fichier castself.kf possède un bloc NiControllerSequence qui contient les séquences du contrôleur. Un nombre de blocs NiTransformInterpolator attachés aux blocs NiTransformData se trouvent dans ce fichier (un par bone animé). Le bloc NiTransformData block contient les clefs d'animation actuelles (keys) et exactement la même structure que les blocs NiKeyframeData. Il n'y a plus qu'à remplacer le bloc de donnée existant par celui qui contient la nouvelle animation.
Pour faire cela:
- cliquer sur la racine du bloc NiControllerSequence.
- dans ce bloc, descendez jusqu'au champ nommé Controlled Blocks
- ouvrez ce champ et descendez jusqu'au bloc nommé "Bip01 L UpperArm"
- ouvrez-le et descendez jusqu'au champ nommé "Interpolator"
- cliquez-droit sur la valeur et choisissez "follow link". Cela permet d'atteindre le bon interpolator du bras gauche (il y en a beaucoup, et cela évite de faire une erreur de sélection)
- dans l' interpolator sélectionné, changez la valeur du champ avec le numéro du bloc NiKeyframeData collé précédemment. Cela attache le nouveau bloc et détache l'ancien.
- double-cliquez sur le nom du bloc NiKeyframeData et renommez-le NiTransformData
- Sélectionnez l'ancien bloc NiTransformData et supprimez-le.
Importer des Animations dans Blender
Vous pouvez également importer des animations, TANT QUE l'animation est imbriquée avec le skeleton (de la même façon qu'il est exporté). Donc, pour importer une animation dans Blender, faites le contraire de ce que l'on vient de faire pour l'exportation. Par exemple, copiez le bloc de donnée du fichier KF vers le fichier NIF et attachez-les aux controllers des bones qu'ils animent. Rappelez-vous de renommer le bloc correctement. Laborieux, mais cela fonctionne. |
Vous avez maintenant modifié correctement le fichier KF. Sauvegardez-le. Ignorez le message d'erreur ("error message") au sujet de "unassigned parent link", cela n'a pas d'importance. Vous pouvez utiliser l'attachement du fichier KF au sort (Spell) pour vérifier que l'animation fonctionne dans le TESCS2.
Démarrez Oblivion, lancez le sort sur le PJ et l'animation doit bien-sûr avoir changé, de telle façon que, en plus de l'animation normale, le PJ lève également son bras gauche.
Notes :
- Si la durée de l'animation est plus longue que celle du fichier KF, sélectionnez simplement le bloc NiControllerSequence et modifiez la valeur dans le champ "Stop Time".
- Si plus d'un bone est animé, il faut bien sûr répéter le processus copier/coller/modifier pour chaque bone.
Consultez le Basic Animation Tutorial pour plus de détails sur les blocs des fichiers KF.
Conclusion
Maintenant, il est possible de modifier les animations en utilisant Blender. Créer entièrement de nouvelles créatures et animations en utilisant Blender est maintenant proche et certainement apparaît réalisable.