diff --git a/README.md b/README.md index 4fd770e..c41e2ba 100644 --- a/README.md +++ b/README.md @@ -301,6 +301,59 @@ Il peut comporter deux éléments : Il n’est pas utile de versionner le répertoire `.import/` situé à la racine d’un projet car son contenu peut être généré depuis les fichiers originaux et leur fichier de configuration annexe (avec l’extension `.import`, par exemple pour `icone.png` cela donne `icone.png.import`). Il convient donc d’ajouter le répertoire `.import/` dans le `.gitignore` comme c’est proposé dans [la documentation Godot](https://docs.godotengine.org/en/latest/tutorials/assets_pipeline/import_process.html#files-generated). +## Le pipeline pour les objets animés + +Les objets animés avec une armature de déformation sont modélisés et conçus dans Blender, puis exportés vers Godot. Les principes appliqués proviennent des méthodes initiées par [Richard Lico](https://www.animationsherpa.com/), en particulier pour le développement du jeu [Moss](https://www.polyarcgames.com/moss/). Il s’agit de différencier les ressources et les outils, et de ne pas se préoccuper de ces derniers tant qu’ils permettent aux intervenants de travailler efficacement avec leurs outils propres et, surtout, façons personnelles. La documentation ne comporte que des instructions pour travailler sous Blender. + +### Le mesh de base + +Le mesh de base est sauvegardé dans son propre fichier, avec un `Link`vers le fichier où se trouve son armature de déformation. Il doit se situer à la racine de la collection `Khanat`, avec un weight painting adapté à son armature de déformation. + +### L’armature de déformation +L’armature de déformation est conservée dans son propre fichier, sans rien d’autre dans sa collection`Khanat`. Elle peut être ainsi être utilisée par plusieurs meshes en créant un `Link`. + +### Les animations +Les animations sont conservées uniquement sous format glTF, avec une seule animation par fichier. + +#### Importer une animation dans Blender + +Afin de travailler une animation, il est possible de la récupérer dans le dépôt, où elle est sous format glTF. Une fois le fichier à récupérer identifié, il faut l’importer avec les préférences suivantes : +![Import d’une animation glTF dans Blender](./img/blender_import_gltf_spec.png) + +#### Éditer/ créer une animation dans Blender +Une animation peut être éditée depuis n’importe quel fichier local, avec ses propre préférences de travail. Il suffit d’y importer le mesh avec son armature de déformation, puis d’appliquer à ce dernier le rig de contrôle souhaité qui permettra de procéder au travail de création/édition souhaité. Chaque animateur pourra recourir à la méthode qu’il préfère, comme le propose Richard Lico dans une conférence du GDC en 2018 ( [Animating Quill: Creating an Emotional Experience](https://www.youtube.com/watch?v=u3CzLVpuE4k&t=2011s)). Le studio [Dypsloom](https://dypsloom.com/) propose un addon spécialement développé pour ce genre de travail : [Rig On the Fly](https://gitlab.com/dypsloom/rigonthefly). + +#### Sauvegarder une animation depuis Blender + +Pour sauvegarder l’animation créée pour une armature depuis Blender : + +1. sélectionner l’armature de déformation en mode objet, puis `Object > Animation > Bake action` +2. indiquer les préférences suivantes et valider par `OK`: +![Bake action dans Blender](img/blender_bake_action.png) +3. `File > Export > glTF 2.0 (.glb/.gltf) +4. Les préférences d’exportation à indiquer sont les suivantes : +![Spécifications d’export glTF des animations depuis Blender](img/blender_export_gltf_spec.png) +Il est conseillé de se créer un `Operator preset` afin de ne renseigner ces éléments qu’une fois. +5. Indiquer le nom ainsi que le chemin de destination appropriés et valider (voir [Les conventions de nommage](#convention-de-nommage)) + +#### Importer les animations dans Godot en tant que ressources + +Il faut faire en sorte que l’animation devienne une ressource qui pourra être appelée dans un `Animation Player`. Travailer ainsi permettra de ne plus avoir à se soucier des scènes héritées, n’importe quel élément de ces dernières pouvant avoir été manipulée dans Godot depuis son importation. Appeler des ressources secondaires permet d’ajouter de novueaux éléments importés qui se rapportent à d’autres éléments anciennement ajoutés également depuis une source externe. + +Une fois les fichiers visibles dans l’arborescence de Godot (fichiers _.glb_) : + +1. double-cliquer dessus permettra d’afficher la fenêtre des paramètres d’importations. +2. sélectionner à droite l’action à importer (`bone_turn`dans l’exemple ci-dessous) et paramétrer la partie `Save To File`en cochant `Enabled`et `Keep Custom Tracks`et en indiquant le chemin où la ressource sera enregistrée dans `Path`. +![Importer une animation dans Godot en tant que ressource](./img/import_godot.png) +#### Ajouter manuellement une animation dans une node AnimationPlayer sous Godot +Lorsqu’on a importé un certain nombre de ressources d’animations qui peuvent concerner le même objet (typiquement les actions d’un mesh avec son armature), il est possible de les ajouter à la node `AnimationPlayer`qui l’anime : + +1. sélectionner la node `AnimationPlayer`à compléter +2. aller en bas dans l’onglet `Animation`et cliquer sur le menu de cette zone, sélectionner `Manage Animations` +![Gérer les animations d’un AnimationPlayer dans Godot](./img/godot_modify_animation_01.png) +3. Dans la fenêtre popup qui s’ouvre, cliquer sur l’icône pour ouvrir une ressource existante et aller là où se trouve l’action à ajouter. +![Ajotuer une animation à un AnimationPlayer dans Godot](./img/godot_modify_animation_02.png) + ## License CC BY SA Khaganat - 2022 diff --git a/img/blender_bake_action.png b/img/blender_bake_action.png new file mode 100644 index 0000000..551d574 Binary files /dev/null and b/img/blender_bake_action.png differ diff --git a/img/blender_export_gltf_spec.png b/img/blender_export_gltf_spec.png new file mode 100644 index 0000000..df93340 Binary files /dev/null and b/img/blender_export_gltf_spec.png differ diff --git a/img/blender_import_gltf_spec.png b/img/blender_import_gltf_spec.png new file mode 100644 index 0000000..11f1748 Binary files /dev/null and b/img/blender_import_gltf_spec.png differ diff --git a/img/godot_modify_animation_01.png b/img/godot_modify_animation_01.png new file mode 100644 index 0000000..817ebf9 Binary files /dev/null and b/img/godot_modify_animation_01.png differ diff --git a/img/godot_modify_animation_02.png b/img/godot_modify_animation_02.png new file mode 100644 index 0000000..fb25f29 Binary files /dev/null and b/img/godot_modify_animation_02.png differ diff --git a/img/import_godot.png b/img/import_godot.png new file mode 100644 index 0000000..98e4f0a Binary files /dev/null and b/img/import_godot.png differ