Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MAXScript Part 5.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
112.64 Кб
Скачать

Свойства

Свойств у ключей анимации всего три. Первое

Ключ_анимации.time

возвращает время, в котором установлен ключ, то есть фактически, номер кадра. Для некоторых контроллеров это свойство доступно только для чтения, для других – и для чтения, и для записи. Определить с каким ключом Вы имеете дело, достаточно просто. Если для него определено свойство

Ключ_анимации.value

то свойство .time доступно для чтения и записи. Само свойство .value содержит изменение анимируемого параметра от предыдущего ключа. Свойство

Ключ_анимации.selected

содержит значение логического типа и означает, выделен данный ключ или нет. Это свойство всегда доступно как для чтения, так и для записи.

Методы

В общем, для ключей анимации определен только метод копирования

copy Ключ_анимации

но данный метод применяется в первую очередь для копирования массивов. Ключи некоторых контроллеров имеют дополнительные свойства и методы, которые будут описаны при рассмотрении этих контроллеров.

Особенности работы с ключами анимации

При изменении свойства .time ключа анимации может сложиться парадоксальная ситуация. Ключ, находящийся в списке ключей раньше по времени окажется позже. Например, в нашей анимации имеется четыре ключа, в нулевом, тридцать третьем, шестьдесят шестом и сотом кадрах. Установив время второго ключа в значение 90, мы получим некорректно работающую анимацию. Чтобы такого не происходило, после работы со свойством .time ключей анимации, выполните для соответствующего контроллера функцию sortKeys. Подробно она будет описана позже при рассмотрении контроллеров.

Тип свойства .value ключей анимации варьируется в зависимости от контроллера. Для модификации этого свойства, как и для работы со свойством .time часто применяется операторы присвоения с одновременным математическим действием. Например

$sphere01.pos.keys[2].time + = 20f -- изменение времени для одного

-- ключа

$sphere01.pos.keys.time + = 20f -- изменение времени для всех ключей

$box01.uvw_map.center.keys[2].value.x + = 20

for k in $cylinder01.bend.angle.keys do k.value * = 1.1

И, наконец, последнее, что следует иметь в виду при работе с ключами анимации. Дело в том, что значение, реально хранящееся в свойстве .value, иногда не совпадает с тем, что Вы видите в окне Track View или получаете в MAXScript при обращении к соответствующему свойству. Например, углы поворота на самом деле хранятся в радианах, значение процентов меняется не от нуля до ста, а от нуля и единицы, цветовые составляющие так же находятся в диапазоне не от нуля до двухсот пятидесяти пяти, а от нуля до единицы. Чаще всего программисту не надо задумываться о таких тонкостях, однако есть два случая, когда этот факт нужно учитывать. Во-первых, при написании скрипт контроллеров, об этом подробнее позже, во-вторых, если несколько свойств объекта используют один и тот же контроллер. Рассмотрим пример с массивом частиц.

obj = PArray()

cont = bezier_float()

obj.X_Spin_Vector.controller = cont

obj.Spin_Time_Variation.controller = cont

obj.Spin_Phase.controller = cont

obj.X_Spin_Vector = 1

obj.X_Spin_Vector -- не масштабируется

obj.Spin_Time_Variation -- процентное свойство

obj.Spin_Phase -- угловое свойство

Один и тот же контроллер cont используется свойством .X_Spin_Vector, которое выражается вещественным числом, процентным свойством .Spin_Time_Variation и .Spin_Phase, в котором содержится угол. При присвоении значения 1 свойству .X_Spin_Vector, остальные получат то же самое значение, но для процентного значения это будет означать не один процент, а сто. Угол получит значение один радиан, то есть 57.2958 градусов. Поэтому результат работы приведенного скрипта будет выглядеть следующим образом

$PArray:PArray01 @ [0.00000,0.00000,0.00000] результат 1-й строки

Controller:Bezier_Float результат 2-й строки

Controller:Bezier_Float результат 3-й строки

Controller:Bezier_Float результат 4-й строки

Controller:Bezier_Float результат 5-й строки

1 результат 6-й строки

1.0 результат 7-й строки

100.0 результат 8-й строки

57.2958 результат 9-й строки

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]