Licence CC BY-NC-SA

Rigging et animation d'un bras

Ce contenu est obsolète. Il peut contenir des informations intéressantes mais soyez prudent avec celles-ci.

Jusqu'à présent, vous saviez animer différents objets en "object mode". Le rigging va permettre de déplacer des vertices pour l'animation, c'était déjà possible en ajoutant des keys mais cela ne convient pas à l'animation d'un être organique ou à la simulation du mouvement d'un câble, par exemple. Ça demande trop de travail et c'est assez difficile de gérer les articulations de cette manière.

Le rigging s'effectue grâce à l'outil « Joint Tool ». Il permet en quelque sorte de placer un squelette sur lequel vous pourrez appliquer des rotations pour déformer le maillage et donc créer des articulations pour un personnage. :)

Le but de ce premier chapitre sera d'utiliser le Joint Tool pour créer le squelette d'un bras pour l'animer. Vous verrez ensuite l'outil « IK Handle », qui permet de plier automatiquement le bras en déplaçant la main par rapport à l'épaule ! :D Et pour finir, je vous monterai comment lier ou détacher les joints entre eux.

Rappel sur la hiérarchie

Le principe de base du rigging c'est l'animation hiérarchie : bras -> avant bras -> main -> doigts. Tout ça fonctionne de la même façon que les groupes qui sont parent des polygones compris à l'intérieur. On peut donc animer un groupe et les polygones qui sont à l'intérieur indépendamment. Le groupe est appelé le « parent » et le ou les objet(s) compris dedans les « enfants ». Les enfants suivront toujours le parent, tandis que l'inverse n'est pas possible.

Pour vous expliquer ça, j'ai créé de groupe. Un groupe Parent et un autre Enfant. Le groupe "enfant" est à l'intérieur du groupe "parent" comme vous pourrez le voir dans l'outliner :

L'enfant peut se déplacer, mais ses mouvements n'affectent pas le parent :

Le parent lui, en effectuant une rotation ou un déplacement entrainera l'enfant avec lui (l'enfant continu sont animation de tourner sur place) :

Mouvement de la terre et de la lune.

Pour certains ça parait évident, mais c'est un rappel. Et bien en rigging ça marche pareil, le bras entrainera la main, etc. . Une hiérarchie se constitue automatiquement dans l'outliner, chaque morceau de squelette que vous ajouterez sera l'enfant de celui précédemment créé. ;)

Mise en places des bones (squelette)

Commencez par télécharger un bras déjà modélisé ici. Je l'ai obtenu grâce au logiciel gratuit Make Human, c'est un logiciel Open Source, vous pouvez donc utiliser les modèles sans problème avec la licence. ;) Avec, vous pourrez utiliser les personnages générés pour vos animations. :)

Nous allons attaquer la création du squelette, cela prend quelques secondes seulement. :p Allez dans le shelf animation et cliquez sur l'icône représentant trois cercles attachés, il s'agit de l'outil Joint Tool dont je vous ai parlé en introduction :

Vous pouvez aussi accéder au Joint Tool via le menu principal en passant en mode Animation dans le Menu Set puis dans Skeleton -> Joint Tool.

Passez en vue de face pour faciliter la création. Cliquez aux différentes zones d'articulation en commençant par l'épaule jusqu'à la main.

Et pourquoi je ne peux pas commencer par la main ?

Le squelette est automatiquement hiérarchisé lors de sa création. C'est donc l'épaule qui contrôle le mouvement de tout le bras et non la main (à moins que vous ne souhaitiez créer un extraterrestre, là c'est différent :p ).

Il ne reste plus qu'à lier les joints au maillage. Là encore, c'est très simple, sélectionnez tout avec la touche Shift :

Allez maintenant dans Skin -> Bind Skin -> Smooth (le menu Skin n'est visible que dans le menu set "animation") :

Pour détacher les joints du maillage, faites Skin -> Detach Skin.

Et maintenant, suspens, si tout fonctionne le rigging devrait animer le bras ! Sélectionnez un joint et effectuez une rotation (n'effectuez que des rotations sur les joints sinon vous déformerez le bras) :

Grâce à la sélection hiérarchique des joints, vous pouvez donner toutes sortes de positions au bras comme celle du salut :

Les rotations des joints peuvent entrainer des déformations du maillage comme sur l'image juste au-dessus. Vous pouvez utiliser le nouvel algorithme de Maya 2011 qui minimise les déformations. Sélectionnez le maillage et dans la channel box, cliquez sur « skinCluster1 », vous verrez Skinning Method ; choisissez « Dual Quaternion ».

Voici la différence entre l'algorithme de départ, le Classic Linear, et le nouveau de Maya 2011 :

Maintenant que le rigging est fait, nous allons l'optimiser. Pour ça, nous allons utiliser l'IK Handle.

Des pliures automatiques avec IK Handle

Les « IK Handles » gèrent automatiquement les articulations, vous n'aurez plus qu'à sélectionner la main et à la déplacer et l'articulation se fera toute seule ! :)

Pour commencer, revenez à la posture par défaut en sélectionnant les joints et en cliquant sur Assume Preferred Angle (remettre l'angle préféré) pour avoir la position du bras de départ. Vous pouvez cliquer sur Set Preferred Angle (définir comme angle préféré) pour désigner la posture actuelle comme la posture préférée. Je vous conseille de garder le bras tendu comme posture préférée.

Vous trouverez l'« IK Handle Tool » en dessous du « Joint Tool » dans le menu « Skeleton » :

Il faut définir la zone où se produira l'articulation. Cliquez au niveau de l'épaule et sur le poignet de la main :

Une fois que c'est fait, vous verrez une ligne apparaitre entre les deux extrémités sélectionnées. Utilisez le Move Tool pour déplacer l'IK Handle au niveau du poignet (si vous désélectionnez l'IK Handle et que vous souhaitez le resélectionner, celui-ci apparait sous la forme d'une croix).

En déplaçant le poignet, on a bien une articulation qui se fait automatiquement, mais pas dans le bon sens. :-° Pour simplifier l'animation, il aurait fallu que le bras se plie quand le poignet se déplace en X et Z, alors que là il se plie en X et Y.

En fait, en générant l'IK Handle, Maya a recherché l'angle actuel, puisque nous avons créé les bones en vue de face, il n'y a pas d'angle en Z. Ce qu'il faut, c'est recréer les bones mais en mettant un angle en Z, pour ça il faut créer les bones en vue de dessus :

En vue de face, gardez tout à l'horizontale (sauf pour la main si vous voulez, car elle ne fait pas partie de la zone de pliure).

Appliquez à nouveau un IK Handle et cette fois la pliure se fera en Z ^^ :

Faites un Smooth Bind pour lier les Joints au maillage. Cela donne un mouvement très réaliste en quelques secondes !

Pour que la main salue, faites d'abord une rotation au niveau de l'épaule pour que la paume de la main soit en face :

En touchant à l'IK Handle du poignet, le bras se pliera automatiquement :

Vous pouvez ajouter des keys directement sur les joints pour animer votre personnage !

Vous connaissez déjà une grosse partie du rigging, car vous savez constituer un squelette, le lier à un maillage et gérer les pliures. Avant de boucler ce chapitre, je tiens à vous montrer une fonction importante lors de la création des bones, qui consiste à attacher et détacher des bones pour pouvoir les éditer.

Lier des joints

Il vous arrivera de commettre des erreurs lors du placement des joints, vous vous apercevrez que certains joints sont manquants. Par exemple, vous avez commencé à placer des joints, mais vous souhaitez en placer d'autres :

Comme je vous l'ai dit, les joints sont hiérarchisés entre eux, chaque joint a son parent sauf bien sûr le premier que vous avez placé. Placez donc un autre joint, sélectionnez-le (il sera l'enfant) et sélectionnez le sommet sur lequel il sera lié (qui sera le parent) et appuyez sur "p" :

Vous pouvez aussi effectuer cette opération sur le sommet d'un joint pour ajouter seulement un joint supplémentaire à votre rigging :

Il est possible de lier plusieurs joints à un même sommet, que plusieurs joints aient le même parent. Vous devrez lier chaque joint un par un en sélectionnant l'enfant puis le parent :

Pour supprimer un joint, il faut utiliser la fonction contraire : unparent. En utilisant cette commande, le bone précédent (le parent) sera supprimé. Sélectionnez un joint et faites "shift + p" pour exécuter la commande unparent :


Vous êtes déformais capables de rigger n'importe quoi ! :) Retenez qu'il faut placer les joints entre chaque zone d'articulation. Les fonctions "parent" et "unparent" vous permettront de les éditer pour en attacher de nouveau ou en enlever. Avec l'IK Handle que vous avez vu, vous n'avez plus à vous soucier de la pliure des bras et jambes, cela se fera tout seul. ^^