Animation d'un bras mécanique par la cinématique inversée

Écrit le 04/04/2004 par RedEyes
Dernière mise à jour : 31/01/2006

Introduction

Voici un objet que j'ai modéliser pour cette leçon, il represente un bras mécanique.
j'ai pris soin de décomposer mon objet en plusieur calque afin de voir plus distinctement, la procédure que j'ai adopté, pour la création de ce bras mécanique.

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image01.jpg

Voici Les SOURCES (Objets et Scènes)

Les contraintes de modélisation

Vous pouvez animer un bras mécanique de deux manieres, animation par pivot, ou avec la cinématique inversée (IK). nous allons voir les contraites pour l'animation par IK.

Vous pouvez utiliser plusieurs Calques pour animer votre bras mécanique , mais nous allons plus simplement mettre tout sur le même calque,

Les Skelegons

a. Etre le plus précis possible

Commençons par la pose des skelegons (bones), mais pour bien faire nous allons cloner certain point du modele .

Ces deux là :)

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image06.jpg

Et celui çi qui se cachait :D

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image07.jpg

clonez ces 3 points dans un autre calque

ensuite placez les layers du modele en arrière plan afin de positionner parfaitement les points sur l'axe Z, c'est à dire au même niveau que le point correspondant au Layer C.

la meilleur méthode est de passer par le panneau "information" (i)
de récuperer la valeur Y du 3ème point ()

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image08.jpg

Sélectionner les deux autre point et coller leur la valeur récupérer, qui est de "0" dans la case correspondant a l'axe Y

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image09.jpg

une autre methode :

on récupere le valeur Y, ensuite on sélectionne l'outil "set value" (ctrl+V) et on entre 0 pour L'axe Y.

voila ce quon à dans notre calque

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image10.jpg

placez un dernier point comme ceci avec l'outil "Points" (+)

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image11.jpg

b. La pose des Skelegons

mantenant selectionnez l'outil Skelegon sur l'onglet "Create"

et dessinner vos skelegons aproximativement au niveau des points...
Attention !! A la pose du premier skelegon il faut glisser avec la souris sinon vous aurez un skelegon a 1 point a effacer depuis le panneau Statistiques (w)

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image12.gif

Ensuite selectionnez l'outil Snap (G) puis snappez les skelegons sur vos 4 points.

un petit conseil utilsez Merge points (M) pour éliminer les points qui ont servi au Snap.

Voila vos skelegons sont parfaitement alignés sur l'objet passons aux Weight Maps...

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image13.jpg

une fois cette étape fini, Sauvegardez !!

Les Weight Map

/! Attention : Cette étape n'est pas importante pour l'animation par Pivot

a. Création des weight map pour animation Par Bone et IK.

Passez en Vue "Weight Shade"

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image14.jpg

selectionnez tout les polygones du Layer A

Ensuite en bas a droite du modeler ce trouve un bouton "W" activé le et sur le menu déroulant a droite choississez "(New)"

Ce panneau s'affiche donner un Nom a la weight map , par exemeple "Axe1"

laissez comme valeur "100%"

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image15.jpg

activé le Layer B et renouvellez l'opération en donnant pour nom "Axe2" et "Axe3"

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image16.gif

d. Attribution des Weight maps aux Skelegons

Ouvront le Skelegon Tree qui se situe sur l'onglet "Détails"

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image17.jpg

Pour vous y retrouvez , vous pouvers nommer vos Skelegons comme vaut weight map.

Double cliquez sur la case d'un skelegon sur la partie Weight map. hop ! un panneau s'ouvre chossissez la bonne weight map (Bone01 avec Axe1, Bone02 avec Axe2 et Bone03 avec Axe3...

une fois cela fait Sauvegardez !!

Vertex Paint

Cette outil extraordinaire sert a faire beaucoup de chose, mais il va juste nous servir a verifier le positionnement de l"Axe de Rotation "Bank" qui est la rotation du bone sur lui même .

Avant d'activer la fenetre de vertex paint qui se trouve onglet "Map", il vous faut selectionner tout vos calques "objet" et "skelegons"

une fois ceci fait activez le vertex paint, et çà donne...

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image18.jpg

choissisez le mode d'affichage "Weight Value"

Pour sélectionner un Bone il faut utiliser les fleches "haut" et "bas" du clavier

Sur le Bone01 seul nous interesse l'axe de rotation "Heading" (le Rouge)
Pour le Bone 02 c'est l'axe "Pitch" (le Vert)
Le Bone03 n'as de rotation logique que sur l'axe "Bank" (le Bleu)

Pour tester la rotation des bones maintenez CTRL enfoncer et faite glisser les axes de rotation.

une fois que vous avez un peu vu le resultat, sortez du vertex paint, sans sauvegarder pour revenir a l'état initial de votre modélisation.

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image19.jpg

Mais fois ceci fini vous aller réunir tout les élément de l'objet sur un seul et unique calque

Ensuite sauvegardez votre objet !

Conversion des skelegons en Bones

Charger votre objet dans le layout.

Vous N'avez qu'un seul layer(objet et skelegon) , selectionnez le et aller sur l'onglet "Items" puis ADD > Bones > Convert Skelegons to Bones .

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image25.jpg

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image26.jpg

Voila les bones, activez la vue Rayon X pour voir les bones a l'interieur de l'objet

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image27.jpg

on distingue les bones à travers l'objet

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image28.jpg

Parentage des Bones dans scene editor

Ouvrez l'éditeur de Scène

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image29.jpg

vous remarquerez que a la création des skelegons le parentage a été sauvegardé, vous n'avez donc rien a faire ormis cocher la case "Use Weight Map Only" des propriétées de chancun des 3 bones.
Il faut simplement double cliquer sur le Bone a éditer dans l'éditeur de scènes

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image30.jpg

Verifiez Que "Use Bone From Object" Soit sur "Self"
Puis tant que vous y étes , verifiez que les bonne Weight maps on été attribuées.

Pose des Objets Nulls (Master et Goal objects)

Les Masters et le Goal peuvent etre des bones ou des object null, nous allons utiliser les objet Null dans la suite de cette leçon.

a. Les Master Object

Le Master est l'objet null qui va etre parent de l'objet à animer, ainsi quand vous bougerez le master tout la modelisation suivra...

Pour créer le Master, aller sur l'onglet "Items" et ensuite Add > Object > Add Null

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image31.jpg

Nommez le Master

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image32.jpg

et placer le approximativement ou commence le "Bone01"

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image33.jpg

Ensuite dans l'editeur de scène, faite glisser l'objet sur le Master

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image34.jpg

b. L'objet Goal

L'objet Goal sert de point de viser au Bone auquel il est parenté.

Pour créer l'objet Goal, aller sur l'onglet "Items" et ensuite Add > Object > Add Null et nommez le "IK_Goal"

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image35.jpg

Ensuite placer le a l'extremité du bras mécanique comme suit...

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image36.jpg

Dans l'éditeur de scène, glissez l'objet Goal sur le Master afin que Master soit le parent de l'objet Goal.

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image37.jpg

Selectionnez "Bone02" et ouvrez Motion Options, qui se trouve sur l'onglet "Items" et attribué lui l'Objet Goal en "Target"

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image38.jpg

Maintenant quand vous bougez l'objet Goal, le bone02 et le bone03 pointe vers vers ce dernier.

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image39.jpg

Pour éviter que les bones pointes dans un axe qui ne convient pas selectionnez l'Objet Goal et dans le coin bas a gauche du Layout déactivez l'Axe Y.

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image40.jpg

Maintenant passons à la Configuration des Joints.

Configuration des joints

Alors la configuration des joints consiste a restreindre a des bones les Axes de Rotation.

a. Configuration de l'affichage des poignets de rotation

Les étapes qui suivent sont facultatif, ceci sert simple a parametre les poignets de contrlo et ne pas etre géné par les axe de rotaion qui ne sont pas utile dans l'animation.

Sélectionnez le "bone01"et l"outil de rotation. Il n'a qu'un sens de rotation logique, c'est l'axe appelé "Heading" (le rouge)

Dans le coin bas à gauche du layout vous pouvez désactiver le "Pitch" et le "Bank"

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image41.jpg

Selectionnez le "Bone02" vous ne devez garder que le Pitch (le vert) , par conséquent déactivez "Heading" et "Bank"

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image42.jpg

pour le Bone03 il ne faut garder que le "Bank" (le Bleu) déactivez donc "Heading" et "Pitch"

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image43.jpg

a. Définition d'un joint

Un joint est une articulation. Il existe les articulations dites "Planar" ou 2d et les articulations dites "Ball" ou 3d.

Toutes les articulations de notre bras mécanique sont planar :

Bone01 : Heading
Bone02 : Pitch
Bone03 : Bank

Allez sur les Motion Options de chaque Bone pour activé la cinématique inverse de chacun

Configuration du Bone01:

IK et Modifiers

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image44.jpg

Dans "Goal Object" choisissez "IK_Goal".

Controllers and Limits

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image45.jpg

Dans Heading Controller, choisissez "Inverse Kinematics".

Configuration du Bone02:

IK et Modifiers

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image46.jpg

Dans Target Item, choisissez "IK_Goal".

Controllers and Limits

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image47.jpg

Dans Pitch Controller, choisissez "Inverse Kinematics".

Configuration du Bone03 :

IK et Modifiers

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image48.jpg

Dans "Goal Object" choisissez "IK_Goal" et cochez "Full IK".

Controllers and Limits

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image49.jpg

Dans Bank Controller, choisissez "Inverse Kinematics".

Définition des limites

Au niveau du Bone02 la deuxiement partie du bras doit buter sur la premiere partie comme vous pouvez le voir ci-dessous.

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image50.jpg

Nous allons donc restreindre la rotation d'un dégrés "Minimum" a un degrés "Maximum"

Ouvrez les "Motion Options" du "Bone02" et sur l'onglet Controllers and Limits, nous allons régler les limites de rotation du "Pitch".

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image51.jpg

Activez "Pitch Limits" et ajuster la valeur minimum et maximum . vous remarquerez ques l'axe de rotation devient plein

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image52.jpg

il faut ajuster en fonction de la pose au repos.

Pour en Finir avec la configuration des joints, vous pouvez ajouter des limites au Bone01"

Animation

Vérifiez que la poignée de controle de translation de IK_Goal est désactivé sur l'axe Y

http://www.game-lab.com/images/tuts/lightwave_brasmeca_cinematique/image40.jpg

ensuite vous n'avez pu qu'a bouger IK_goal et de creer vos frame clés pour faire votre animation.

Voila la mienne :D Petite animation a base De cinématique inversée

Conclusion

La cinématique Inversée est un outil très puissant d'animation, elle sert beaucoup dans l'animation de personnage.

Pffuuuu... c'etait très long mais on y est arrivé ! =D