Etape 1

Il s’agira dans cet article de créer une animation de mouvements compliqués dans 3D Studio Max.

Il arrive souvent que le mouvement d’un objet soit lié avec le mouvement d’un autre objet, et en plus cette liaison peut être exprimée exactement par une formule ou construite sur la base d’un algorithme déterminé. Par exemple, le mouvement des aiguilles d’une montre. On peut présenter cette liaison ainsi :

  1. Un tour entier de l’aiguille des secondes ® mouvement de l’aiguille des minutes d’un cran (1 minute)
  2. Un tour entier de l’aiguille des minutes ® mouvement de l’aiguille des heures d’un cran (1 heure)

Il est clair qu’animer physiquement de façon précise n’est pratiquement pas possible par une animation simple par images-clé. Il faudra dans chaque image-clé donner un angle précis de rotation à chaque aiguille et prendre également en compte des paramètres tels que le nombre d’images par seconde (frame rate) pour ce moment précis.
Pour résoudre ce problème, on peut utiliser deux puissantes possibilités de 3D Studio Max pour construire les dépendances mathématiques des paramètres des objets à animer : le contrôleur Expression, ou le langage incorporé Max Script. La deuxième possibilité permet, en plus de la construction des liens entre les paramètres des différents objets, de programmer une interface utilisateur. Dans une telle interface que j’ai réalisée, l’utilisateur peut positionner les aiguilles de la montre, en introduisant heures, minutes et secondes, et établir la vitesse de mouvement de la montre :vitesse normale (on peut comparer leur mouvement avec des montres réelles, si bien sûr elles marchent bien), accélérer ou ralentir le mouvement, indiquer le sens de rotation des aiguilles, etc.
Dans la suite de cet article, on envisagera la première méthode, la plus simple, basée sur l’utilisation du contrôleur Expression.
Le contrôleur est un module de programme utilisant un algorithme déterminé qui permet d’une manière ou l’autre de gérer les paramètres pour lesquels on le destine. Pas très clair ? Je pense qu’en pratique ce sera plus clair.

Au début, modelez la montre. Celui qui sait faire un réveil et des aiguilles peut passer directement à la description de l’animation, et moi je continue…
Le réveil, l’horloge, la montre, ici votre fantaisie n’est pas limitée. J’ai construit mon réveil dans la fenêtre Top (vue de dessus) très vite, en utilisant les primitives : cônes, cylindres, sphères (image 1)

Maintenant, modelons le cadran. Procédons comme suit :
1. D’abord composons Text, cet instrument se trouve dans le menu Splines dans Shapes (image 2)

2. Dans le champ Text, composez 12, corrigez la taille (paramètre Size)
3. Cliquez dans la fenêtre de travail, votre texte apparaîtra
4. Après ces manipulations, passez dans la fenêtre Modify, dans l’onglet Modifiers, trouvez le bouton Extrude et dans l’onglet Paramètres qui apparaît, choisissez une valeur pour Amount (profondeur d’extrusion) ; j’ai choisi 4. Cela crée des chiffres en relief.
5. Placez le chiffre 12 à l’endroit du cadran pour indiquer 12 heures.

Après, il faut placer les autres chiffres sur le cadran. Faisons comme suit :
1. Sélectionnez le chiffre 12 dans la fenêtre de travail. J’utilise pour cela la fenêtre Top.
2. Passez dans le menu Hierarchy (image 3)

3. Pressez le bouton Affect Pivot Only (Agir sur un point géométrique) et transférer le centre géométrique au centre du cadran
Le centre géométrique est le point où se croisent les axes des coordonnées d’un objet, à partir desquels s’effectuent les opérations de translation, de rotation et de changement d’échelle
4. Cliquez sur le bouton Array, choisissez les paramètres. Dans la section Incremental dans le champ au croisement de la ligne Rotate et de la colonne Z, introduisez 300. C’est l’angle de rotation de copie d’un chiffre par rapport à l’autre pour les disposer régulièrement sur le cercle.
5. Pour changer le chiffre, passez dans le menu Modify et choisissez Text Stack – c’est une liste des modificateurs appliqués à l’objet, et qui se trouve dans le menu Modifier Stack.
6. On a obtenu des chiffres tournés vers le centre. Pour les retourner, allez dans le menu Hierarchy, utilisez le bouton Reset, cela déplacera le centre géométrique de l’objet du centre du cadran au centre de l’objet. Une fois les chiffres achevés, on peut les regrouper par la commande Group dans le menu du même nom.
Après, il faut dessiner les aiguilles : celle des heures, celle des minutes et celle des secondes. Pour faire ces aiguilles, utilisez les courbes et les extrusions. Vous savez déjà comment trouver les outils pour créer les courbes, utilisez l’outil Line et dessinez les aiguilles. Les explications pour le travail avec les courbes exigeraient beaucoup de temps, c’est pourquoi je compte sur vos connaissances de 3D Studio Max. J’ajouterai seulement qu’on peut trouver le matériel nécessaire dans l’aide :
Menu Help ® référence en ligne ® menu Contents ® command panels ® modifier panel ® Modifiers ® Edition/modelage explicite ® Spline éditable
Pour faire des aiguilles en volume, choisissez une spline et extrudez-la comme vous avez fait avec le texte. Transférez le centre géométrique des aiguilles au centre du cadran, comme nous avons fait avec le texte. Appelez l’aiguille des secondes A_Sec, celle des minutes A_Min, et celle des heures A_Heur. Cela permettra de les retrouver plus tard.

Hourra ! Et maintenant l’animation proprement dite.

Allez dans le rédacteur Track View ® Ouvrir Track View ou appuyez sur le bouton  sur le panel des instruments.
Le rédacteur Track View sert à gérer l’animation, les clés, les séquences, etc. L’interface du rédacteur rappelle l’explorateur Windows, sauf que dans l’explorateur Windows on travaille avec des dossiers, et dans le Rédacteur avec des objets et leurs paramètres.

1.Ouvrez toutes les branches de l’objet A_Sec (aiguille des secondes) jusqu’au nœud Transform (dessin 4)

2. Choisissez la branche Rotation. D’office, toutes les opérations de rotation sont gérées par le contrôleur TCB Rotation. Ce contrôleur est basé sur l’outil mathématique des quaternions et ne permet pas de gérer des courbes fonctionnelles pour les coordonnées X, Y, Z. Ce contrôleur ne convient pas pour gérer la rotation de l’aiguille parce qu’il faut avoir accès à une coordonnée séparée de la rotation de l’aiguille. c’est pourquoi le paramètre de rotation doit être géré par le contrôleur qui possède en sortie trois coordonnées. Ce contrôleur s’appelle Euler XYZ.
3. Choisissez la branche Rotation et cliquez sur le bouton , la liste des contrôleurs accessibles apparaît. Choisissez dans la liste Euler XYZ et cliquez OK. Remarquez que la branche Rotation a des rameaux composés des trois coordonnées (dessin 5). Maintenant on peut travailler avec n’importe lequel.

4. Choisissez la branche Z Rotation et, de la même manière que ci-dessus, nommez le contrôleur Float Expression pour gérer la rotation sur l’axe Z. Comme mentionné plus haut, ce contrôleur permet de gérer la rotation selon les désirs de l’utilisateur.
5.Cliquez sur la branche Z Rotation avec le bouton droit de la souris et choisissez dans le menu Propriétés. La fenêtre du contrôleur Float Expression apparaît ; ce contrôleur sert directement à introduire les expressions nécessaires, à créer les variables et leurs liaisons avec les paramètres des objets de la scène (dessin 6) .
Continuons de travailler avec l’aiguille des secondes (objet A_Sec). Nous avons commencé par cette aiguille, car elle se trouve à la base de la liaison de la transmission du mouvement (cf schéma au début de l’article)
6.Un cercle entier comprend 360°, donc en une seconde l’aiguille doit bouger de 360/60=6°. Pour établir la liaison du mouvement de l’aiguille avec le temps réel, il faut utiliser la variable standard S qui exprime le temps en secondes. L’expression pour le mouvement de l’aiguille sera le suivant : 6*S

7.Cette expression gère la rotation exprimée en degrés, mais le contrôleur travaille en radiants. Pour transformer les degrés en radiants, il faut utiliser la fonction degToRad. Finalement, dans le champ Expression, il faut introduire la ligne suivante :
degToRad (6*S).
N’oubliez pas que le contrôleur est sensible au registre, il faut introduire l’expression comme indiqué ici, sinon il apparaîtra plus tard un message d’erreur.
8.Si on clique sur le bouton Evaluer et si on entre dans la fenêtre de travail et reproduit l’animation , alors on remarque que la rotation s’effectue dans le sens contraire aux aiguilles d’une montre. Pour corriger ce défaut, il faut mettre le signe moins devant l’expression. L’expression finale est : -degToRad(6*S).
9.Cliquez sur le bouton Evaluate pour appliquer l’expression et effectuer l’animation ;
Maintenant, donnons l’algorithme pour l’animation de l’aiguille des minutes (A_min).
Passez dans l’arborescence dans la partie gauche du rédacteur de track à l’objet A_min.

1. Répétez les opérations des contrôleurs déjà décrites ci-dessus pour l’aiguille des secondes.
2. Dans la fenêtre du contrôleur Expression dans le champ Name, composez le nom de la variable seconds, mettez l’opérateur Scalar et appuyez sur le bouton Create, la variable apparaîtra dans la liste Scalars. Après avoir créé la variable, choisissez la dans la liste Scalars et cliquez sur le bouton Assign to Controller. La fenêtre Track View Pick s’ouvre, et dans cette fenêtre parcourez l’arborescence Objets ® A_Sec ® Transform ® Rotation ® Z Rotation, cliquez OK. Maintenant la variable secondes prendra la valeur de l’angle de rotation de l’aiguille des secondes en radiants. Remarquez que l’utilisation de la fonction DegToRad n’est plus nécessaire.
3. Si vous avez tout fait correctement, la variable secondes prend la valeur de l’angle de rotation de l’aiguille des secondes, et on peut l’utiliser ainsi dans l’expression pour l’aiguille des minutes : secondes/60. La division par 60 provoque le ralentissement de l’aiguille exactement 60 fois, ce qui correspond bien à la réalité, puisque l’aiguille des minutes ne bouge d’un cran qu’après un tour complet de cadran par l’aiguille des secondes.
4. Pour l’aiguille des heures, la variable prend la forme minutes/12.
Il ne vaut sans doute pas la peine d’expliquer comment on a construit cette expression, le schéma est identique à celui du paragraphe précédent. Remarquons seulement que la variable minutes doit être liée à la rotation de l’aiguille des minutes. Pour vérifier que tout marche bien, vous pouvez passer une heure devant l’ordinateur. Mais il est peu probable que vous puissiez supporter ce martyre, c’est pourquoi vous serez obligé d’accélérer manuellement le mouvement des aiguilles. Pour changer la vitesse de rotation de l’aiguille des heures, il faut accélérer celle des minutes, qui à son tour est liée à l’aiguille des secondes. Dans le schéma proposé, tous les objets actifs sont liés, et il faut seulement accélérer la rotation de l’aiguille des secondes pour que tous les changements suivants se reproduisent automatiquement.
5. Pour donner l’accélération nécessaire, créez la variable accélérer.
6. Dans la fenêtre du contrôleur Expresssion de l’aiguille des secondes, dans le champ Name, composez le nom de la variante accélérer, mettez l’opérateur Scalar et appuyez sur le bouton Créer, la variable apparaîtra dans la liste Scalars. Dans cette liste choisissez la et appuyez sur le bouton Assign to Constant, dans la fenêtre apparue introduisez le coefficient d’accélération, par exemple 60. En une minute, l’aiguille des minutes va accomplir un tour complet, puisqu’elle va bouger à la vitesse de l’aiguille des secondes, et cette dernière va bouger chaotiquement, puisque sa vitesse augmente 60 fois. Introduisez la variable dans l’expression :
DegToRad(6*S*accélérer).

Appuyez obligatoirement sur le bouton Evaluer et n’oubliez pas de le faire après chaque rédaction pour indiquer à l’ordinateur d’accepter les nouveaux changements.

7. Déclenchez l’animation, et si vous avez tout fait correctement, en une minute, l’aiguille des minutes fera un tour complet. Pour revenir à l’état normal, donnez à la variable la valeur 1.

J’espère que vous êtes allés jusqu’au bout et que vous avez réussi.

sDimitri Pripisnov