Page de test, en cours de construction.
Indexation et / ou mise en cache Interdite!!!
Bloc Titre
Bloc Navigation Principale
Bloc accueil 'Tutoz 3D XSI-Rigging avancé d'un bras'
Voici un tutoriel qui vous explique une méthode pour paramétrer au mieux un squelette de bras dans XSI à fin d'avoir un maximum de possibilité pour animer ce dernier.
Ce qu'il faut retenir principalement c'est la façon d'arriver au résultat voulu. Pour cela il faut déterminer ce que nous voulons et dans quel but. Puis trouver les solutions efficaces et ergonomiques pour y parvenir. Et enfin trouver les astuce pour faire fonctionner le système pour que l'animateur puisse faire un maximum de mouvement tout en aillant un accès le plus claire possibles aux réglages.
Bloc Contenu 'Tutoz 3D XSI-Rigging avancé d'un bras'
Quand vous paramétrez un personnage, il est facile d'imaginer toute les choses qu'il est possible de faire et comment il est simple de manipuler et de transformer. Durant le Rigging, beaucoup de ces idées s'envolent à cause des contraintes de planning et/ou des difficultés techniques. L'une des choses qu'un animateur rêve de pouvoir faire, c'est de pouvoir animer l'étirement et l'écrasement (squash & stretch), une technique classique de l'animation qui est souvent mis de coté par les professionnels du paramétrage 3D. Bien sûr, le Principe du squash & stretch peut être mis en œuvre dans les poses du personnage et dans le comportement de ses extrémités, mais voyons comment la liste de souhait si dessous peut être mise en œuvre dans le Rigging fonctionnel d'un bras et dont le contrôle du squash & stretch est facile et rapide :
Image 1 – Le Rigging complet et finalisé
Image 2 – Étirement de la chaîne du bras
Quand vous aurez fait ça, trois nouveaux besoins se présentent :
Comme il serait préférable de verrouiller n'importe quelle animation avec un « Verrou », taille des os fixes et animer celle-ci plus tard, la capacité de désactiver la déformation de la chaîne est importante.
De même, quand vous faite une pose à votre personnage, il serait bien de pouvoir réinitialiser les accidentels sur-étirements, ce qui remettrait le bras à sa taille originale tout en gardant la pose (le long de l'axe Effecteur/Racine).
Une condition dans l'Expression de la longueur des os peut prendre en compte ça : seulement autoriser à changer la longueur des os quand le nouveau paramètre reset-and-lock est égal à 0. Comme la longueur des os tient compte de la mesure de la distance, il est plus simple de faire ça pour contrôler le comportement des os.
Image 3 – Editeur d'Expressions
A part réinitialiser et verrouiller l'étirement d'une chaîne, il serait bien de pouvoir distinguer l'étirement de chaque os séparément, ou ensemble, ou les 2 en même temps – même avec l'Effecteur fixé sur sa position. Prenez note que ces compensations de longueur pourraient également fonctionner pendant que la chaîne est déjà étiré et pliée. Et elles pourraient nous apporter la capacité a animer à la main l'écrasement des os dont nous avions besoin. Tout cela sera contrôlé par 3 paramètres, respectivement les paramètres de Compensation :
Image 4: Gestion de l'étirement individuel des os
Maintenant, il y a énormément d'objet Null sur la scène, pour aider les Expressions. Bien sûr, ces Expressions sont référé à différents paramètre d'un seul Null, ou un paramètre personnalisé, avec les paramètres nécessaires stocké dedans (soyez conscient que XSI n'aime pas trop les CustomPSet avec certains paramètres qui sont stockés dans une objet de chaîne – Il renvoi une erreur de cycle de dépendance).
Et aussi, toutes les Expressions pourraient être piloté par un objet contrôleur présent du Rig du Personnage, qui implémenterait toutes les fonctionnalités présentés clairement dans une vue 3D, lequel serait idéal pour un animateur. Cependant, il est conseillé d'utiliser de Objet Null Séparés pour bien tout paramétrer, comme ils nous donnent une bonne vue d'ensemble et sont facile à retrouver au cas où il y a des problèmes ou un comportement non désiré.
Voyons une partie différente, un contrôleur suivit par le coude et qui peut corriger l'orientation de celui ci par une simple translation. La racine du bras et l'Effecteur reste en place, mais le coude peut être bougé librement a une position voulu et dans n'importe quelle direction – il est donc très différent d'un upvector constraint.
Cette spécification est utilisé pour perfectionner une pose que l'on voudrait ajuster un peu mieux si le coude est placé de manière anatomiquement incorrect, au cas où, sur quelques frames.
Dans le légendaire livre de Richard Williams, « The Animator's Survival Kit », il parle souvent de « breaking » (cassure) une articulation pour affiner une animation. Avec ce correcteur d'orientation du coude, il peut plus facilement être réalisable en 3D.
Pour faire ça, une seconde chaîne sera créé pour suivre la chaîne originale. C'est en réalité 2 chaînes composées de 1 os plutôt qu'une simple chaîne de 2 os, et cela pour simuler le comportement du bras définie par le correcteur d'orientation du coude.
Image 5 – contrôle de l'orientation du coude
b_offsetUp.bone.length:
ctr_dist( r_arm.kine.global.pos, c_elbow.kine.global.pos )
b_offsetLo.bone.length:
ctr_dist( e_arm.kine.global.pos, c_elbow.kine.global.pos )
Maintenant, quand vous étirez la chaîne, l'enveloppe du bras devrait suivre et grandir, mais il ne conserve pas vraiment son volume, il garde la même épaisseur – à moins que les axes Y et Z des os soient réduit proportionnellement pendant que la longueur de celui ci augmente.
Nous allons rapidement configurer une chaîne pour le poignet et penser à comment faire au mieux pour contrôler celui ci lors de l'animation.
Il y a 2 principes de base :
-soit la rotation du poignet suit l'Effecteur du bras, et donc la main est toujours alignée sur l'avant bras quand vous bougez le bras.
-soit la rotation du poignet est conservée et ce dernier fixé dans l'espace quand vous bougez le bras, et dans ce cas, il est toujours orienté dans la même direction et ne suit pas l'orientation de l'avant bras.
Ces 2 méthodes ont leurs avantages et leurs inconvénients. Quand vous faites des poses à votre personnage, ou que vous faites un mouvement du bras, il est plus naturel que le poignet suive l'avant bras, et toutes les animations additionnelles seront facile à contrôler avec les F-curves, comme nous le savons sa rotation est toujours de 0, 0, 0 par rapport au bras.
Cependant, ce comportement n'est pas le bienvenue quand le bras est animé et ses upVector ajustés après (l'ensemble de l'animation de la main va changer avec ça) ou si il y a une interaction avec d'autres objet dans la scène (quand il faut soulever un objet par exemple).
Toutefois, pour avoir le meilleur des 2 possibilités, nous allons essayer et réussir a configurer un controleur de poignet qui peut gérer les 2 solutions, et l'animateur pourra passer d'un comportement à l'autre.
Image 6 – Configuration du poignet
Note : Prenez conscience que ce poignet peut causer des blocages de cardan (gimbal Lock) durant l'animation. Vous pouvez essayer un ordre différent d'axe de rotation dans les propriétés de la cinématique de votre os du poignet (YZX marchent bien pour moi), ou suivre d'autres tutoriels sur comment contourner le problème du Gimbal Lock – comme la méthode de séparer les axes de rotation sur différents objets de contrôle.
Un autre truc est qu'il arrive toujours, pendant une animation, d'avoir besoin de pouvoir rapidement bloquer une main à un endroit, quand vous la posez sur une table par exemple. Ceci est possible avec la contrainte de Position sur le contrôleur du bras et la contrainte d'orientation sur le contrôleur du poignet.
Il faut placer le « handSnap » dans un endroit efficace – un endroit qui ne gène pas l'animation mais qui reste facilement accessible lorsque l'on anime. Il pourrait suivre l'ensemble du bras par sa racine « r_arm », avec les autres objets, ceux qui contrôlent pleins de paramètres que nous avons configuré précédemment (voir le prochain paragraphe).
Il y a énormément de fonctionnalités et différentes options dans ce paramétrage de bras maintenant, il pourrait amener l'animateur à confusion. Il est donc conseillé de faire quelque chose pour nettoyer un peu tout ça, afin de fournir l'information de manière claire et avoir la possibilité d'avoir un retour de ce qui se passe sur le moment.
Ajouter des annotations pour appeler les objets de contrôle qui ont des fonctions spéciales, par exemple quand vous modifiez l'échelle Y.
Image 7 – Icônes des contrôleurs de la chaîne
Un autre point important c'est la décision à prendre quand vous animez un bras et spécialement savoir si vous devez utiliser le FK ou le IK. Maintenant, ce bras est évidement prévu pour de l'IK, mais avec l'excellente implantation du mixage FK/IK dans XSI, ça serait honteux de ne pas ajuster notre Rig afin qu'il soit capable de tirer partie de ses spécifications.
Vous pourrez trouver les contrôleurs FK/IK d'XSI dans les « Kinematic Chain Properties » sous le PREMIER os de la chaîne. L'interrupteur FK/IK permet effectivement de jouer entre les 2 méthodes d'animation.
La seule chose qui prévoit le passage au mode FK sur notre bras est la contrainte de Position appliqué à l'Effecteur « c_arm ». Cependant, si nous contrôlons l'activité de cette contrainte de Position avec une Expression, il peut aussi, par exemple être désactiver par un changement d'échelle de notre c_arm, et en même temps utiliser le contrôleur FK/IK pour dire à XSI quand il faut passer en mode Chaîne FK.
Pour finir le Rigging de notre bras, quelques équilibrages de nos contrôleurs s'imposent. Habituellement, il peut être très fastidieux de bien équilibrer les avant-bras pour avoir une belle rotation au niveau du poignet lors de sa rotation sur X.
Ceci est dû à l'algorithme naturel de l'enveloppe du bras qui ne s'interpole pas avec la rotation de l'enveloppe osseuse.
Il y a de nombreuses approches différentes sur comment contourner le problème, avec un second os le long ou pas de l'avant bras, pour bien penser à faire un rigging anatomiquement correct de la structure de l'avant bras. Cependant, dans ce tutoriel, les contrôleurs seront positionnés le long de l'avant bras, pour amortir la rotation du poignet par rapport a l'orientation du coude.
Le même problème s'applique pour le bras et son comportement arrive quand il est tourné sur l'axe X.
La partie proche des épaules reste quasiment en place, mais la partie proche du coude tourne plus en suivant la rotation de l'os. La même approche peut être utilisé ici.
Ces contrôleurs sont habituellement appelez « roll divisions », et peuvent être créé automatiquement avec les rigs intégrés à XSI. C'est vraiment génial, au passage, tout est paramétré avec des opérations codées super rapides qui font tout ce qu'il faut et ce qu'il ne faut pas, assurez vous de les tester.
Maintenant nous allons paramétrer manuellement ces « rolls divisions » (séparateurs de torsion) juste pour le fun.
Image 8 – Séparation des torsions de l'avant bras
De la même manière, des Nulls peuvent être paramétré pour le bras...
Maintenant il faudrait ajouter un Null au coude et lui donner une partie de la rotation de l'avant bras, juste pour faire en qu'il soit un peu souple quand on manipule les rotations de l'axe X et pour garder le coude géométriquement où il est sensé être. Bien sûre, il se peut aussi qu'il soit lié à la rotation de l'avant bras directement et que ses valeurs relatives soient appliquées à la translation du nouveau Null, pour faire que le coude viennent un peu en dehors – et ainsi de suite...
Quand on fait la symétrie du rigging du bras, sur une autre partie du personnage, soyez sûre que les « freeze negative scaling » dans la boite de dialogue de Skeleton>DuplicateSymmetry est sur Off. Vous voulez dupliquer les contraints, et parfois, il se passe que les contrôleurs se magnétise à une position indésirable. Dans ce cas, réinitialisez simplement en remettant les coordonnées 0.
Je dis ça, évidemment, je suppose que les contrôleurs sont par défaut sur la position 0. Vous pouvez faire ça facilement en sélectionnant Create>Skeleton>SetNeutralPose pour chaque contrôleur. Et aussi, soyez sûre de bien ajuster les Expressions des contrôleurs de séparation de torsion pour que ça fonctionne correctement sur la copie symétrique (exemple : mettez les à « - rotation du poignet / 2 »...etc...)
Observez, cela demande peu de travail de transformer notre chaîne avec cette configuration. Cela peut prendre un peu de temps pour disons, les deux bras et les deux jambes d'un personnage – surtout quand on à besoin de déplacer, tourner ou ajuster les tailles de la chaîne. Il faut également réajuster toutes les Expressions pour la longueur des os, la distance réelle...etc...- assez fastidieux.
Pour éviter ça, assurez-vous que la position des os est définitive, ou utilisez un script pour automatiser un peu le processus.
Nous avons désormais terminé un rigging assez avancé d'un bras de personnage. Il est spécialement adapté aux besoins des animateurs et est capable de combler beaucoup de leurs besoins. Naturellement, différents animateurs préfère différents rigs ou différentes approches, mais j'espère que ce tutoriel vous a donné assez d'information ou idées pour devenir un spécialiste des contrôles de mouvement de bras.
N'hésitez pas à me faire part de vos remarques pour améliorer cette page d'aide. Je remercie Christoph Schinko qui a rédigé ce tutoriel en 2006 que j'ai traduit et adapté en français.
Christoph Schinko - Animateur de personnage et créateur de film indépendants, et est un instructeur certifié XSI depuis plus de 5 ans. Vous pouvez lui écrire (en anglais) à : stoph[@]christoph-schinko.com
Bloc pied de page
Bloc Utiles du site
Module de Langues