В этом разделе я позволю себе не переводить хелп по MAXScript, а поделиться с читателем некоторыми моими мыслями о скрипт-контроллерах и привести в доказательство несколько простых примеров (два моих, и один хелпа). Итак, скрипт-контроллеры это невероятно мощная штука, очень полезная и удобная, лично я вообще считаю, что только с их помощью можно создать в 3ds max действительно "крутую" анимацию. Впрочем я также считаю, что без знаний MAXScript сложную анимацию не стоит и начинать. Есть мнение, что максе плохая анимация по сравнению с другими пакетами - это неправда, просто те, кто так заявляет, не знают и даже не представляют себе возможностей MAXScript. В частности скрипт-контроллеры гораздо более универсальны по сравнению с обычно используемыми в сложной анимации инструментами: Wire, Reaction Manager, Expression controller, которые далеко не во всех случаях могут дать нужный эффект и весьма сложны и трудоемки в использовании. Скрипт-контроллеры более универсальны, просты, удобны, их проще применять и редактировать. Кроме того, они обладают совершенно потрясающими преимуществами, за что я их в принципе уважаю и прославляю: в них можно использовать все возможности MAXScript - циклы, функции, доступ к объектам по их именам и переменным. Что угодно, любое свойство любого объекта может участвовать в вычислении выражения скрипт-контроллера: вершины сетки, значения параметров объекта в произвольном кадре или наоборот любое другое неанимируемое свойство объекта (которые кстати нельзя использовать в контроллерах выражения - Expression controller). Также можно использовать глобальные переменные MAXScript для взаимодействия с другими контроллерами и скриптами.
Смысл действия скрипт-контроллера в следующем - скрипт выполняется и на выходе, т.е. своей последней строчкой должен выдать некое значение, удовлетворяющее типу контроллера. Например, если скрипт-контроллер наложен на поворот (rotation) объекта, то результатом работы скрипта должно быть значение поворота - кватернион (quat). Аналогично для контроллера положения (position) или контроллера масштаба (scale) результатом должен быть вектор, для контроллера трансформации (transform) - матрица, для контроллера вещественного числа (float) - вещественное число. Вообщем вот список всех возможных скрипт-контроллеров:
Float Script - float controller
Position Script - position Point3 controller
Point3 Script - Point3 controller
Rotation Script - rotation Quaternion controller
Scale Script - scale Point3 controller
Transform Script - matrix3 PRS controller