Contrôleur de script

Les contrôleurs de script fonctionnent comme les contrôleurs d'expressions. Ils affichent une boîte de dialogue Contrôleur de script dans laquelle vous pouvez entrer un script afin de calculer la valeur du contrôleur.

3ds Max comporte les contrôleurs de script suivants :

Les différences entre les différents types de contrôleurs de script résident principalement au niveau du type de piste d'animation à laquelle vous pouvez les affecter. Par exemple, vous pouvez affecter un contrôleur de script de transformation à une piste Transformation, et un contrôleur de script de position à une piste Position. Enfin, si le contrôleur de position est défini sur Position XYZ, vous pouvez affecter un contrôleur de script flottant à une piste Position (Position X/Y/Z) ou à toutes.

Les principaux avantages qu'offrent les contrôleurs de script sont les suivants :

Pour plus d'informations sur ce langage de script, reportez-vous à l'aide de MAXScript.

Contrôleur de script de transformation

Un contrôleur de script de transformation contient toutes les informations d'un Contrôleur Position/Rotation/Echelle dans une seule valeur matricielle cryptée. Au lieu d'avoir trois pistes distinctes pour la position, la rotation et l'échelle, vous pouvez accéder simultanément aux trois valeurs à partir d'une seule boîte de dialogue de contrôleur de script. Etant donné qu'un script définit les valeurs de transformation, elles facilitent l'animation.

La valeur du script du contrôleur doit être une valeur matrix3. Il s'agit d'une matrice de transformation 3D 4x3. Pour plus d'informations, reportez-vous à la rubrique Valeurs Matrix3 dans l'aide de MAXScript.

Ecriture de scripts de contrôleurs

3ds Max interprète le texte entré dans la zone de texte Script comme le corps d'une expression de bloc MAXScript. Vous pouvez saisir autant d'expressions que vous le souhaitez sur autant de lignes voulues ; elles seront évaluées l'une après l'autre. La valeur de la dernière expression est utilisée comme valeur du contrôleur. Cette valeur doit produire le type adéquat pour le contrôleur : Flottant pour flottant, Point3 pour position, Quat pour rotation, matrix3 pour transformation, etc.

Etant donné que le texte est effectivement " à l'intérieur " d'une expression de bloc, vous pouvez déclarer les variables locales qui sont visibles uniquement au sein du script et ces variables locales ne peuvent être utilisées que pour une seule évaluation. Vous pouvez également déclarer ou accéder à toutes les variables globales qui sont communes à d'autres scripts MAXScript et qui conservent leurs valeurs d'une évaluation à l'autre.

3ds Max évalue toujours un contrôleur en tenant compte d'une durée d'animation spécifique. Il peut s'agir de la glissière temps courante ou d'un intervalle de temps qui s'agrandit si une animation est jouée ou si un rendu va être généré. Dans le cas des contrôleurs de script, le temps évalué est utilisé pour établir un contexte " temporel automatique autour du script du contrôleur, de sorte que toute propriété à laquelle vous accédez (en dehors des autres expressions explicites " temporelles ") génère les valeurs correctes pour le temps d'évaluation du contrôleur actuel. Autrement dit, aucune opération particulière n'est nécessaire dans les scripts pour travailler au moment approprié. Vous pouvez accéder au temps d'évaluation à l'aide de la variable MAXScript standard, Temps courant. Vous pouvez également faire référence aux valeurs de propriétés de la scène à d'autres instants, en utilisant les expressions explicites " temporelles " dans vos scripts, comme dans une programmation MAXScript normale.

Affecter des noeuds et des pistes à des variables

Lorsque vous devez faire référence à des noeuds dans votre scène ou à des pistes d'animation, il est conseillé d'utiliser le jeu d'outils de variables du contrôleur de script afin de créer des variables à affecter à tout noeud ou piste de contrôleur spécifique. De cette façon, si vous décidez par la suite de renommer les objets dans votre scène, les contrôleurs de script qui utilisent ces objets sont préservés car les variables conservent le lien avec les noeuds.

Sinon, si par exemple vous affectez un noeud à une variable manuellement dans la fenêtre Expression de la boîte de dialogue, ce lien se rompt dès que vous renommez ce noeud spécifique.

Remarque : Il est essentiel d'affecter des noeuds et des pistes aux variables à l'aide des boutons correspondants lorsque vous utilisez des scènes et des objets Xréf.

Procédures

Exemple : pour maintenir un objet centré par rapport aux autres objets de la scène pendant une animation :

  1. Nommez l'objet qui doit rester centré foo et associez un contrôleur de script à sa piste Position.
  2. Tapez foo dans le champ Nom et cliquez sur Créer.

    La nouvelle variable s'ajoute automatiquement à la liste Variables.

  3. La variable étant sélectionnée, cliquez sur Affecter un noeud.

    La boîte de dialogue de choix de vue piste s'ouvre et affiche le contenu de votre scène.

  4. Développez la hiérarchie Objets jusqu'à ce que vous trouviez foo. Sélectionnez cet élément et cliquez sur OK.

    Le noeud foo est affecté à votre variable.

  5. Entrez le script suivant dans la fenêtre Expression de la boîte de dialogue Contrôleur de script :

    local pos=[0,0,0]

    for o in objects where o != foo do

    pos += o.pos

    pos / (objects.count - 1)

    Ce script calcule la position moyenne de tous les objets, à l'exception de l'objet courant (correspondant à foo), en définissant une itération locale sur tous les objets à l'exception de foo, en accumulant un vecteur de position total et en calculant la moyenne sur la dernière ligne, qui correspond au résultat final du script.

Pour utiliser un contrôleur de script de transformation :

  1. Sélectionnez un objet.
  2. Cliquez avec le bouton droit de la souris pour ouvrir le menu QUADR.
  3. Dans le quadrant Transformation, cliquez sur Editeur de courbes.
  4. Sélectionnez la piste Transformation de l'objet sélectionné dans la vue piste.
  5. Dans la boîte de dialogue Assign Transform Controller (Affecter contrôleur de transformation), sélectionnez le script de transformation et cliquez sur OK.

    La boîte de dialogue Contrôleur de script s'affiche.

  6. Dans cette boîte de dialogue, modifiez la valeur matrix3 puis, une fois les modifications terminées, cliquez sur Evaluer.

Interface

L'affectation d'un contrôleur de script ouvre automatiquement la boîte de dialogue Contrôleur de script qui permet d'entrer un script. Vous pouvez ensuite ouvrir cette boîte de dialogue en cliquant avec le bouton droit de la souris sur une piste dans le groupe de fonctions Mouvement ou dans la hiérarchie de la vue piste, en choisissant Propriétés. Vous pouvez également cliquer sur le bouton Propriétés dans la barre d'outils de la vue piste.

Conseil : Vous pouvez redimensionner la boîte de dialogue en faisant glisser une arête ou un angle.

Zone Créer une variable

Nom
Permet de saisir et de modifier le nom des variables utilisateur.
Créer
Permet de créer une variable et de l'ajouter dans la liste Variables.
Supprimer
Permet de supprimer la variable sélectionnée de la liste Variables. Pour supprimer une variable, vous pouvez aussi taper son nom dans le champ Nom et cliquer sur Supprimer.
Renommer
Permet de renommer la variable sélectionnée.

Zone Paramètres de variable

Décalage repère
Permet de spécifier un décalage de temps en repères pour la variable courante. Une fois le script évalué, la valeur de la variable est définie à partir de l'instant courant auquel on ajoute la valeur Décalage repère.
Remarque : Le décalage temporel n'a aucun effet sur les variables auxquelles on affecte une constante.
Liste Variables

Répertorie toutes les variables disponibles dans le contrôleur. Les variables prédéfinies suivantes qui ont une valeur constante sont disponibles dans chaque contrôleur de script et ne peuvent être ni supprimées ni renommées :

  • Fl'heure courante dans les images
  • NTle temps normalisé
  • Sl'heure courante en secondes
  • Tl'heure courante en repères
Affecter constante
Ouvre une boîte de dialogue qui vous permet d'affecter une constante à la variable sélectionnée.
  • Expression de valeur Entrez une valeur ou une expression MAXScript (telle qu'un entier, une valeur flottante, un vecteur, etc.).
  • Résultat de l'expression de valeuraffiche les résultats de l'expression précédente.
  • Evaluer Analyse l'expression à l'instant courant.
  • OKaffecte le résultat de l'expression de valeur à la variable courante.
  • Annulerne tient pas compte du résultat de l'expression de valeur courante et ferme la boîte de dialogue.
Affecter une piste
Permet d'affecter une piste à la variable sélectionnée.
Affecter contrôleur
Permet d'affecter un contrôleur à la variable sélectionnée. La valeur du contrôleur est prélevée à l'instant courant auquel s'ajoute la valeur Décalage repère de la variable.
Affecter un noeud
Permet d'affecter un noeud à la variable sélectionnée.
Fenêtre Expression
Affiche l'expression à évaluer. Vous pouvez modifier le texte dans cette fenêtre.
Fenêtre Description
Dans la fenêtre de texte, vous pouvez saisir des commentaires sur la façon dont fonctionne le contrôleur, comment l'utiliser, etc.
Enregistrer
Cliquez pour enregistrer le script dans un fichier texte MAXScript (.ms).
Charger
Cliquez pour charger un script à partir d'un fichier texte MAXScript (.ms).
Débogage
Permet d'ouvrir la fenêtre de débogage du contrôleur de script, qui affiche la valeur de toutes les variables utilisées dans votre script.
Evaluer
Permet d'évaluer l'expression de script. L'évaluation est calculée pour la position courante de la glissière temps.
Fermer
Permet de compiler et de vérifier le script du contrôleur en vue de détecter les erreurs. Si aucune erreur n'a été détectée, la boîte de dialogue se ferme. En cas de problème, un message s'affiche vous demandant si vous souhaitez rétablir l'expression à la valeur d'origine de la piste courante et fermer la boîte de dialogue (OK), ou si vous souhaitez retourner à la modification de l'expression (Annuler).