L'agence
WanadevStudio
WorkFlow Blender - Unreal : Combiner animations custom et le squelette d’Unreal
Il y a 4 ans
Commentaire
Créer des animations de personnages et les utiliser dans Unreal Engine est une chose courante. Généralement, on a un personnage avec un squelette qu’on a créé en amont dans un logiciel de 3D (comme Blender) et on lui assigne les animations dont on a besoin via un retargeting dans Unreal.
Contexte
Ici on va voir comment utiliser le squelette du mannequin Unreal dans Blender (notre logiciel de 3D préféré) pour un personnage custom et pouvoir créer des animations qui sont directement compatibles en utilisant également les IK Bones.
Chef ! J’ai une question : Pourquoi vouloir utiliser le squelette du mannequin Unreal ? Excellente question, apprenant !
Dans le studio, on utilise le squelette d’Unreal pour nos persos humanoïdes, qu’ils soient jouables ou non (NPC).
Pourquoi ?
D’abord parce que le setup est top et permet de gagner beaucoup de temps et ensuite parce qu’il existe beaucoup d’animations sur le market place d’Unreal qu’on peut utiliser directement dans nos jeux (encore un gain de temps). Et celles-ci utilisent (bien évidemment) le squelette Unreal. Enfin, on utilise un asset Unreal pour la gestion des déplacements (et plus) des mobs : ALS pour Advanced Locomotion System et qui est aussi basé sur le squelette Unreal. Cet asset est utilisé dans la série des Propagations. Il est gratuit et disponible à cette adresse.
@ Cet asset utilise également les IK Bones pour permettre un placement correct et réaliste des pieds en fonction du sol sur lequel le perso se trouve (escalier, pente, etc…).
Problématique
Chef ! J’ai une autre question : que se passe-t-il si on a besoin d’une animation très précise pour un personnage custom ?
Encore une excellente question, apprenant ! Eh oui, on n’utilise pas le mannequin directement dans nos jeux ;) C’est un problème bien connu depuis longtemps, si tu exportes depuis Unreal le mannequin (et donc son squelette) et que tu l’importes dans Blender, tu vas avoir des problèmes :
- Soit tu ne touches pas aux options d’import et tu as les bones orientés bizarrement (pas pratique tu en conviendras)
- Soit tu coches “Automatic Bone Orientation” dans les options d’import --> là tu auras les bones dans la bonne direction...
… mais c’est à l’import dans Unreal que tu vas rencontrer des soucis :
Et je te le dis, vouloir importer le squelette du mannequin pour l’utiliser pour faire de l’animation, ce n’est pas la bonne façon de faire. Outre les problèmes évoqués ci-dessus, si ton perso est plus petit que le mannequin, il te faudra adapter les bones et ça va te prendre un temps monstre.
^ Tu dois savoir aussi qu’on n’anime pas les bones directement, on crée d’abord ce qu’on appelle un “rig” à partir du squelette et c’est ce rig qu’on va animer.
Notre solution : L’Addon Auto-Rig Pro pour Blender
Auto-Rig Pro (ARP) est un addon payant disponible ici qui permet de créer facilement et rapidement un squelette, compatible avec celui du mannequin Unreal, puis son rig et enfin un skinning automatique (assez bon mais jamais parfait) pour faire ensuite toutes les animations qu’on souhaite.
@ Le skinning est l’étape qui permet d’assigner les vertices du mesh à chaque os du squelette. Le rig est ensuite animé, qui anime les os associés et in-fine le mesh du personnage.
Il permet aussi de retargeter, c’est à dire transférer des animations existantes (de squelettes différents comme les animations mixamo par exemple) mais aussi de créer des squelettes et donc des rig customs pour des quadrupèdes ou tout autre monstre non humanoïde.
Enfin et le plus important, on peut aussi inclure des bones IK dans le squelette pour qu’ils soient utilisés ensuite par notre asset Unreal : ALS (tu te souviens, pour avoir les pieds qui se placent naturellement sur le sol si celui-ci est en pente…)
C’est quoi la procédure, chef ?!
T’énerve pas, j’t’explique !
Restons dans l’actu, le 17 décembre dernier est sorti sur steam, Ragnaröck VR, un jeu de rythme où tu incarnes un capitaine de drakkar vikings. Tu veux en savoir plus ?
Va voir par là :
On va prendre comme exemple, un rameur du jeu. Je te présente Ragnar :
Ragnar n’a pas les mêmes proportions que le mannequin d’Unreal...
...et c’est parfait pour notre démonstration. Je ne vais pas te détailler ici toutes les étapes, ça serait trop long (et pénible à lire). Je vais simplement te donner les grandes lignes. Pour un tuto détaillé, voici un lien vers une vidéo que j’ai faite.
Commençons !
1ère étape : Le squelette
Durant cette étape il te faut placer différents points (cou, menton, épaules, poignets, pelvis, chevilles) aux endroits appropriés. 1 simple click et l’addon créera ensuite le squelette.
Après quelques retouches sur le squelette pour bien l’ajuster au mesh, la 1ère étape se termine. La prochaine consiste à créer le rig.
2ème étape : Rigging et skinning, c’est automatique
1 Clique sur “Match To Rig” et tada le rig est créé :)
Il faut ensuite apparenter le mesh au rig et pour cela rien de plus simple :
Sélectionne le mesh puis le rig (dans cet ordre), appuie sur “Ctrl”+”P” et sélectionne “Armature Deform” dans la liste. Le mesh est maintenant apparenté au rig.
Passons au skinning en cliquant sur l’onglet “Skin”. Pour les options, bien décocher “Preserve Volume” et cocher “Voxelize”.
Le paramètre de résolution va dépendre de la complexité du mesh. Ici 8 fonctionne bien. Avec le mesh ET le Rig sélectionnés, clique sur “Bind”.
Après quelques secondes, le squelette est maintenant skinné au mesh.
^ Le skinning automatique n’est jamais parfait. Il faut prendre du temps pour corriger à la main les éventuelles issues.
Après quelques retouches sur le rig (désactiver l’Auto Stretch sur les controllers IK des mains et des pieds par exemple), cette étape est terminée.
3ème étape : Ajout des IK bones
C’est quoi des bones IK ?
@ C’est un point qui est peu expliqué et usité sur les tutos d’animations sur les internets et pourtant bien utile pour pimper les animations du jeu, les mixer pour avoir des animations customs qui s’adaptent au level design.
Ce sont des bones “virtuels”, ils ne déforment pas le mesh, mais ils sont liés (contraints) aux bones des pieds et des mains. Ils ont donc la même position et rotation que ces derniers. Ces bones vont permettre, par exemple, d’ajuster la rotation des pieds pour qu’ils s’alignent avec le sol s’il est en pente ou d’ajuster les jambes s’il le perso se trouvent au milieu d’un escalier, de placer les mains correctement lorsqu’il escalade etc...
Dans les options d’export d’ARP, il y a une case pour ajouter les IK Bones. Si ceux-ci sont bien ajoutés à l’export pour le mesh, ils n’ont pas les contraintes associées et donc ben.... ça sert à rien côté Unreal.
Il faut les ajouter à la main, chouette :)
En “mode edit” sur le squelette, il faut créer et placer les différents Bones pour reconstituer la même arborescence que le squelette Unreal (image ci-dessous).
Une fois ajoutés, on obtient la hiérarchie suivante :
@ Les noms des bones sont différents mais ils seront renommés à l’export pour correspondre à la nomenclature du squelette Unreal.
Ajoutons ensuite les contraintes de location et de rotation à ces différents bones :
- ik_foot_root et ik_hand_root → contrainte de location sur le bone “c_pos”
- ik_foot_l → contrainte de location et de rotation sur le bone “foot_l”
- ik_foot_r → contrainte de location et de rotation sur le bone “foot_r”
- ik_hand_gun → contrainte de location et de rotation sur le bone “hand_r”
- ik_hand_r → contrainte de location et de rotation sur le bone “hand_r”
- ik_hand_l → contrainte de location et de rotation sur le bone “hand_l”
Ces bones sont appelés “Custom Bones” par ARP, par défaut, ils ne sont pas exportés avec le squelette. Pour que ça soit le cas, il faut rajouter une “Custom Properties” sur chacun de ces bones avec l’appellation “cc” comme suit :
Et voilà ! Le bon Ragnar est prêt pour être exporté vers Unreal :
^ Il ne faut pas exporter via le menu Blender fichier/export/fbx, ça ne fonctionnera pas. ARP a ses options d’export comme le renommage des bones.
Sélectionne le mesh puis le rig et dans l’onglet “ARP” clique sur “Export FBX”. La fenêtre d’export s’ouvre :
^ Ne pas cocher “Add IK Bones”.
Il nous reste à faire une anim pour tester. Ca sera celle-ci pour l’exemple :
Côté Unreal Engine On commence par importer notre Ragnar et on lui assigne le squelette d’ALS. Jusque-là tout va bien, notre perso peut maintenant jouer les animations du perso ALS.
Pour les animations, si on procède de la même manière, les pieds s’enfoncent dans le sol :
La solution c’est :
- Importer le perso sans assigner le squelette (laisser celui du fichier).
- Importer l’animation et assigner le squelette de ce perso
- Setuper ce squelette pour le retargeting
- Retargeter l’animation sur le squelette ALS
Il y a beaucoup de tutos sur le retargeting d’animation dans UE, je ne vais pas te détailler la procédure ici. Une petite recherche sur les internets t’apportera toutes les réponses :)
Conclusion
Voilà, après mon travail de graphiste 3D s’arrête là, je fournis aux développeurs cette animation tant attendue et c’est à eux de prendre la suite pour l’intégrer (celle-là et d’autres) dans le jeu.
Commentaires
Il n'y a actuellement aucun commentaire. Soyez le premier !