Chenille de char souple (la chenille, pas le char)

Transcription

Chenille de char souple (la chenille, pas le char)
Chenille de char souple (la chenille, pas le char)
Comme beaucoup de gens, j’ai un tas d’idées 3D dans la tête, et la plupart du temps je
commence directement de modéliser quelque chose dans Blender. Et comme beaucoup
de gens, je sais que ce n’est pas vraiment une bonne méthode, mais je le fais fréquement
parce que je suis trop paresseux pour attaquer mes projets plus méthodiquement.
Il y a deux semaines, j’étais en week-end wellness avec ma copine. Trois jours sans
ordinateur, enfer ou paradis ? Bon, sans ordinateur, mais pas vraiment sans Blender,
parce que je ne pouvais pas me sortir certaines idées de la tête. Donc j’avais juste à
laisser mon corps se détendre et mon esprit choisir entre “ne penser à rien” et “B…2.48a”.
Devinez la suite, … j’ai pris un crayon, une feuille de papier, et j’ai commencé à faire
quelques croquis.
La meilleure partie de cette histoire, c’est que j’avais beaucoup de temps pour développer
le projet, avant de pouvoir finalement construire les premiers objets dans Blender. Les
idées étaient nombreuses et grandissantes chaque minute. J’avais déjà une liste de
problèmes, quelques solutions, des alternatives et autres options.
Une fois retour à la maison, j'ai testé certains points critiques dans Blender et j'ai soumis
les questions insolubles à la légendaire et célèbre communauté francophone du
BlenderClan (http://blenderclan.tuxfamily.org).
Note pour les débutants (comme moi, parfois) : Essayez de réduire votre problème à
son état le plus simple pour trouver des solutions. Ouvrez un nouveau fichier Blender,
ajoutez juste le strict minimum dont vous avez besoin pour attaquer le problème et
expérimenter avec ça. Si vous ne parvenez pas à trouver une solution, vous pouvez
poster une demande précise sur un forum (comme http://blenderartists.org), expliquez la
situation et donnez éventuellement le fichier. Avec un peu de chance, vous recevrez un
grand nombre de suggestions. Veillez à ne pas poser trop de questions en même temps,
car les réponses risquent d’être plus vagues et moins nombreuses.
Définitions :
Voici encore quelques définitions fondamentales qui devraient vous aider à comprendre le
principe général qui a guidé à ce projet.
•
•
Créer des animations avec un seul et unique IPO (The "One Ipo Research Attitude" ou
OIRA, terme anglais que j’ai pondu pour l’occasion, et qu’on pourrait traduire par "La
méthode de recherche de l’IPO unique". Bref, autant en anglais je trouvais ça rigolo,
autant en français, ça sent un peu le… bouffon.
Quand un IPO unique n’est pas possible, alors, aussi peu d’IPO que possible ou
AFAPIRA ("As Few As Possible Ipo Research Attitude")
Dans la série “OIRA or AFAPIRA”, on commence par :
• Utiliser des contraintes pour que les roues d’un véhicule restent sur le sol (Mesh)
• Créer une chenille de char souple, avec une inertie dynamique, en d’autres termes un
objet Curve Path souple mais non élastique (donc à longueur constante)
• Aucune addition de script Python, je ne suis pas encore assez intime avec le Python
(mais les PyDrivers sont autorisés)
• Utiliser les Modifiers and Constraints de Blender 2.48a
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 1 / 39
Alain Mathez
1) Layer 1 : le sol (floor)
Ouvrez un nouveau fichier Blender, effacez tous les objets, affichez seulement le Layer 1
(1), passez en vue de dessus (Numpad 7), ajoutez un Mesh Plane (Space, Mesh, Plane),
en Edit Mode (Tab) sélectionnez (RMB, Shift+RMB) et effacez (X, 1) les deux Vertices du
haut, sélectionnez l’arête restante (A) grossissez la de 20x (S, 20, Enter), subdivisez la
21x (W, 2, Number of cuts :21).
Img-00050t.PNG
Sélectionnez les Vertices sur la partie positive de l’axe X (B, LMB+BougerSouris), et
cachez les (H).
Img-00100t.PNG
Passez en vue de face (Numpad 1) sélectionnez les deux Vertices du centre, enclenchez
le Proportional Edit Tool (O), sélectionnez Random Falloff, bougez les Vertices de 1BU
(Unités Blender) le long de l’axe Z, en ayant tous les Vertices dans le cercle de sélection
(G, Z, MoletteSouris)
Img-00150t.PNG
Img-00200t.PNG
Passez en vue de dessus (Numpad 7), affichez les Vertices invisibles (Alt+H),
sélectionnez tous les Vertices (A, A), extrudez 2BU le long de l’axe Y (E, 1, Y, 2, Enter).
Img-00250t.PNG
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 2 / 39
Alain Mathez
Sélectionnez tous les Vertices (A, A), recalculez les normales (Ctrl+N), passez en Object
Mode (Tab), ajoutez un Modifier Subsurf (Ctrl+2).
Img-00300t1.PNG
Img-00300t2.PNG
Renommez le Plane en Floor et cochez SetSmooth.
Img-00350tm.PNG
2) Layer 2 : Les projections
affichez seulement le Layer 2 (2), passez en vue de dessus, ajoutez un Mesh Plane and
modifiez le pour obtenir 10 arêtes de longueur 1BU (Unités Blender) en ligne droite. En
mode Object, placez cette ligne à X=5, Y=0, Z=10, donnez-lui le nom de ProjectionFloor
et vérifiez la position du centre par rapport aux Vertices !
Img-00400t.PNG
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
Img-00450t.PNG
page 3 / 39
Alain Mathez
En Edit Mode, ouvrez le panneau “Link and Material” (F9), ajoutez un Vertex Group (New),
nommez le Pr1, sélectionnez seulement le premier Vertex sur la gauche, pressez Assign.
Ajoutez un Vertex Group (New), nommez le Pr1b, assignez à ce groupe seulement le
second Vertex, et ainsi de suite pour Pr2, Pr2b, Pr3, Pr3b, … Pr6.
Img-00500tm.PNG
3) Layer 3 : les (beaux) parents
Laissez le Layer 2 activé, affichez aussi le Layer 3 (Shift+3), passez en vue de face,
ajoutez un Empty (Space, Empty), nommez le Pr1, placez le exactement à la même place
que le premier Vertex de ProjectionFloor, en utilisant la touche Ctrl pour "coller" à la grille
(G, Ctrl+MouseMove). Si l’Empty n’a pas son axe Z pointant vers le haut, vérifiez dans les
User Preferences que le bouton “Aligned to View” ne soit pas enclenché.
Img-00550tm.PNG
Ajoutez un Empty, collez le à la grille à la même position que le deuxième Vertex, nommez
le Pr1b. Faites de même avec Pr2, Pr2b, … Pr6. Vérifiez en vue de dessus que la
position des Empties soit correcte aussi sur l’axe Y. Dans le panneau “Draw” (F7), affichez
le nom des différents objets des Layers 2 et 3.
Img-00600t1.PNG
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 4 / 39
Alain Mathez
Img-00650t.PNG
Img-00600t2.PNG
Sélectionnez le Mesh ProjectionFloor (RMB), passez en Edit Mode (Tab), sélectionnez
seulement le premier Vertex sur la gauche (RMB). Toujours en Edit Mode, sélectionnez
l’Empty correspondent Pr1 (Ctrl+RMB) et définissez le Vertex comme Parent de l’Empty
(Ctrl+P).
Img-00700t.PNG
Ensuite sélectionnez le deuxième Vertex (RMB) et le deuxième Empty (Ctrl+RMB),
"parentez" les (Ctrl+P), et ainsi de suite jusqu’au dernier Empty. Quand vous avez fini, si
vous bougez un Vertex (G+MouseMove), l’Empty correspondant doit suivre.
Img-00750t.PNG
Bon, c’était juste pour s’assurer que la méthode fonctionne, ne
moment (Esc). Maintenant, la première astuce. Passez en vue
affichez aussi le premier Layer (Shift+1) pour voir le Mesh Floor,
ProjectionFloor, allez dans le panneau “Modifiers”, ajoutez un
définissez les paramètres comme ci-dessous et vérifiez le résultat.
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 5 / 39
bougez rien pour le
de face (Numpad1),
sélectionnez le Mesh
Modifier Shrinkwrap,
Alain Mathez
Img-00800t1m.PNG
Img-00800t2.PNG
Devinez quoi, vous devez faire la même chose pour tous les Vertex Groups, … mais pas
de panique, si vous cliquez sur le bouton “Copy” à droite du Modifier, vous obtenez sans
effort une copie complète, dans laquelle l’unique changement à effectuer est le champ
VGroup : Pr1b, Pr2, Pr2b, …Pr6. Maintenant si vous bougez le Mesh le long de l’axe X,
vous devez voir les Empties coller au sol. Plutôt marrant non ?
Img-00850t.PNG
4) Layer 4 : la chenille
Affichez seulement le Layer 4 (4), vue de face (Numpad1) ajoutez quelques Curves Bezier
comme repères pour positionner la Curve NURBS Circle qui servira de chemin pour la
chenille. Nous n’avons pas besoin de Curves 3D, donc il faut pivoter la Curve (en mode
Object) autour de son axe X. allez dans le panneau “Transform Properties” ajustez la
rotation de RotX. Et n’oubliez pas de nommer tous vos objets.
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 6 / 39
Alain Mathez
Img-00900t1m.PNG
Img-00900t2.PNG
Note pour les paresseux (comme moi, parfois) : Essayez de coller le plus possible les
points de contrôle du chemin PathCaterpillar sur la grille (zoomez si nécessaire) parce
que vous aurez bientôt à aligner des Bones et des Empties sur chacun de ces points. Il
sera donc plus facile de le faire avec une extrême précision si chaque objet peut être lui
aussi collé à la grille.
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 7 / 39
Alain Mathez
Img-00950tm.PNG
Note pour tout le monde (comme moi, parfois) : lorsque vous avez défini la forme de
votre chemin, vérifiez qu’il a une longueur "ronde". En effet, les maillons seront ainsi plus
faciles à adapter (par exemple 50 maillons de largeur 1BU sur un chemin de longueur 50).
Img-00950t2m.PNG
Sélectionnez tous les Vertices, allez dans le panneau “Curve Tools” (F9 quand la Curve
est en Edit Mode), mettez le Order U à 3, et attribuez à tous les Vertices un poids de 1.
Img-00950t3m.PNG
Note pour les gens pressés (comme moi, parfois) : il est important de donner au
chemin PathCaterpillar une forme de corde détendue, parce que lorsque nous lui
donnerons un mouvement, la chenille va se tendre. Mais rappelez-vous, ce n’est pas
élastique, donc la longueur doit rester constante.
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 8 / 39
Alain Mathez
Img-01000t.PNG
Au repos le chemin doit ressembler à une corde détendue, parce que bientôt du
mouvement devra tendre tout cela.
Img-01050t.PNG
5) Layer 5 : les contraintes
Nous allons configurer plusieurs contraintes sur des Empties. Ce système va nous aider à
positionner le châssis du véhicule, et à déformer la future Armature qui contrôlera notre
actuelle Curve PathCaterpillar.
Affichez les Layer 3, 4 and 5 (3, Shift+4; Shift+5), ajoutez un Empty, nommez le
PositionFrame1, réglez sa taille à 0.5 dans le panneau “Links and Material”, donnez lui
l’Empty Pr1 comme Parent (RMB on PositionFrame1, Shift+RMB on Pr1, Ctrl+P, Enter),
et déplacez le de 1BU au dessus de Pr1. Faites de même pour PositionFrame2 (Parent =
Pr3b), et PositionFrame3 (Parent = Pr6).
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 9 / 39
Alain Mathez
Img-01100t1.PNG
Img-01100t3.PNG
Img-01100t3.PNG
Ajoutez un Mesh Plane, nommez le AverageFrame modifiez le pour obtenir trois Vertices
en ligne droite sur les positions de PositionFrame1, PositionFrame2 and
PositionFrame3. Ajoutez une contrainte Hook à chaque Vertex pour l’Empty
correspondant.
Img-01150t1.PNG
Img-01150t2.PNG
Passez en Object Mode, ajoutez un Empty, nommez le OrientateFrame, placez le sur
PositionFrame2, sélectionnez l’Empty OrientateFrame (RMB) et le Mesh AverageFrame
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 10 / 39
Alain Mathez
(Shift+RMB), passez en Edit Mode (Tab), sélectionnez les trois Vertices (A), et définissez
les (ensemble) comme Parent de l’Empty (Ctrl+P, Enter).
Img-01200t.PNG
Maintenant affichez aussi le Layer 2 (Shift+2). Sélectionnez le Mesh ProjectionFloor, et
bougez le sur l’axe X, vous devez voir que l’Empty OrientateFrame suit le Mesh
AverageFrame. Cependant, quand le Mesh Floor du Layer 1 (actuellement caché) va
vers le haut, OrientateFrame bascule la tête en bas. Pour corriger ça, ajoutez lui
simplement une contrainte Copy Rotation sur PositionFrame1, Influence 0, et une
contrainte TrackTo (Ctrl+T, 1) sur PositionFrame3. Comme ça vous avez deux choix pour
tester plus tard. Soit l’un, soit l’autre, voire un peu des deux.
Img-01250t.PNG
Img-01300t.PNG
Passez en vue latérale (Numpad 3), ajoutez un Mesh Plane, nommez le SoftFrame,
passez en Edit Mode (Tab) tournez le Plane autour de l’axe Y (R, Y, 90, Enter).
Sélectionnez seulement les deux Vertices du haut, fusionnez les (W, 5, 3, Enter),
sélectionnez tout (A, A), subdivisez (W, 1) et déplacez l’ensemble de 1BU vers le haut (G,
Z, 1, Enter). Définissez les paramètres dans le panneau “Soft Body” (F7, F7) comme cidessous.
Img-01350t1.PNG
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
Img-01350t2m.PNG
page 11 / 39
Alain Mathez
Img-01400t1.PNG
Img-01400t2m.PNG
Img-01450t2.PNG
Cette méthode n’est pas la mienne, vous pouvez obtenir les détails
www.blendernation.com, plus précisément ici :
http://www.blendernation.com/2008/02/12/automatically-generated-camera-shaking/
Et vous trouverez la description sur http://blenderartists.org, à cette adresse :
http://blenderartists.org/forum/showthread.php?t=116699
Merci yoyofargo!
sur
Ajoutez un Empty à l’origine de SoftFrame, nommez le SoftDynamicFrame donnez lui
les trois Vertices centraux comme Parent.
Img-01500t.PNG
Img-01550t.PNG
Grâce à ça, l’Empty SoftDynamicFrame pivotera légèrement en fonction du mouvement
de SoftFrame. L’angle résultant sera utilisé pour déformer la future Armature.
Ajoutez un Empty AngleFrame 2BU au-dessus de OrientateFrame, définissez
OrientateFrame comme Parent de AngleFrame. Ajoutez une contrainte Copy Rotation à
AngleFrame sur SoftDynamicFrame, laissez seulement Y et Influence à 0.1.
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 12 / 39
Alain Mathez
Img-01600t2m.PNG
Img-01600t1.PNG
Sélectionnez la Curve PathCaterpillar et donnez-lui AngleFrame comme Parent. Si vous
déplacez le Mesh ProjectionFloor, alors PathCaterpillar doit suivre la pente du Mesh
Floor. Si vous tournez l’Empty SoftDynamicFrame autour de l’axe Y, PathCaterpillar
doit suivre cette rotation.
Ouaow, respirez un bon coup et allez prendre une boisson fraîche, vous n’êtes pas encore
arrivés à la moitié !.
Prêts ? Ajoutez un Empty CenterMidWheel, dont le Parent doit être AngleFrame, ajoutez
un Empty IKTargetMidLeft et un Empty IKTargetMidRight, les deux ayant pour Parent
CenterMidWheel. IKTargetMidLeft et IKTargetMidRight doivent être placés sur les
Vertices correspondants de PathCaterpillar.
Img-01650t.PNG
Ajoutez un Empty CenterFrontWheel, avec pour Parent AngleFrame. Tournez-le de -90°
autour de l’axe Z (R, Z, -90, Enter). Cette orientation particulière sera utile pour une future
contrainte IK.
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 13 / 39
Alain Mathez
Img-01700t.PNG
Cet Empty devra tourner dans le sens inverse de AngleFrame. Pour réaliser ce tour de
magie, nous avons besoin d’un autre Empty PivotFrontWheel, dont le Parent est
AngleFrame. Ajoutez une contrainte Transformation à PivotFrontWheel. La cible
(Target) de cette contrainte est SoftDynamicFrame.
Img-01750t1.PNG
Ensuite CenterFrontWheel
PivotFrontWheel.
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
Img-01750t2m.PNG
va
recevoir
page 14 / 39
une
contrainte
Copy
Rotation
sur
Alain Mathez
Img-01800tm.PNG
Si vous tournez SoftDynamicFrame, vous devriez voir quelque chose comme ça.
Img-01850t.PNG
Pas trop le mal de mer ? Alors faire la même chose pour le côté droit.
Img-01900t1.PNG
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
Img-01900t2.PNG
page 15 / 39
Alain Mathez
Img-01950t1.PNG
Img-01950t2.PNG
6) Layer 5 : l’Armature
Ajoutez une Armature sur le Layer 6. Notez que chaque os (Bone) commence et fini sur
un point de contrôle de la Curve PathCaterpillar, à l’exceptions de quelques uns que vous
pouvez voir ci-dessous. L’origine de l’Armature est sur la position de OrientateFrame, et
le Parent de l’Armature est également OrientateFrame.
Img-02000t.PNG
Quand l’Armature est définie, en Edit Mode sélectionnez tous les Bones (A) et recalculez
l’angle de roulis (Ctrl+N, 1).
Il est temps d’ajouter les contraintes IK. L’Armature est en Object Mode. Sélectionnez
l’Empty CenterFrontWheel (RMB), sélectionnez l’Armature (Shift+RMB), passez
l’Armature en Pose Mode (Ctrl+Tab), sélectionnez le Bone qui pointe déjà vers l’ Empty,
ajoutez la contrainte à l’objet actif (Shift+I, 1)
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 16 / 39
Alain Mathez
Img-02050t1.PNG
Img-02050t2m.PNG
N’oubliez pas de désactiver le bouton Stretch, rappelez-vous que notre chemin n’est pas
élastique. L’option Rot permet au Bone de suivre la rotation de la cible, et vous, petits
veinards, avez déjà ajusté l’orientation de la cible CenterFrontWheel dans le chapitre 5,
n’est-ce pas ?
Img-02100t.PNG
Img-02100t2m.PNG
Quoi d’autre? La contrainte IK de la roue du milieu.
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 17 / 39
Alain Mathez
Img-02150t1.PNG
Img-02150t2.PNG
Et finalement les contraintes pour le sol.
Img-02200t1.PNG
Img-02200t2.PNG
Img-02250t1.PNG
Img-02200t2.PNG
Z’avez pigé ? Ah, au fait, il vous faut ajouter, dans le Layer 3, un Empty PrePr1 dont le
Parent est Pr1, et un Empty PostPr6 dont le Parent est Pr6. Voir ci-dessous.
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 18 / 39
Alain Mathez
Img-02300t1.PNG
Img-02300t2.PNG
Img-02350t1.PNG
Img-02350t2.PNG
Img-02400t1.PNG
Img-02400t2.PNG
Affichez les Layers 5 et 6, tournez l’Empty SoftDynamicFrame (+ et -90°), que constatezvous ? L’Armature est déformée mais pas étirée ? Bingo, but atteint ! Bon, en fait pas
complètement. La contrainte IK pour la roue du milieu subit un léger étirement en cas de
déformation extrême.
Img-02450t.PNG
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 19 / 39
Alain Mathez
Note pour les experts (comme moi, un jour… peut-être) : Si vous trouvez une
meilleure façon d'utiliser la contrainte IK, sans aucun étirement, avec une longueur
parfaitement constante pour la chaîne complète, veuillez partager avec les ignorants tels
que moi quelques conseils sur votre manière de faire !
7) Layer 7 : les Hooks
Ce chapitre n’est que pur bonheur, réalisé par gourmandise. Sur chaque Vertex de la
Curve PathCaterpillar, placez un Empty. Nommez-les HookPath… HookPath.0XX. Ô
joie de nos amis francophones, les noms sur l’image ci-dessous sont encore en français.
La traduction simultanée n’étant pas encore un Plug-In disponible pour Gimp, je vous prie
de croire en ma sincérité lorsque je vous dit que HookChenille = HookPath.
Sélectionnez l’Armature, passez en Pose Mode (Ctrl+Tab), sélectionnez un Empty
(Ctrl+RMB), sélectionnez le Bone correspondant (Shift+RMB), définissez le Bone comme
Parent de l’Empty (Ctrl+P, 1)
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 20 / 39
Alain Mathez
Img-02550t.PNG
Dois-je préciser qu’il est nécessaire de le faire pour chaque Empty ?
Lorsque vous avez fini, affichez les Layers 3 et 7, sélectionnez la Curve PathCaterpillar,
passez en Edit Mode, sélectionnez un Vertex (RMB), sélectionnez l’Empty correspondant
(Ctrl+RMB), définissez le Hook (Ctrl + H, 2).
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 21 / 39
Alain Mathez
Img-02600t.PNG
Et une fois encore, j’ai bien peur que se soit nécessaire pour chaque Empty. Mais si vous
êtes un bon pianiste, cela ne vous prendra pas plus d’une poignée de secondes.
Maintenant on commence une étape particulière : contraindre les maillons à suivre le
chemin de la chenille. Je n’ai é ce jour rien de mieux à vous proposer que des
approximations. Pourquoi ? Parce que je ne connais que deux méthodes, et qu’aucune
d’elle n’est "réelle".
Première méthode : l’origine est au centre des maillons, par conséquent les jointures
s’éloignent dans les petites courbes.
Img-02650t.PNG
Img-02700t.PNG
Seconde méthode : l’origine est au centre de la première jointure, l’orientation des
maillons est corrigée avec une contrainte TrackTo vers le maillon suivant, par conséquent
les jointures se rapprochent dans les petites courbes.
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 22 / 39
Alain Mathez
Img-02750t.PNG
Img-02800t.PNG
Ok, la première méthode semble être moins précise, mais plus rapide à configurer. On
prendra celle-ci pour l'instant. Avec des maillons étroits, l'illusion devrait suffire.
8) Layer 8 : les maillons
Modélisez un maillon simple d’environ 1BU en X, 2BU en Y and 0.5BU en Z. Vous pouvez
simplement déformer un cube, ou faire, comme moi, quelque chose d’un peu plus épicé.
Img-02850t.PNG
Img-02950t.PNG
Img-02900t.PNG
Img-03000t.PNG
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
Img-03050t.PNG
page 23 / 39
Alain Mathez
Sélectionnez le maillon (RMB), sélectionnez la Curve PathCaterpillar (Shift+RMB),
obligez le maillon à suivre la Curve (Ctrl+P, 2). Annulez la rotation du maillon (Alt+R,
Enter) et son origine (Alt+O, Enter). Si nécessaire, réorientez le maillon (R) afin de
l’aligner sur la Curve. Vérifiez que la Curve est configurée avec “CurvePath”,
“CurveFollow” and “PathDist Offs” dans le panneau “Curve and Surface”.
Img-03100t1.PNG
Img-03100t2m.PNG
Si le maillon n’est pas sur une portion de ligne droite de la Curve, selectionnez la Curve,
passez en Edit Mode, sélectionnez tout. La seul arête non sélectionnée en jaune est
probablement ailleurs que sur la ligne droite.
Img-03150t.PNG
Pour corriger cela, sélectionnez une arête au milieu en bas et effacez-là (X, 2), le
problème devrait être résolu. Si la Curve est ouverte, fermez-là (C).
Quittez l’Edit Mode de la Curve. Sélectionnez le maillon, faite une copie liée (Alt+T),
donnez lui un TimeOffset de 1.00 dans le panneau “Anim settings” (F7)
Img-03200t1.PNG
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
Img-03200t2m.PNG
page 24 / 39
Alain Mathez
L’avantage de la copie liée (Alt+A au lieu de Shift+A) c’est que vous pouvez modifier un
seul maillon, et obtenir en même temps les corrections sur tous les autres. Vous pouvez
ainsi faire vos essais avec un cube aplatit (histoire de travailler "léger") et modifier en
dernier le Mesh pour lui donner une allure de maillon respectable.
Note pour les gens malins (comme moi parfois, mais pas assez pour cette fois) : il y
a peut-être un truc magique avec un Array Modifier ou quelque chose dans ce genre pour
ajouter tous les maillons grâce à quelques cliques. Si vous trouvez, dites le moi, svp.
Vous vous rappelez la longueur de la Curve PathCaterpillar ? C’était environ 50, mais les
maillons ont une largeur de 1BU, donc il vous reste à refaire la manipulation 48 fois, Alt+A,
TimeOffset: 2.00, Alt+A, TimeOffset: 3.00, …
Img-03250t.PNG
9) Layer 9 : the wheels
Je vous laisse ce chapitre comme un exercice libre. Vous pouvez vous inspirez des
images ci-dessous comme exemple. J'ai commencé avec la roue supérieure gauche, et
les autres sont des copies modifiés et mises à l'échelle.
Img-03300t.PNG
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 25 / 39
Alain Mathez
Img-03350t.PNG
Les Parent des roues sont sur les Layers 3 and 5. FrontWheel à comme Parent
CenterFrontWheel, MiddleWheel à comme Parent CenterMidWheel, RearWheel à
comme Parent CenterRearWheel, FloorWheel1 à comme Parent Pr1, FloorWheel2 à
comme Parent Pr2, …, FloorWheel6 à comme Parent Pr6.
10) Layer 10 : le Maître et le Guide
Sur le Layer 10 ajoutez deux Empties. Le premier, Master, doit être placé à 0 en X, 0 en Y
et 20 en Z. Le second, Guide, doit être placé à 0 en X, 0 en Y et 10 en Z. Guide doit
ensuite recevoir une contrainte Copy Location de Master, seulement sur l’axe X.
Img-03400t1.PNG
Img-03400t2m.PNG
Guide est le Parent du Mesh ProjectionFloor sur le Layer 2. Guide est également le
Parent du Mesh SoftFrame sur le Layer 5
Maintenant, si vous déplacez l’Empty Master le long de l’axe X en restant au-dessus du
Mesh Floor, vous devriez voir l’ensemble suivre et coller à la surface de Floor.
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 26 / 39
Alain Mathez
Img-03450t.PNG
Glisser ne vous suffit pas ? N’abandonnez pas, vous avez déjà fait l’essentiel. Allez dans
le Screen Layout “Animation” (Ctrl+) à l’aide des flèches du clavier ou du menu.
Img-03500tm.PNG
Sélectionnez la Curve PathCaterpillar (sur le Layer 4), dans la fenêtre “Ipo Curve Editor”
sélectionnez le type Path.
Img-03550tm.PNG
S’il n’y a pas de courbe IPO dans la fenêtre, ajoutez un point de contrôle près de l’origine
des axes, (Ctrl+LMB) et un autre un peu plus loin (Ctrl+LMB). Spécifiez le mode
d’interpolation Linear (T, 2), le mode d’extension Cyclic (E, 3).
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 27 / 39
Alain Mathez
Img-03600t.PNG
Img-03650t.PNG
Img-03700t.PNG
Ouvrez la boîte “Transform Properties” (N), éditez la courbe IPO (Tab), sélectionnez le
premier point de contrôle (RMB) spécifiez les coordonnées.
Img-03750tm.PNG
Img-03800tm.PNG
Donnez au second point de contrôle la coordonnées X : 50 ce qui correspond à la
longueur de la Curve PathCaterpillar. Si vous ne choisissez pas Cyclic, les maillons
feront une seule fois le tour de la chenille et s’arrêteront.
Au tour des mystérieux et miraculeux PyDriver. Cliquez sur Add Driver, cliquez sur le petit
serpent, écrivez “Blender.Object.Get('Master').LocX *(-1)”et…Tadaaam!
Img-03850tm.PNG
Img-03900tm.PNG
Img-03950tm.PNG
Si les maillons bougent dans la mauvaise direction, vous pouvez inverser la courbe IPO
(en lui donnant une inclinaison comme “\ \ \” et non comme “/ / /”), ou ajouter un facteur *(1) à la fin de la formule du PyDriver (comme ci-dessus).
Avec uniquement les Layers 8 and 10 activés, sélectionnez l’Empty Master et déplacez-le
sur l’axe X axis. Impressionné ? Attendez de voir les roues ! Sélectionnez la roue
FrontWheel, sélectionnez le type d’IPO Object, sélectionnez RotY (LMB), cliquez sur le
bouton “Add Driver” dans la boîte “Transform Properties”, cliquez sur le serpent et écrivez
“Blender.Object.Get('Master').LocX *(3.05)”.
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 28 / 39
Alain Mathez
Note pour les mathématiciens (pas comme moi, apparemment) : Je n’ai absolument
aucune idée pourquoi ce facteur est de 3.05. Je l’ai trouvé par tâtonnements successifs. Il
doit dépendre de la taille de la roue, et du nombre de dents, mais bon… ça fonctionne, je
m’en contente pour l’instant.
Arrangez vous pour trouver les valeurs acceptables pour les autres roues. Vous pouvez
bien sûr réutiliser le PyDriver de FrontWheel pour la roue arrière RearWheel, un seul
autre vous suffira pour les six FloorWheels, et un dernier pour la roue centrale
MiddleWheel, si son diamètre est différent des FloorWheels.
Img-04000t.PNG
Vous vous rappelez de l’abréviation “OIRA or AFAPIRA” ? Bon, la courbe IPO Speed pour
le chemin est une ligne droite et ne compte pas vraiment. Donc le seul objet à animer avec
une courbe IPO est l’Empty, Master. A la frame 1 (Shift+) sélectionnez Master, insérez
une Keyframe Location (I, 1), allez à la Frame 51 (), déplacez Master sur l’axe X,
et ajoutez une Keyframe Location (I, 1). Dans la fenêtre des IPO vous pouvez sélectionner
puis effacer les IPO LocY et LocZ, et ensuite éditer et ajuster la courbe IPO LocX.
Img-04050t.PNG
Si le Mesh SoftFrame réagit bizarrement, allez dans le panneau “Collision” et cliquez sur
“Free Cache”
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 29 / 39
Alain Mathez
Img-04100t1.PNG
Img-04100t2m.PNG
Soyez attentifs à la valeur du paramètre End dans le même panneau si votre animation
dure plus de 250 frames.
Si le Mesh ProjectionFloor réagit bizarrement, éditez the Mesh Floor, selectionnez tout,
et extrudez un mini tout petit peu (E, 1, Z, -0.01). Si vous n’obtenez pas de résultat,
essayez d’éliminer le Modifier Subsurf ou appliquez le.
Img-04150t.PNG
Note pour les pisteurs de bug (peut-être comme moi, allez savoir) : Si vous trouvez
pourquoi le Modifier Shrinkwrap fait parfois des sauts inattendus, faites-le moi savoir svp.
Rappelez-vous que vous pouvez effectuer les réglages fins avec le paramètre Influence
des contraintes Copy Rotation de CenterFrontWheel, AngleFrame et CenterRearWheel.
Vous pouvez également choisir entre Copy Rotation et TrackTo pour OrientateFrame.
11) Layer 11-13 : les amortisseurs
Il nous faut un piston, un soufflet et un ressort. On commence par ajouter une Armature
sur le Layer 11.
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 30 / 39
Alain Mathez
Img-04200t.PNG
Img-04250t1m.PNG
Img-04300t1m.PNG
Img-04300t2.PNG
Img-04350t1m.PNG
Img-04350t2.PNG
Img-04250t2m.PNG
Saupoudrez d’Empties sur le Layer 12, faites cuir à feu doux si vous souhaitez les utiliser
comme cibles de contraintes IK ou passez au four pour servir des contraintes TrackTo
croustillantes et dorées (oui, il est tard, et je dévie un peu).
Sur le Layer 13, on décorera avec les objets. En premier le piston, BlockHigh reçoit un
TrackTo en direction de BlockLow et BlockLow reçoit un TrackTo en direction d’un
Empty placé au même endroit que BlockHigh.
Notez que deux objets ayant un TrackTo réciproque (A vers B et B vers A) fonctionnent
(presque), mais donnent une erreur "Dependency cycle" dans la console de Blender. Il
semble que de telles erreurs puissent nuire lors de l’utilisation d’une Render Farm. Donc,
à éviter, bien que j’aie commis cette erreur, et que je ne m’étais aperçu de rien.
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 31 / 39
Alain Mathez
Img-04400t1.PNG
Img-04400t2.PNG
Img-04450t1.PNG
Img-04450t2.PNG
Maintenant, au tour du soufflet. BlockLeft et BlockRight s’orientent réciproquement l’un
vers l’autre, de même que les différentes parties du piston. On va ajouter une contrainte
Stretch to au soufflet.
Img-04500t1.PNG
Img-04500t2.PNG
L’effet est simple, mais l’illusion est parfaite…
Img-04550t.PNG
Img-04600t.PNG
…aussi longtemps que vous ne passez pas en vue latérale. Si el soufflet est déformé (ne
me demandez pas pourquoi) ajustez simplement la taille en Z (S, Z, BougeSouris).
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 32 / 39
Alain Mathez
Img-04650t.PNG
Img-04660t.PNG
Si l’orientation du soufflet est mauvaise, affichez ses axes dans le panneau "Draw".
Sélectionnez et pivotez tous les Vertices en Edit Modem, avec le curseur placé à l’origine
de l’objet et avec le mode de pivot sur "Around the Cursor".
Pour finir, occupons nous du ressort. Celui-ci sera vertical, la contrainte TrackTo nécessite
un axe pointant vers le haut, ce qui provoquera un conflit entre la direction de la cible et
cet axe. Une possibilité serait d’utiliser une contrainte Locked Track, ou alors un Bone
avec un contrainte IK pour orienter les blocs hauts et bas, à l’aide de contraintes Copy
Rotation. Presque aussi facile que pour le piston.
Comment modéliser un ressort ? Fastoche, mais attention, le but sera de l’animer !
Ajoutez un Plane et modifiez-le. En vue de face laissez seulement une arête et un Vertex.
Sélectionnez tout et pressez Screw dans le panneau “Mesh Tools”.
Img-04700t1.PNG
Img-04700t2m.PNG
Effacez le cylindre et gardez la spirale.
Img-04750t.PNG
Sélectionnez tout, allez dans le menu Mesh > Scripts > Edges to Curve. Le script créer
une copie du Mesh, et la transforme en objet Curve. Editez cette Curve, sélectionnez tous
les points de contrôle, cliquez sur Nurb dans le panneau "Curve Tools", ensuite cliquez
Endpoint U, Order U: 3, Weight 1, Set Weight. Nommez-là Spring. Revenez en Object
Mode, ajoutez une Curve NURBS Circle, nommez-là SpringBev, réduisez sa taille.
Sélectionnez la Curve Spring, (attention, la Curve, pas le Mesh, que vous pouvez
d’ailleurs effacer), tapez SpringBev dans le champ Bevel Object du panneau "Curve and
Surface". Et là, ô surprise… rien ne se passe (*). Editez la Curve Spring, sélectionnez tout,
ajustez le radius à 1 (W, 4, Enter). Un grand merci à Zeauro du BlenderClan pour m’avoir
filé ce truc, qui me donnait des cauchemars
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 33 / 39
Alain Mathez
(*)
En traduisant ce tuto, plus d’une année après avoir écrit l’original, je viens de refaire la
manipulation dans Blender 2.49b, et ça fonctionne directement, sans avoir corrigé le
radius. Donc suivant votre version, vous en êtes peut-être dispensés.
Bien, mais la tige constituant le ressort n’est pas un tube ouvert, nous utiliserons donc un
autre Curve NURBS comme Taper Object. Notez que la taille de cette SpringTaper est de
0.1 en Object Mode.
Img-04800t.PNG
Img-04850t1.PNG
Img-04850t2m.PNG
Img-04900t.PNG
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 34 / 39
Alain Mathez
Redimensionnez un peu les parties
hautes et basses du ressort pour obtenir
quelque chose comme… euh… un
ressort.
Note pour les gens fatiqués (comme
moi, il est super tard) : désolé, le niveau
des blagues descend avec mes
paupières.
Img-04950t.PNG
Construction, de haut en bas.
Img-05000t.PNG
SpringBlockH, dont le Parent est FixeAbsorber1 (l’Empty principal pour l’amortisseur)
reçoit une contrainte Copy Rotation dont la cible est BoneAbsorber2 de l’armature
ArmatureAbsorber. Rappelez-vous, une contrainte TrackTo n’est pas possible puisque
l’objet est place verticalement (mais une contrainte Locked Track serait également une
solution).
L’Empty CenterSpringH, dont le Parent est SpringBlockH.
Img-05050t.PNG
CurveSpring, dont le Parent est CenterSpringH.
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 35 / 39
Alain Mathez
Img-05100t.PNG
L’Empty ScaleSpring dont le Parent est CenterSpringH.
Img-05150t.PNG
CenterSpringL, dont le Parent est SpringBlockL.
Img-05200t.PNG
SpringBlockL, dont le Parent est l’Empty CenterWheel2.
Img-05250t.PNG
BoneSpring de l’armature ArmatureSpring, dont le Parent est CenterSpringH.
Img-05300t.PNG
BoneSpring reçoit une contrainte IK dont la cible est CenterSpringL et le bouton Stretch
activé, sans oublier de monter la valeur de Stretch à 1.0 dans le panneau "Armature
Bones". Le haut de BoneSpring est placé exactement au début de la partie déformable
du ressort, qui correspond également à la position de l’Empty ScaleSpring. Celui-ci est
orienté comme BoneSpring (affichez les axes locaux pour vous en assurer) et reçoit une
contrainte Copy Scale (uniquement sur l’axe Y) ciblée sur BoneSpring. Selectionnez tous
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 36 / 39
Alain Mathez
les points de contrôle de la partie déformable du ressort, ensuite sélectionnez l’Empty
ScaleSpring, et assignez lui la fonction Hook (Ctrl+H, 2). Sélectionnez (les points de
contrôle de) la partie basse non déformable du ressort, ensuite sélectionnez l’Empty
CenterSpringL, et assignez lui la fonction Hook (Ctrl+H, 2).
Comme vous pouvez le constater, effectuer le "rigging" d’un ressort dynamique n’est pas
si difficile. Mais une fois encore cette méthode n’est pas la mienne, elle est dérivée de
http://blenderunderground.com/2008/01/03/making-a-spring-rig-in-blender/
celle-ci :
simplifiée (il me semble) et améliorée (j’espère).
Woualâh, c’est fait. Ajoutez quelques éléments mécaniques pour compléter l’amortisseur.
Bien entendu, un char d’assaut n’a pas d’amortisseurs aussi visibles et fragile, mais la 3D
n’est pas le monde réel, alors… pourquoi pas ?
Img-05350t.PNG
12) Le défi
Maintenant, si vous voulez réaliser l’animation d’un véhicule à chenilles se déplaçant sur
un terrain bosselé, vous aurez à résoudre un autre gros problème. La seconde chenille
n’est pas totalement indépendante de la première. La distance entre les deux restent fixes
(c’est le véhicule lui-même), et l’inclinaison est commune.
Alors, qui peut faire mieux, plus simple et plus rapide ? C’est possible, très certainement,
mais je n’ai" pas encore trouvé d’autre solutions. Et n’oubliez pas le principe "OIRA or
AFAPIRA".
Si vous êtes meilleurs que moi (je suis sûr que c’est possible, puisque je réussi presque
tous les jours ;-) et trouvez une meilleure approche, ou si vous avez des questions,
remarques, idées, suggestions,… n’hésitez pas à me contacter.
[email protected]
Ma langue maternelle est le français (puisque je ne peux pas dire le "suisse"), et je suis à
peu près capable de décoder l’anglais (please simple words only) et aussi l’allemand (da
noch mal bitte nicht zu komplizierte Wörter verwenden).
En bonus gratuits (qui n’étaient pas dans le BAM original en anglais) je vous propose une
visite chez Philippe Roubal dont certaines recherches sont très similaires à ce tuto, bien
que nous n’ayons rien comploté en cachette : http://3d-synthesis.com/tutorialsfrench.html
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 37 / 39
Alain Mathez
L’autre bonus, je vous laisse le chercher, il s’agit des chenilles d’un certain Wall-e, qui ont
un degrés d’élasticité insoupçonné, parce qu’elle possèdent un système d’articulation
supplémentaire entre les maillons principaux. Sur les images de très grande taille c’est
bien visible, l’espace entre les maillons n’est pas régulier. Futé Pixar !
Je vous souhaite bien du plaisir !
13) Fichiers d’exemple
Dans le fichier d’exemple "CaterpillarSoftTrack.blend" vous trouverez les objets décrits
dans les chapitres 1 à 11, un tank téléchargé sur http://dmi.chez-alice.fr et plusieurs
caméras fixées sur chaque partie importante du système de chenille. Certains objets ont
un nom français (parce que j’ai fait quelques essais en utilisant des noms français avant
de commencer le tuto en anglais, et par manque de temps, il est resté quelques
mélanges).
Dans le fichier d’exemple "TrackLinkApproximation.blend", vous trouverez les deux
méthodes décrites juste avant le chapitre 8 pour contraindre des maillons à suivre un
chemin. Si vous avez d’autres idées, exprimez-vous !
Dans le fichier d’exemple "LimitePathPyDriver.blend", vous trouverez plusieurs essais
avec les IPO Speed et les PyDrivers, qui pourront peut-être titiller votre inspiration.
Dans le dossier FurnitureHinge vous trouverez un supplément que la version anglaise du
BAM ne mentionne pas. Il s’agit d’un autre "OIRA or AFAPIRA" : une charnière complexe.
Réalisée avec 1 armature, 2 contraintes IK, 1 unique objet à déplacer (l’Empty Master, si
vous souhaitez le déplacer manuellement, supprimez son PyDriver), et aucun IPO !
En effet l’animation est obtenue grâce au PyDriver de Master qui utilise la Frame
courante.
Dans la vidéo, il y a un autre système d’armature et contraintes qui permet de visualiser la
compression du piston central, en vue caméra. Vous pouvez constater le changement de
couleur en fonction du taux de compression.
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 38 / 39
Alain Mathez
14) Remerciements
Au grand merci au BlenderClan, Meltingman (mon maître spirituel), Traven (l’homme qui
sait tout ce que j’ignore), Zeauro (j’ai les questions, il a les réponses) et à ma chère
concubine qui a dormi et regardé la télé tout seule pendant deux semaine, alors que
j’écrivais cet article (et j’ajoute deux jours pour la traduction). Et MERCI à toutes celles et
tous ceux qui permettent à Blender d’évoluer.
L’animation est disponible sur : http://www.youtube.com/watch?v=l1fsN2oySFg
L’animation de la charnière aussi : http://www.youtube.com/watch?v=syyJ_ooSJ-g
Tramelan le 13.01.2011
CaterpillarSoftTrack_fr.doc
page 39 / 39
Alain Mathez

Documents pareils