Читайте также:
|
|
Контекстные выражения являются частью грамматики MAXScript, предназначенной для работы, главным образом, с объектами 3ds max и их свойствами. Суть их в том, что обычное выражение, чаще всего, но не обязательно блоковое, предваряется некой конструкцией языка, которая называется префиксом. Этот префикс устанавливает свойства, которые одинаковы для всех объектов, упоминаемых в выражении, или, говоря научным языком, определяет контекст. Разберем применяемые в MAXScript префиксы по одному.
Animate
Префикс animate можно еще записать как with animate, а применяется он следующим образом. Изменение анимируемых свойств объектов в выражении, которое следует за этим префиксом, приводит к созданию ключей анимации. Для ясности разберем пример.
animate on
(box01.position = [10,10,10]
box02.position = [-10,-10,-10]
)
В данном случае создадутся ключи анимации для перемещения объектов box01 и box02. Обратите внимание на значение on, которое стоит после animate. На самом деле вместо него может стоять сколь угодно сложное логическое выражение, а on – это просто другая форма записи true. Если после animate стоит off или false или логическое выражение, имеющее значение false, то изменения, сделанные внутри выражения, которому предшествует этот префикс, не приводят к созданию анимационных ключей, даже если включена кнопка Animate. Следует отметить, что при использовании этого префикса, кнопка анимации не включается и не выключается, но ключи, тем не менее, успешно создаются.
At time
Префикс at time чаще всего работает в одной упряжке с префиксом animate on. Он устанавливает позицию ползунка на линейке треков для всех изменений, которые происходят с объектами в том выражении, которому он предшествует. Сам ползунок при этом, однако, не двигается. Например
animate on
(at time 0 $box01.position = [ 0, 0, 0 ]
at time 10 $box01.position = [ 10, 10, 10 ]
)
Приведенный скрипт создает два ключа анимации – один в нулевом кадре и один в десятом. Разумеется, вместо числового значения номера кадра в префиксе at time можно указывать и переменную, и выражение.
At level или in
Данный префикс в любой из приведенных форм записи применяется при работе с иерархиями объектов. В качестве параметра ему задается объект сцены 3ds max. Пусть у нас имеется объект с именем man (человек), который является родительским для руки несколько дочерних объектов – шаров. Предположим наша задача – анимация клоуна, жонглирующего шарами на ходу (Пример не претендует на удачность, а призван проиллюстрировать работу префикса at level).
in $man/hand
(ball1 = sphere()
ball2 = sphere()
ball3 = sphere()
)
Все три созданные сферы будут дочерними по отношению к объекту hand. Таким образом можно не только создавать, но и совершать любые другие действия с уже существующими объектами. Особенно это актуально, если иерархия сложна, а объектов много
Coordsys
Coordsys или in coordsys устанавливает для действия со всеми объектами выражения одну и ту же систему координат. Допустимы следующие формы написания этого префикса
· coordsys world или in coordsys world – устанавливает мировую систему координат;
· coordsys local или in coordsys local – устанавливает систему координат, связанную с объектом;
· coordsys parent или in coordsys parent – устанавливает систему координат, связанную с родительским объектом;
· coordsys grid или in coordsys grid – устанавливает систему координат, связанную с активной сеткой;
· coordsys имя объекта или in coordsys имя объекта – устанавливает систему координат, связанную с указанным объектом;
· coordsys матрица 3х3 или in coordsys матрица 3х3 – устанавливает систему координат, заданную матрицей.
В качестве матрицы может выступать любое выражение, возвращающее матрицу размерности 3х3.
Например, такой скрипт
in coordsys local selection.position.x = random 10 –10
Сдвигает все выбранные объекты по связанной с ними оси x на случайную величину в диапазоне от 10 до -10.
About
Если Вам нужно повернуть или отмасштабировать один или несколько объектов, то, возможно, есть смысл использовать этот префикс. Он применяется в следующих формах
· about selection – повороты и масштабирования осуществляются относительно центра выбранных объектов;
· about pivot – повороты и масштабирования осуществляются относительно опорной точки объекта;
· about coordsys – повороты и масштабирования осуществляются относительно центра системы координат, которая может быть задана префиксом coordsys;
· about имя объекта – повороты и масштабирования осуществляются относительно опорной точки указанного объекта;
· about матрица 3х3 – повороты и масштабирования осуществляются относительно центра системы координат, заданной указанной матрицей;
· about точка в трехмерном пространстве – повороты и масштабирования осуществляются относительно указанной точки.
В качестве матрицы и точки в трехмерном пространстве могут указываться любые выражения, возвращающие соответственно матрицу размерности 3х3 или точку в трехмерном пространстве.
Например, скрипт
about [ 0, 0, 0 ] rotate $box01 15 axis_y
повернет объект с именем box01 на 15 градусов относительно оси y вокруг точки с координатами 0, 0, 0.
Undo
Все действия, которые MAXScript совершает с объектами сцены 3ds max, могут быть отменены командой undo из главного меню. Иногда, особенно если манипуляции проводятся с большим количеством объектов, это совершенно лишняя возможность. В этом случае действия, которые надо исключить из списка отменяемых, нужно собрать в выражение, которому предшествует префикс
undo off
Само собой, вместо off, как и для префикса animate, может стоять и false, и любое логическое выражение, его возвращающее. Можно, напротив, включать возможность отмены, используя префикс
undo on
Дата добавления: 2015-10-31; просмотров: 116 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Блоковые выражения | | | Каскадирование префиксов |