Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Значения ключевых кадров




Ключевые кадры анимации

В MAXScript имеются средства для создания ключевых кадров на треках анимации и установки их значений.

• Ключевые кадры анимации можно создавать с помощью контекста animate. Этот контекст равнозначен включению режима Auto Key и выполнению последующих команд (при этом кнопка Auto Key в пользовательском интерфейсе 3dsMax не активизируется):

animate on

(

[команды]

)

В данном контексте можно также использовать контекст at time для указания места для установки ключевых кадров:


Глава5

s = sphere()

animate on

(

at time 50 s.radius = 10

at time 100 s.radius = 60

)

В этом фрагменте кода создаются ключевые кадры анимации радиуса сферы в кадрах 50 и 100, где устанавливаются значения радиуса 10 и 60 соответственно.

Если контекст animate используется для установки ключевых кадров, то в нулевом кадре автоматически создается ключевой кадр, даже если это не указано явно. При этом повторяются те же действия, что и при активизации кнопки Auto Key: если ключевой кадр устанавливается не в нулевом кадре, а в последнем он отсутствует, то ключевой кадр автоматически создается в нулевом кадре с исходным значением трека.

Когда создается сфера, контроллер для трека анимации ее радиуса не назначается. Если ключевые кадры устанавливаются с помощью контекста animate, то по умолчанию для трека анимации радиуса сферы назначается контроллер Bezier_Float. После расстановки ключевых кадров на треке можно отобразить тип назначенного контроллера, введя в приемнике команд следующую строку кода:

s.radius.controller

• Кроме того, ключевые кадры анимации могут быть созданы с помощью метода addNewKey. Если контроллер уже назначен для трека, то, используя метод addNewKey, можно добавить ключевой кадр непосредственно к контроллеру:

c = s.radius.controller

addNewKey c 20

В данном примере ключевой кадр добавляется к контроллеру, управляющему анимацией радиуса сферы, в кадре 20. Значение контроллера в данном кадре не меняется, а просто устанавливается ключевой кадр.

Если ключевые кадры вводятся с помощью метода addNewKey, ключевой кадр не создается автоматически в нулевом кадре.

Для удаления всех ключевых кадров конкретного контроллера можно воспользоваться следующей строкой кода:

deleteKeys s.radius.controller

 

Для изменения значений ключевых кадров в конкретном кадре имеются следующие возможности.

• Использовать контекст animate, чтобы установить значения ключевых кадров непосредственно для контроллера или же самого параметра. Обе приведенные ниже строки кода совершенно равнозначны:

animate on (at time 30 s.radius = 50)

animate on (at time 30 s.radius.controller.value = 50)


Преобразования и анимация

При написании сценариев предпочтительнее использовать более короткую запись. Но при установке ключевых кадров анимации вращения может возникнуть потребность присвоить значение угла поворота свыше 360° непосредственно контроллеру, не прибегая к методу angleAxis. Рассмотрим для примера две следующие строки кода:

at time 50 s.rotation.z_rotation = 720

at time 50 s.rotation.controller[3].controller.value = 720

Допустим, что в качестве контроллера управления вращением назначен контроллер Euler XYZ. При выполнении первой строки кода вращения не происходит, поскольку угол поворота определяется в виде остатка от деления на 360. А во второй строке кода устанавливается ключевой кадр, вынуждающий объект совершить два полных оборота вокруг своей оси Z,

• Использовать свойство.keys, содержащее массив ключевых кадров, установленных для конкретного контроллера,

s.radius.keys[2].value = 40

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

Если значения ключевых кадров изменяются с помощью свойства.keys, нужно точно знать контроллер, которому эти значения присваиваются. Присваиваемое значение определяется для ключевых кадров контроллера. Если создать контроллер в виде экземпляра и назначить его для нескольких оживляемых параметров в сцене, то изменение отдельного значения с помощью свойства.keys коснется всех параметров, для которых назначен данный контроллер.

Для создания простой анимации выполните следующее упражнение.

1. Установите 3dsMax в исходное состояние.

2. Создайте чайник, введя в окне приемника команд следующую строку кода:

t = teapot()

3. В этом упражнении вам предстоит осуществить анимацию радиуса чайника от нулевого до сотого кадра, установив ключевые кадры в кадрах 0, 50 и 10. Сделайте это в окне приемника команд, чтобы видеть реакцию на выполнение каждого пункта данного упражнения.

По умолчанию для анимации радиуса чайника назначен контроллер

Bezier Float, но его придется заменить.

4. Создайте объект контроллера linear_float:

c = linear_float()

Контроллер linear_float обеспечивает плавное, линейное изменение значения параметра в промежутке между ключевыми кадрами. Поэтому его можно применять к таким параметрам объектов, как радиус чайника, который описывается единственным числовым значением с плавающей точкой.


Глава 5

5. А теперь, когда имеется чайник и соответствующий контроллер, назначьте этот контроллер для радиуса чайника:

t.radius.controller = c

Далее вам предстоит установить ключевые кадры с помощью контекста animate. При вводе каждого ключевого кадра в свойство.keys контроллера, управляющего анимацией параметра объекта (в данном случае радиуса чайника), добавляется очередной элемент массива.

6. Создайте три ключевых кадра, используя контекст animate:

animate on

(

for i = 0 to 100 by 50 do

(

at time i t.radius = ((i * 0.5) + 10)

)

)

7. В этом фрагменте кода устанавливаются значения 10, 35 и 60 радиуса чайника соответственно в кадрах 0, 50 и 10.

8. Воспроизведите анимацию, наблюдая за изменением радиуса чайника. Существует несколько способов доступа к ключевым кадрам анимации.

9. Введите следующую строку кода:

print c.keys[2]

В приемнике команд появится результат #Linear Float key(2 @ 50f). Для перехода к отдельным ключевым кадрам в данном случае можно воспользоваться непосредственно параметром радиуса чайника, поскольку для него назначен контроллер.

10. Введите следующую строку кода:

print t.radius.keys[2]

В приемнике команд будет получен тот же результат, что и в п. 7 данного упражнения.

11. Вновь воспроизведите анимацию, наблюдая за изменением радиуса чайника.

 




Поделиться с друзьями:


Дата добавления: 2014-10-15; Просмотров: 558; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.