David Della Rocca
website
Size: 63 ko
Platform: Mac/PC

infos :
Si vous préférez partir de 0 et suivre ce tutorial en pas à pas, téléchargez le fichier Animate_a_car.sit et ouvrez le fichier Animator "Car_starter.prj".
Il ne comporte que le model basique de la voiture en position de départ.

Si vous êtes de ceux qui préfèrent décortiquer le projet avant de lire ces quelques lignes, ouvrez plutôt le fichier Animator "Car_finished.prj".
Celui-ci est fini et prêt à être réutilisé (voyez tout en bas de la page comment réutiliser facilement la voiture)

Animer un véhicule - Part 1
 
Voici une technique pour animer un ou plusieurs véhicules de façon réaliste sans avoir à enregistrer des tonnes de keyframes. Cela conviendra parfaitement pour animer de la circulation en ville, des courses poursuites ou bien encore des courses sur circuit. L'utilisation d'un vehicule roulant sur un terrain chaotique est traité dans "Animer un véhicule - Part 2".

Notez aussi que cette approche reste relativement basique et limitée, et que si vous désirez approfondir le sujet il faudra vous orienter vers des outils comme XPressionist ou Reelmotion.

Etape 1 - Animation de la voiture
J'ai commencé par Importer mon véhicule dans Animator en prennant soins de l'aligner sur l'axe Z dans mon modeleur.et de posé sur le sol Plutôt que d'animer directement la voiture, nous allons animer un Null Object sur lequel nous allons grouper les pièces de la voiture.

- Créez un Null Object en vue de dessus et placez-le au centre de l'essieu arrière.
- Renomez-le "Car Mover"
- Groupez dessus toutes les pièces de la carosserie (dans ce tutorial il n'y a qu'une seule pièce nommée "car"), Laissez les roues de côté pour l'instant.

- Rendez le Null Object "Car Mover" animable dans la Project window.
- Mettez la barre de temps à 2 secondes et faites avancer le véhicule de quelques mètres en ligne droite.
- Mettez ensuite la barre de temps à 4 secondes et déplacez-le sur le côté. Ajustez ensuite les vecteurs du tracé afin d'arrondir le virage (image 02).

Ne faites pas un virage trop sérré car n'oubliez pas qu'une voiture est limitée par son anle de braquage.

Mettez l'animation en lecture et vous verrez la voiture se déplacer le long du parcour que vous venez de créer. Vous constaterez aussi qu'elle reste droite au lieu de tourner comme le ferait une vrai voiture.

La contrainte Auto Bank
Nous allons maintenant appliquer une contrainte "Auto Bank" afin que la voiture s'oriente automatiquement dans le sens de la courbe.
- Revenez à 0.0 au début de l'animation
- Sélectionnez "Car Mover" dans la Project window
- Allez dans le menu "Constraint" et choisissez "Auto Bank"
Un premier message apparaitra vous avertissant que le vous ne pourrez plus animer cet objet si une constrainte est appliquée dessus. Cliquez sur OK
Ensuite une fenêtre rouge apparaitra vous indiquant que vous devez sélectionner l'objet qui doit être contraint.
- La contrainte Auto Bank s'appliquant à l'objet lui-même, cliquez sur "Car Mover"
- Tapez Esc pour terminer l'opération.

Affinons les réglages
-
Sélectionnez "Car Mover" dans la Project window
- Allez dans le menu "Constraint" et choisissez "Constraint Editor".
Dans cette fenêtre vous pouvez voir le type de contrainte appliquée, Auto Bank, ainsi que l'objet cible "Car Mover".
- Cliquez sur "Car Mover" dans la liste et réglez le paramètre "Weight" à 0.0

Mettez l'animation en lecture. Maintenant le véhicule s'auto-oriente le long du tracé . Vous noterez au passage que la contrainte Auto Bank le fait aussi s'incliner dans le virage...

Nous allons maintenant limiter l'angle de rotation afin que la voiture ne penche pas plus que la limite de ses ammortisseurs. Pour cela le paramètre "Max Roll" vous permettra de limiter l'inclinaison (en degrés) dans les virages.
Vous avez aussi un réglage de gravité qui va permettre de définir la masse de votre véhicule, le faisant ainsi pencher plus ou moins dans les virages. Voici ci-dessous quelques exemples.


Etape 2 - Animation de la direction
C'est sans doute la partie la plus compliquée de ce tutorial, celle où nous allons faire fonctionner automatiquement la direction de la voiture de façon réaliste.
- La première chose est de créer 2 Null Objects à l'endroit où pivotent normalement les roues avant.
- Nommez-les "wheel pivot L" et "wheel pivot R".

- Groupez ensuite la roue gauche sur "wheel pivot L" et la droite sur "wheel pivot R".

Bone d'orientation
- Créez un Bone en vue de dessus qui part de "Car Mover" jusqu'au milieu des deux roues avant. (Animator va automatiquement placer un Null Object à la fin de ce Bone, nommé Joint End)
- Sélectionnez le bone,allez dans le menu "Constraint" et choisissez "Position"
- Choisissez comme cible (Target) le Null Object "Car Mover".
Résultat, notre Bone suit maintenant le déplacement de la voiture, mais pas encore son orientation.

- Sélectionnez le Bone ainsi que le Null Object, allez dans le menu "Character" et choisissez "Add IK Handle"
(Le Bone et le Null Object formant un espèce de chaine, le IK handle est une sorte de poignée qui va vous permettre de controller la rotation de cette chaine).

- Groupez cet IK Handle sur Car Mover, avec la carosserie du véhicule.
- Groupez les deux roues arrières sur le Bone
- Groupez aussi "wheel pivot L" et "wheel pivot R" sur le Bone (Sur ces deux Null Objects sont déjà groupées les roues avant).
Normalement vous devriez obtenir les deux hiérarchies suivantes (image ci-contre) dont les parents sont "Car Mover" pour l'une, et Bone 1 pour l'autre.

Quelques explications :
Si nous avions tout simplement groupé les roues sur "Car Mover", quand la voiture se serait penchée, les roues auraient suivies et se seraient décollées du sol.

Il fallait donc trouver une astuce pour que les 4 roues suivent le déplacement de la voiture (Car Mover) sans qu'elles ne soient groupées dessus.
- D'où la contrainte de position qui force le Bone à suivre la voiture.

Autre problème, comment les 4 roues allaient suivre l'orientation de la voiture sans être groupées dessus. Là j'aurais pu simplement mettre une contrainte de rotation, mais malheureusement cette contrainte serait entrée en conflit avec celle que nous allons mettre ensuite sur la direction.
- D'où l'utilisation d'un Bone avec un IK Handle servant à l'auto-orienter sur la voiture.

Important : Il est préférable que vous acheviez maintenant la trajectoire complète du véhicule, avec les virages, les freinages, les accélération... bref, tout, car nous allons ensuite dupliquer "Car Mover" et sa copie devra le suivre fidèlement. C'est pour cette raison que je vous conseil de finir l'animation de votre voiture (Car Mover) avant.

Quand vous avez fini le parcour du véhicule, revenez à 0.0 dans la Project window.
- Dupliquez "Car Mover" et supprimez tous ces enfants (que c'est cruel la 3D)
- Renomez-le "wheels direction"
Ce Null Object va donc suivre exactement le même parcour que "Car Mover".
- Ouvrez la fenêtre "Constraint Editor" de "wheels direction"
- Suprimez la contrainte existante ("Car Mover" dans la liste).

Auto Bank
- Allez dans le menu "Constraint", choisissez "Auto Bank" et appliquez-lui à lui-même.

Dans la fenêtre "Constraint Editor" vous devez voir maintenant dans la liste "wheels direction" à la place de "Car Mover".
- Réglez le "Weight" sur 0.0


Contrainte de rotation sur les roues
Maintenant nous allons forcer les roues à suivre la rotation de "wheel direction".
- Pour cela remettez-vous à 0.0 dans la project window
- Dégroupez les deux Null Objects de la direction, "wheel pivot L" et "wheel pivot R", en laissant les roues groupées dessus.
- Sélectionnez "wheel pivot L" et appliquez-lui une contrainte de rotation en choisissant comme cible le Null Object "wheel direction". Faites la même chose avec "wheel pivot R".
Maintenant vous pouvez re-grouper "wheel pivot L" et "wheel pivot R" sur le Bone 1.

- Sélectionnez "wheel pivot L" et ouvrez la fenêtre Constraint Editor.
Décochez les rotation X et Z afin que les roues ne pivotent que sur leur axe Y.
Faites la même chose avec "wheel pivot R".

Dernier et important paramètre à régler :
- Ouvrez la fenêtre Constraint Editor de "wheels direction"
- Décochez Enable Auto Roll et réglez Anticipate sur 0.7
Grace à ce paramêtre Anticipate, les roues vont tourner plus tôt que le véhicule, ce qui simulera parfaitement l'effet d'inertie due au poid de la voiture.



Etape 3 - Animation des roues
Cette dernière étape est relativement simple comparée aux précédentes, mais ici, nous allons nous heurter à une limitation. Cette limitation est qu'il n'y a aucun outil dans Animator permettant de faire tourner les roues automatiquement en fonction de la vitesse du véhicule.
Les seuls outils pouvant faire ça pour le moment sont XPressionist ou ReelMotion.

En attendant, voici une formule simple que vous pouvez utiliser pour faire tourner vos roues sur un parcour sans freinage ni accélération :

- Prennez le diamètre de la roue de votre véhicule (Allez dans la fenêtre info et regardez le "Size Y")
Disons que ce soit 60 par exemple...
Multipliez le diamètre par 3.14 vous donnera la circonférence de la roue, donc la distance que la voiture parcourera pour un tour complet de roue.
60 x 3.14 = 188.4
Si votre voiture parcoure au total 1000 unités, faites :
1000 divisé par 188.4 = 5.3
Donc il faudra faire faire 5.3 tours à la roue pour que l'animation paraisse réaliste... c'est à dire ;
5.3 x 360 = 1908 degrés de rotation
Voilà, c'est fini pour l'animation des roues, et de la voiture.

Pour changer l'animation de la voiture, c'est à dire le déplacement de "Car Mover" :
- Effacez les keyframes existants de "Car mover" - Réenregistrez votre nouveau parcour
- Copiez les positions X et Z en mode Keyframe et collez-les dans les positions X et Z de
"wheel direction" afin qu'il re-suive "Car mover". Vous verrez, la manip prend 10 secondes.

Pourquoi tous ces Null Objects ? L'avantage des Null objects est que vous pouvez changer toutes les pièces de ce véhicule et les remplacer par vos propres models.
En admettant que vous gardiez la même échelle vous n'aurez pas grand chose à modifier à part l'empattement des roues et la hauteur de la carosserie.

Import de vos propres models :
- Si possible, importez votre véhicule dans le sens de l'axe Z
- Soyez sur de son échelle
- Placez-le au raz du sol dans votre modeleur (plutôt que dans Animator)
- Je vous conseille aussi vivement de commencer avec un model à basse résolution, mais ayant le même gabarit que le véhicule final, vous gagnerez du temps.

Allez, conduisez bien et soyez prudent avec ma voiture :-)
David