Выражения в качестве аргументов
Предопределенные значения углов вращения
В MAXScript имеется ряд предопределенных глобальных переменных. К ним относятся три следующие переменные: x_axis, y_axis и z_axis. Они представляют значения типа Point3, обозначающие вращение вокруг соответствующих осей:
x_axis представляет [1, 0, 0]
y_axis представляет [0, 1, 0]
z_axis представляет [0, 0, 1]
В любом выражении, описывающем вращение, выражение типа Point3 можно заменить соответствующей переменной. Зная это, данное выражение можно использовать для составления следующего выражения:
q = quat 45 x_axis
Глава 5
Аналогично методу eulerAngles, объект кватернионного вращения может быть присвоен любому вращаемому объекту, b = box()
q = quat 45 x_axis
rotate b q
Нередко оказывается удобнее сократить два или более оператора сценария до одного. В MAXScript это нетрудно сделать при вызове функций. Во всех приведенных выше примерах переменные или явно указываемые числовые значения были приведены в качестве аргументов. Но в этом качестве можно использовать и выражения. Выражение представляет собой конструкцию для вычисления значения. Так, если в приемнике команд ввести quat 20 x_axis и нажать клавишу <Enter>, в ответ появится сообщение об успешном выполнении команды.
Во веденном выше выражении было вычислено значение, хотя оно и не было присвоено переменной. В данном случае создается кватернионный объект, а вычисленное значение хранится во внутренней переменной MAXScript, которая недоступна для пользователя. Оба приведенных ниже сценария выполняют одно и то же действие.
В первом сценарии сначала создается кватернионный объект, а затем параллелепипед, который далее поворачивается на следующую величину:
rot = quat 30 y_axis
b = box rotation: rot
А во втором сценарии то же самое делается с помощью выражения в конструкторе:
b = box rotation:(quat 30 y_axis)
В выражении quat 30 y_axis вычисляется кватернион, поэтому его можно ввести вместо аргумента функции. Данное выражение сначала вычисляется внутри 3dsMax, а затем его значение присваивается свойству вращения. Такое выражение следует указывать в круглых скобках, чтобы 3dsMax было проще распознать его начало и конец. Где и как часто следует использовать подобные выражения, зависит от ваших целей и стиля программирования.
Кватернионы имеют свои ограничения. В частности, углы можно указывать только в пределах от -180° до 180°. Если же требуется повернуть объект на угол, который превышает данный 360-градусный диапазон, придется воспользоваться методом AngleAxis.
Преобразования и анимация