|
Можно указывать для одного выражения несколько контекстов, располагая их друг за другом через запятую, каскадом. Например скрипт
animate on, at time 100, undo off, coordsys local
(rotate $box* 15 x_axis)
повернет все объекты с именами, начинающимися на box, относительно их осей x на 15 градусов и создаст соответствующие ключи анимации в сотом кадре. Причем эти действия нельзя будет отменить с помощью команды undo.
Вложенные контексты
Контексты могут быть вложены друг в друга. Например
animate on
(at time 10
(in coordsys local move $box01 [10,0,0]
in coordsys local move $sphere01 [10,0,0]
)
at time 20
(in coordsys local move $box01 [20,0,0]
in coordsys local move $sphere01 [20,0,0]
)
)
При этом все функции, как стандартные, так и составленные Вами, вызываемые в текущем контексте, выполняются в этом контексте. Иными словами, если внутри выполняемой функции совершаются какие-нибудь действия с объектами, то они выполняются в том контексте, который на момент обращения к функции, установила вызывающая программа. Впрочем, этого может не происходить, если функция устанавливает свой контекст, отменяющий текущий.
Установка постоянных контекстов
Контекст можно установить не только для следующего за префиксом выражения, но и для любого участка скрипта. В таком случае к префиксу добавляется ключевое слово set. При этом главное – не забыть вернуть контекст в исходное положение, иначе он будет действовать постоянно. Например
set animate on
set time 30
move $box01 [10,0,0]
$box02.bend.angle = 15
set time off
set animate off
Первые две строки включают анимацию и устанавливают позицию ползунка в тридцатый кадр. Третья и четвертая строки перемещают объект box01 на 10 единиц и изгибают box02 на 15 градусов. Последние две строки возвращают контекст в исходное положение. Для того чтобы запомнить текущий контекст можно использовать следующий способ. При установке нового контекста, старый может быть занесен в переменную. Делается это, например, так
OldContext = set coordsys parent
После этого все действия, совершенные с объектами, будут выполняться в системе координат родительских объектов. Когда надо будет вернуться к старой системе координат, надо будет написать
set coordsys OldContext
Комментарии
Обилие комментариев – один из признаков высокого класса программиста. В MAXScript комментарии записываются с помощью двух знаков минус “--“. Все, что находится после двух стоящих подряд минусов и до конца строки, считается комментарием.
-- Это комментарий
Начиная с четвертой версии, в 3ds max можно применять комментарии, аналогичные C++. То есть комментариями считается все, что стоит между сочетанием символов “/*” и “*/”.
/* это тоже комментарий, но расположенный
на нескольких строках
*/
Запись выражения на нескольких строках
Чаще всего в MAXScript каждое простое выражение записывается на отдельной строке, но иногда, для улучшения читаемости программы желательно записать длинное выражение на нескольких строках. Для этого применяется знак обратного слеша в конце строки. Например
Rotation_X = \ -- Поворот относительно оси X
Rotation_Y = \ -- Поворот относительно оси Y
Rotation_Z = \ -- Поворот относительно оси Z
Данный скрипт присвоит всем трем переменным одно и то же значение, причем можно прокомментировать назначение каждой переменной. Чаще всего, однако, подобная форма применяется при обращении к функциям, требующим большое число именованных параметров. Кроме того, допускается разрыв выражения на знаке, например такое выражение
x = a + b – c * d / k + 7.145 – e
можно записать так
x = a + b – c * d / k +
7.145 – e
но нельзя так
x = a + b – c * d / k
+ 7.145 – e
Дата добавления: 2015-10-31; просмотров: 127 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Контекстные выражения | | | Операторы цикла do и while |