Robert Jan Kila
website

Piston_projects
Universe 5.x and later
Size: 53 ko
Platform: Mac/PC

infos:

Piston tutorial
 
Dans ce tutorial nous expliquons une technique simple pour animer un piston sans avoir à enregistrer des douzaines de keyframes. Parce qu'il n'est pas possible d'appliquer une contrainte de position à chaque extrémité d'un bone, nous allons devoir utililiser une vilaine ruse pour que cela fonctionne.
Etape 1 - Les models
Nous allons commencer par construire un piston basique et un axe. Téléchargez et ouvrez le fichier
Piston Begin.prj et observez bien où sont placés les objets et la façon dont ils sont groupés.
En temps normal le mouvement du piston est du à une explosion du carburant. Le piston déplace alors la biele qui fait tourner une roue, puis le vilbrequin.
Ce vilbrequin qui tourne sur son axe peut aussi éventuellement faire tourner des roues. Fin de la parenthèse, c'était juste pour expliquer un peu comment un moteur fonctionne :-)

Etape 2 - Placer les "null" objects et le "bone"
Commençons par positionner 2 Null objects, "Eff Main axis" et "Eff Axis target", tel que sur l'image ci-contre. Goupez le deuxième Null object sur le premier.

Nous allons créer et placer maintenant 2 autres nulls (vous pouvez aussi dupliquer les 2 premiers) et groupez-les ensemble comme vous pouvez le voir sur la seconde image. Renomez ces 2 null objects "Eff axis duplicate" et "Eff axis duplicate target".
Bon, jusqu'ici, tout baigne !
Maintenant vous allez placer un bone qui part de "Eff axis duplicate target" jusqu'à "Eff Axis target". Tapez "ESC" pour finir l'opération.
Nous nous trouvons maintenant avec un bone et un "joint end" (le "joint end" n'est qu'un null object qu'Animator place systématiquement à l'extrèmité du dernier bone d'une chaine) Sélectionnez le bone et le joint end, puis choisissez Add IK Handle dans le menu Character.

Là on y est presque. Tous les éléments sont maintenant placés et il ne manque plus que les contraintes
En premier nous allons appliquer une contrainte de rotation aux null objects. Selectionnez "Eff Main axis" et choisissez Rotate dans le menu Constraint. Un message apparaittra vous disant que les pistes d'animation vont être effacées pour pouvoir appliquer cette contrainte. Tapez OK.
Sélectionnez "Eff axis duplicate". Ouvrez la fenêtre Constraint Editor (menu Constraint) et vérifiez que le nom "Eff axis duplicate" soit bien affiché dans la liste.


Sélectionnez maintenant "Eff axis duplicate" et activez le triangle vert à gauche de son nom. Avancez le curseur dans la project window à 2 secondes, ouvrez sa fenêtre Info Window et entrez 360 dans le champ rotation Y. Pour que le null continu sa rotation pendant un certain lapse de temps, nous devons faire se répéter la rotation.
Ouvrez les pistes d'animation de "Eff axis duplicate" en cliquant sur sa flèche bleue. Ouvrez la piste Yaw(Y), toujours en cliquant sur la flèche bleue.
Mettez l'affichage de la project window en mode Frame (il doit se trouver par défaut en mode time).
Sélectionnez ensuite les frames de 0 à la 59ème (la dernière frame du cycle si vous êtes resté à 30 images/seconde). Choisissez Repeat dans la project window et dans le menu dont l'icône est une flêche en rotation (image ci-contre).
La fonction Repeat va créer un cycle qui va répéter la rotation en boucle jusqu'à la fin de l'animation.

Remettez l'affichage de la project window en mode time et refermez toutes les pistes d'animation.

.
Window toolbar

Sélectionnez Bone 1 et choisissez Position dans le menu constraint, tapez OK sur le message d'alerte puis cliquez sur "Eff axis duplicate target", et pour finir tapez "ESC".
Selectionnez Joint End et contraignez sa position à "Eff Axis target". Quand c'est fait tapez "ESC" de nouveau pour terminer l'opération. Maintenant faites exactement la même chose avec "IK Handle 1".


Le moment est arrivé d'essayer la rotation de notre piston. Lancez la lecture de l'animation dans la fenêtre de caméra... Ohhh, il y a quelque chose qui cloche, le Bone 1 ne se déplace pas sur l'axe Y!!! Bon, bin il ne nous reste plus qu'à bloquer ce bone afin qu'il ne bouge que sur l'axe Y durant la rotation des null objects.
Pour cela sélectionnez le Bone 1 et ouvrez la fenêtre Joint Editor dans le menu Hierarchy. Cliquez dans le menu déroulant Link type et choisissez custom.

Cochez toutes les cases sauf Lock Y Position puis refermez cette fenêtre. Relancez le preview dans la vue de camera et voyez comme le Bone reste sur l'axe Y.

Roll (z) cells


Un p'tit dernier pour la fin... nous allons placer un Null supplémentaire. Mettez ce Null en mode d'affichage Box (dans sa fenêtre info) et placez-le pile-poil sur "Eff axis duplicate target".

Ce sera le Null auquel le vrai piston sera groupé, mais là c'est plus histoire de se faire plaisir qu'autre chose. Donc pour finir il nous reste encore une contrainte à appliquer.
Sélectionnez le Null Box et appliquez-lui une contrainte de position en choisissant comme cible "Eff axis duplicate target".

Groupez ensuite tous les objets sur les Nulls correspondants :
- Groupez" turnwheel" (avec ses enfants) sur "Eff main axis"
- Groupez "Axis" sur "Bone 1"
- Groupez "Piston" (avec ses enfants) sur "Eff Cylindermover"

Masquez tous les Null objects et voilà, votre piston est fin prêt... Alors sauve qui peut, les moteurs vont rugir !!! ;-)

La project window
avec les objets groupés