animation d'une mécanique sous 3dsmax

animation d'une mécanique sous 3dsmax - Infographie 3D - Graphisme

Marsh Posté le 26-02-2009 à 18:14:52    

Bonjour à tous.
 
Je cherche à animer un petit système mécanique pas trop compliqué, d'une pelle mécanique, mais je me bute sur certains problèmes de contraintes de mouvement que je n'arrive pas à résoudre. Je débute sous 3dsmax, et je n'ai trouvé de solution à mon problème ni dans des tutoriaux, ni dans certains bouquins, ni dans le forum.
 
http://www.3dvf.com/forum/mesimages/7893/PelleHydraulique01.jpg
 
Voici la position de départ :
 
http://www.3dvf.com/forum/mesimages/7893/PelleHydrauliqueanim02.jpg
 
Le but est de pouvoir effectuer une rotation de l'élément 2, et que les éléments 3 et 4 suivent le mouvement, avec l'élement 4 contraint par un pivot sur le bras 1.
 
J'ai lié les élements de Parent vers Enfant en suivant l'ordre 1 -> 2 -> 3 -> 4
 
J'ai essayé plusieurs solutions, celle se rapprochant le plus du résultat final étant de donner une contrainte "LookAt" de l'élement 4 vers un helper situé sur le bras, mais dépassé une certaine amplitude, l'élément 4 se "décolle" du bras (ce qui est normal vu qu'il n'y a rien qui le lui empêche)
 
http://www.3dvf.com/forum/mesimages/7893/PelleHydrauliqueanim03.jpg
 
Ce que je cherche à faire est d'empêcher ce "décrochage" et que l'élement 3 bouge afin de ce plier à cette contrainte, pour arriver à un résultat comme ceci :
 
http://www.3dvf.com/forum/mesimages/7893/PelleHydrauliqueanim01.jpg
 
Merci d'avance si vous avez des astuces ou des conseils, voire des liens sur le net, qui me permettraient d'avancer.

Reply

Marsh Posté le 26-02-2009 à 18:14:52   

Reply

Marsh Posté le 27-02-2009 à 08:48:01    

Haha, utilise des bones.


---------------
Perhaps you don't deserve to breathe
Reply

Marsh Posté le 27-02-2009 à 10:33:57    

je vois pas en quoi des bones vont l'aider
 
Andromak, je teste vite un truc, si ca marche je te dis quoi.


---------------
Infographiste 3D & Post-Production - Freelance
Reply

Marsh Posté le 27-02-2009 à 11:29:20    

mmm, j'ai une bonne piste mais j'ai un léger decalage pour la piece 4,
 
il me manque une idée pour contraindre sa position au pivot du haut... ici y'a un flottement autour
 
mate tjs, tu verras si ca t'avance,
 
http://users.skynet.be/kabyll/test.max
 


---------------
Infographiste 3D & Post-Production - Freelance
Reply

Marsh Posté le 27-02-2009 à 12:01:24    

kabyll a écrit :

je vois pas en quoi des bones vont l'aider
 
Andromak, je teste vite un truc, si ca marche je te dis quoi.


Ben déjà ça sera plus propre, et il pourra utiliser les IKs, ils marchent sur les objets normaux, ouais, mais perso j'ai eu plein d'emmerde à cause de ça (du style, les pièces qui se déforment)


---------------
Perhaps you don't deserve to breathe
Reply

Marsh Posté le 27-02-2009 à 12:08:49    

ca marchera pas plus avec un IK je pense,
 
a la limite un HD solver, mais perso je deteste utilser celui là
 
ce qui est sûr c'est que c'est faisable juste avec des links, des contraintes de position, rotation et des look at.
 
le tout c'est de savoir où mettre quoi,


---------------
Infographiste 3D & Post-Production - Freelance
Reply

Marsh Posté le 02-03-2009 à 18:21:36    

Bon, je suis pas en mesure de faire des tests, mais il suffit pas de faire un simple Wire parameter qui utilise la loi des triangles (sur 2 triangles différents)... Je sais pas si je me fais comprendre
EDIT : ça semblerait plus simple vu que la pièce 4 possède un pivot fixe (j'avais lu trop vite !)
Je pousserai la chose dés que j'en aurais l'occaz


Message édité par abais le 02-03-2009 à 18:25:58

---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 03-03-2009 à 19:35:13    

Tout d'abord merci beaucoup pour l'intérêt que vous avez porté au sujet.
 
Je pensais utiliser aussi des wire-parameters, mais une solution plus élégante a été trouvée.
 
J'ai soumis le même problème dans un forum de 3dvf, et un certain Malikarn a trouvé une solution, très bien expliquée, que je vous retransmet ici:
 

Citation :


Salut
Il faut décomposer le problème "de tête"
Tout se joue au niveau de la pièce N3. Cette piece est soumise a une cinématique avant (FK) depuis la piece N2 mais aussi une cinématique inverse (IK) depuis la piece N4. Le problème c'est que N3 ne peut avoir qu'un seul pivot. 1 seul assistant sera utile pour se substituer au pivot de N3 pour faire fonctionner la cinématique avant.
http://uppix.3dvf.com/images/ikfk.gif
Tu ne peux donc pas lier 1/2/3/4 directement. Il te faut une hiérarchie à deux branches. Les branches se rencontreront en N3 et le controleur IK s'occupera de transmettre les transformations (les lignes roses sur l'image).
Tout d'abord positionne tes éléments en position neutre. Crée une hiérarchie telle que N1-->N4-->N3-->FK Chain
Fkchain est le dummy que tu as très justement placé dans la piece N2, au niveau du pivot "manquant" de la piece N3.
http://uppix.3dvf.com/images/ikfk2.gif
Le pîvot de chacune des pieces est a sa place "logique" pour que la pièce puisse pivoter normalement. Le pivot de N3 est placé pour qu'il puisse pivoter autour de N4 et pas autour de N2.
Crée une chaine CI partant de N4 jusqu'au dummy FK Chain. Enfin crée une nouvelle hiérarchie telle que N1-->N2-->IK chain.
Ik chain est le but cinématique. Puisqu'il est lié a N2 il va donc copier les éventuelles rotation de cette piece. Par le jeu et les règle de la cinématique inverse, ces transformations seront transmises à toute la chaine N4-->Fk chain. Puisque N4 est le parent de la chaine cinématique, sa position reste clouée au bras.
 
La seule difficulté dans ce setup est de bien comprendre ou se situe la séparation IK/FK. Pour l'animation seule la piéce N2 doit etre animée en cinématique avant. Elle peut évidemment hériter son mouvement depuis n'importe quels hiérarchie/controleur/contrainte/wire/reaction disponibles dans max.
 
++
 


 
En espérant que cela servira a d'autres.
 
Merci encore à tous!


Message édité par AndromAK le 03-03-2009 à 19:35:55
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed