• Animer un engrenage

    Bonjour!

    Aujourd'hui je vous parle d'engrenage et de pydriver.

    Premièrement, inutile de perdre votre temps à faire un engrenage de A à Z.

     

    Blender 2.62 a dans les Addons l'option Add Mesh, qui ajoute différents types de maillage dont

    celui de fournir le choix Gear qui permet de faire rapidement une roue dentée.

    Après avoir coché l'option Add Mesh on aura l'ajout Extra Objects sous le choix Mesh dans le menu Add appelé par Shift + A.

    Menu d'ajout d'une roue dentée (engrenage)

    Bien sûr, il faut aller dans l'écran des User Preferences pour trouver les Addons et faire les modifications nécessaires.

    Choix à cliquer pour aller dans l'écran des User Preferences

    Lorsqu'on ajoute une roue dentée dans l'écran 3D on voit le panneau Add Gear suivant dans le bas du panneau Mesh Tools.

    Panneau de setting pour ajuster une roue dentée

     Number of Teeth = Nombre de dent de la roue dentée

     Radius = Rayon de la roue dentée 

     Width = Épaisseur de la roue dentée

     Base = Remplissage de l'intérieur (d'un anneau à un disque plein)

     Dedendum = Longueur de la partie rectiligne des dents

     Addendum = Longueur de la partie en pignon des dents

     Pressure Angle = ajuste l'angle de la partie en pignon des dents

     Skewness = Fait tourner un côté de la roue ce qui change l'angle des dents

     Conical angle = Rapetisse un côté de la roue pour la rendre conique

     Crown = Déplace l'extrémité des dents dans l'axe de rotation de la roue

                   pour faire une roue dentée en couronne

     

    L'image ci-dessous montre ce qu'est l'addendum et le dedendum d'une dent.

    Addendum et dedendum

    Pour faire une roue dentée vers l'intérieur, il suffit de mettre une valeur négative pour le paramètre Radius.

    Radius négatif donne une roue dentée vers l'intérieur

    En bas, une roue dentée avec le paramètre Skewness sur 8. Les dents deviennent en biais sur le contour de la roue.

    Roue dentée avec Skewness sur une valeur de 8

    Maintenant pour animer des engrenages qui ont tous le même diamètre et le même nombre de dent,

    il suffit d'appliquer la contrainte Copy rotation sur les roues dentées.

    Pour faire l'animation, on peut copier la rotation d'un Empty ou bien copier la rotation de la première roue dentée.

    Si on copie la rotation de la première roue dentée, celle-ci n'a pas besoin d'une contrainte Copy Rotation.

    Mais si vous copiez la rotation d'un Empty, la contrainte Copy Rotation doit être appliquée sur toutes les roues dentées.

    Maintenant observez l'image ci-dessous. Les roue dentées tournent dans des directions différentes.

    Rotation d'un train d'engrenage

    Les roues dentées A et C en rouge tournent dans le même sens.

    Les roues dentées B et D en bleu tournent dans le même sens mais à l'inverse du sens de rotation des roues A et C.

    Si on copie la rotation d'un Empty, les roues dentées A et C ont juste besoin d'une simple contrainte Copy Rotation.

    Contrainte Copy Rotation pour Roue A et C

    Mais pour les roues B et D il faut copier la rotation mais en inversant le sens de rotation.

    Pour obtenir cette inversion de rotation il suffit de cocher l'option Invert dans le panneau Copy Rotation.

    Copy Rotation inverse pour les roues B et D

    Pour faire l'animation de ce train d'engrenage, il suffirait donc d'animer l'Empty et les 4 roues dentées suivraient sa rotation.

    Voici un fichier blend en exemple. Après avoir télécharger et ouvert le fichier, appuyer sur Alt + A pour partir l'animation.

     

    Maintenant lorsque nos engrenages ont un diamètre et un nombre de dent différent, on ne peut plus utiliser la

    contrainte Copy Rotation. Par exemple si on a une grande roue qui a 80 dents et une petite roue qui n'a que 20 dents,

    il faudra à la petite roue faire quatre tours quand la grande roue fera un tour.

    Avec la contrainte Copy Rotation, la petite roue ferait aussi un tour quand la grande roue fait un tour.

     

    Pour vaincre ce problème on a deux choix. Faire l'animation à la main ou utiliser un pydriver.

     

    Faire l'animation à la main signifie simplement qu'on

    • ferait tourner la petite roue de 360 degrés
    • ajouterait une clé de rotation pour marquer la fin de l'animatiion de la petite roue dentée
    • ferait tourner la grande roue de 90 degrés
    • ajouterait la clé de rotation marquant la fin de l'animation de la grande roue dentée.

     

    Si on utilise un pydriver on a juste à animer la roue principale car c'est le pydriver qui contrôle la rotation de la roue secondaire.

    Ainsi quand la roue principale tourne, la roue secondaire tourne avec la bonne vitesse et le bon sens de rotation grâce au pydriver.

     

    Ce que j'explique ci-dessous est basé sur 2 roues dentées, une grande roue de 80 dents  et une petite roue de 20 dents.

    La valeur de Radius pour la grande roue est de 4 et pour la petite roue Radius est à 1.

    La grande roue est maîtresse (master) et la petite roue est secondaire (slave). Le pydriver est mis sur la petite roue.

     

    Premièrement, divisez l'écran 3D en 2 écrans. Assigner l'un des deux écrans au Graph Editor.

    Dans la barre, au bas de l'écran  du Graph Editor, cliquer sur F-Curve Editor puis cliquer sur Drivers.

    Menu Mode du Graph Editor

    Ouvrez le panneau Properties dans chacun des 2 écrans.

    Rappel : Il faut placer le curseur de la souris au-dessus d'un écran puis appuyer sur la touche N

                  car les commandes tiennent compte de la position du curseur de la souris pour ouvrir chaque panneau.

    Après ces changements, votre setup devrait ressembler à l'image que l'on voit ci-dessous.

     

    À gauche l'écran du Graph Editor et à droite l'écran 3D. Chaque écran a son panneau Properties d'ouvert.

    Le setup : à gauche le Graph Editor, à droite l'écran 3D

    Sélectionner la grande roue dentée qui sera la roue principale (Master) puis appuyer sur la touche N.

    Dans le panneau Transform sous Rotation changer Quaternion (WXYZ) pour XYZ Euler.

    Sélection du système d'angle XYZ Euler

    Sélectionner la petite roue dentée et sous Rotation changer aussi Quaternion (WXYZ) pour XYZ Euler.

    Placer le curseur de la souris sur le paramètre Z sous Rotation et cliquer le bouton droit de la souris.

    Le menu Euler Rotation  apparaîtra. Cliquer sur Add Single Driver.

    Menu pour ajouter un pydriver

    Cliquer ensuite sur Z Euler Rotation dans le coin supérieur gauche de l'écran du Graph Editor pour voir les divers panneaux.

    Coin supérieur gauche du Graph Editor

    Vous pouvez fermer les panneaux en cliquant sur le petit triangle à gauche de leur nom.

    Garder ouvert uniquement les panneaux  Drivers et Modifiers.

     

    Dans le panneau Drivers cliquer sur Scripted Express et changer le pour Averaged Value.

    Un message d'erreur apparaîtra mais il ne faut pas en tenir compte.

     

    Juste en bas de Transform Channnel il y a un cube orange dans un rectangle gris.

    Cliquer sur le rectangle et dans la liste qui apparaît, cliquer sur le nom de la grande roue dentée.

    Pour Type, cliquer sur X Location et choisir Z Rotation. (Note, ma roue dentée a son axe de rotation sur l'axe Z)

     

    Maintenant dans le panneau Modifiers un peu plus bas, il y a un bouton rectangulaire où il est écrit 1.000.

    Ce bouton contrôle le ratio entre les 2 roues dentées. Il faut changer la valeur de 1.000 par la valeur -4.

    La valeur 4 est le ratio entre nos 2 roues soit 80 dents / 20 dents = 4.

    Le signe négatif devant le 4 fera tourner la petite roue dentée dans le sens inverse de la grande roue.

     

    Voici ci-dessous les 2 panneaux Drivers et Modifiers avant et après le changement des paramètres.

    Noter que ma grosse roue dans l'image ci-dessous s'appelle GearM pour Gear Master.

    C'est la fin de son nom "earM" qu'on voit à droite du cube orange.

    Les panneaux Drivers et Modifiers avant et après changement7

    Voilà! Il ne reste plus qu'à placer 2 clés de rotation sur la grande roue.

    Pour cela assurer vous que le compteur d'image est sur 1 et que l'angle de rotation de la grande roue dentée est à 0.

    Choisir Rotation dans les types de clé puis cliquer sur le bouton pour ajouter la clé de rotation.

    Cliquer sur le bouton de contrôle (entouré de rouge ci-dessous) qui amènera le compteur d'image sur la dernière image.

    Bouton pour aller sur la dernière image de l'animation

    Dans le panneau Transform sous Rotation changer la valeur de 0 pour 359.

    Cliquer de nouveau sur le bouton pour ajouter une clé de rotation.

    Appuyer sur Alt + A et voyez vos roues dentées tournées parfaitement bien.

     

    Ci-dessous entouré de rouge est l'indicateur de la position d'image.

    Compteur d'image

    En bas le paramètre de rotation Z de la grande roue dentée mis sur 359 pour la dernière image.

      Le paramètre Z sous rotation ajusté sur 359

    Puisque la grande roue à l'image 1 est sur 0 degré, la dernière image est sur 359.

    Sinon 0 degré pour l'image 1 et 360 degrés pour la dernière image, c'est la même position.

    La roue semblerait s'arrêter pendant 2 images.

     

    Pour plus d'info sur l'ajout des clés de position (keyframe) voyez mon post Animer un objet autour d'un point central.

     

    Finalement mon fichier blend de l'animation des 2 roues dentées avec un pydriver sur la petite roue.

     

    Une dernière remarque à faire sur la roue dentée qui a le pydriver.

    Si vous tournez cette roue un peu pour que ses dents s'emboîtent dans les dents de l'autre roue dentée,

    n'oubliez pas d'appuyer sur Ctrl + A et de cliquer sur Rotation pour que la roue soit sur 0 degré de rotation.

    Sinon votre roue aura un petit angle de rotation et mettre un pydriver sur cette roue pourrait créer un problème.

     

    Toujours faire Ctrl + A sur un objet avant de lui mettre une contrainte ou un pydriver est une sage habitude

    qui peut vous épargner bien des problèmes dans Blender 3D.

     

    Mes amis! J'espère que cette introduction sur l'utilisation d'un pydriver vous a intéressé.

    Bonne chance dans vos animations d'engrenages.

    À la prochaine!

    « Zone de mise au pointMotif chinois »
    Yahoo!

  • Commentaires

    1
    antares06
    Lundi 18 Février 2019 à 06:54

    Bonjour Matrius, merci d'avoir fait ce tuto, bien que blender et ces menus on beaucoup changer, j'ai reusis a m'en tirer, mais voila que j'ai trouver un beug, en effet, si le master est celui qui tourne le plus vite, si je dois executer un coef dde 0.5 l'objet ne tourne que sur la moitier de lui meme, et ca recommence autant de fois qu'il le faut.

     

    as tu une solution ?

     

    Cordialement

      • Dimanche 24 Février 2019 à 21:41

        Hello!

        Je ne suis pas certain de bien te comprendre. La méthode du pydriver est compliquée. Si tu mets une réduction de 0.5 sur une gear

        qui n'est pas la gear maîtresse, pour qu'elle fasse un tour complet, il faut que la gear maîtresse fasse 2 tours ou 720 degrés.

        Ainsi la moitié de 720 degrés sera 360 degrés ou un tour complet. Sans cela, ta gear qui a un ration de 0.5 ne fera qu'un demi-tour

        comme tu as obtenu.

         

        Mais pour animer des engrenages, il est beaucoup plus facile de mettre simplement une contrainte Copy rotation sur les gears.

         

        Dans le bas du panneau Copy Rotation, il y a le paramètre Influence qui permet d'ajuster la vitesse de rotation des engrenages si elles sont

        de taille différente. Voyez mon autre post Animation d'engrenage (27 avril 2013) qui explique la procédure à suivre.

        J'ai mis dans ce post une petite vidéo qui montre le résultat qu'on peut obtenir. 

         

        Bon succès avec vos animations d'engrenages.

    2
    antares06
    Lundi 25 Février 2019 à 23:52

    Merci d'avoir répondu a ma question, en fait, sur un engrenage banal, on ne peut pas remarquer ce qui ce passe, car l'animation ne laisse rien voir, par contre si tu met un détail particulier, tu va vite remarquer le probleme

    Voila je te met le blend tu peut le telecharger a cet adresse et tu pourras constater la chose

     

    Cordialement

    http://pasteall.org/blend/index.php?id=51282

     

      • Jeudi 28 Février 2019 à 20:07

        J'ai regardé le fichier. La solution est d'adapter le motif sur la gear selon son degré de rotation.

         

        Si une gear tourne de 1 demi tour, il faut mettre un motif à chaque 180 degrés.

         

        Si la gear tourne de 1/3 de tour, il faut mettre un motif au 120 degrés.

         

        Mais si on met juste un item sur la gear comme tu as fait, on voit alors que les gears répètent un court cycle.

         

        Je ferai un post où je mettrai le fichier que tu avais modifié avec les ajouts que j'ai faits.

         

        Cela pourra peut-être aider ceux qui font des animations d'engrenages.

         

        Il faut effectivement adapter notre animation avec les limites de Blender pour qu'elle paraisse réaliste.

         

        Salutation!

    Suivre le flux RSS des commentaires


    Ajouter un commentaire

    Nom / Pseudo :

    E-mail (facultatif) :

    Site Web (facultatif) :

    Commentaire :