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.
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.
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.
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.
Exemple : pour maintenir un objet centré par rapport aux autres objets de la scène pendant une animation :
La nouvelle variable s'ajoute automatiquement à la liste Variables.
La boîte de dialogue de choix de vue piste s'ouvre et affiche le contenu de votre scène.
Le noeud foo est affecté à votre variable.
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 :
La boîte de dialogue Contrôleur de script s'affiche.
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.
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 :