Добавить в закладки

Анимация зависимостей

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

Для начала давайте создадим простую модель механизма, состоящую из 3 шестеренок разного диаметра. Для этого воспользуемся сплайновым объектом Star (находится на панели Create - Shapes - Star) с параметрами как на рис. 1.

рис. 1

В итоге у Вас должно получиться что-то похожее на рис.2.

рис. 2

Теперь, когда у нас есть сплайны, можно при желании добавить к ним детали и сделать выдавливание (Extrude), но можно этого в данном уроке и не делать. Я же сделаю это для наглядности (рис.3).

рис. 3

Пришло время заняться непосредственно анимацией. Выберем большую шестеренку в качестве ведущей, т.е. она будет задавать движение двум оставшимся. В первую очередь нужно задать движение этой шестеренке и сделаем мы это при помощи редактора кривых (рис.4).

рис. 4

Когда открылось окно редактора кривых, находим в левой части нужный нам объект (в моем случае это Star01) и выбираем для редактирования кривую поворота по оси Z (это в том случае, если Вы строили объекты на виде сверху), затем активизируем кнопочку Add Key (рис. 5)

рис. 5

Сейчас мы готовы добавлять ключевые кадры и тем самым создать первую часть анимации. Для этого в правой части редактора кривых кликнем дважды с небольшим смещением по пунктирной линии, тем самым создавая два ключевых кадра. Местоположение их на кривой не имеет значения, т.к. мы сейчас подкорректируем его вместе со значением величины. Для этого выбираем первую точку на кривой, активизировав инструмент Move Keys, и в поля внизу вносим значение 0 для номера кадра и значение 0 для величины поворота, т.е. в нулевой точке ничего не происходит (рис. 6)

рис. 6

Далее выбираем вторую точку и вносим значение для номера кадра 50 (половину временной шкалы) и 360 для поворота, т.е. за 50 кадров шестеренка сделает полный оборот. При желании можете поэкспериментировать со значениями времени и величины угла поворота для второй точки.
После этого нужно сделать так, чтобы вращение вначале и в конце происходило без ускорения и замедления. Для этого выделив две точки кривой кликните на Set Tangents to Linear (рис. 7)

рис. 7

Сейчас выставляем Param Curve Out-of-Range Types в Relative Repeat (рис.8).

рис. 8

Это позволит сделать так, что та последовательность, которую мы задали будет в дальнейшем суммироваться, т.е. если мы продолжим вращение, то первая точка окажется на месте второй (50 - 360), а вторая в кадре 100 будет иметь угол поворота в 720 градусов и т.д.

Прежде чем двигаться дальше возможно придется сделать одну "операцию". Дело в том, что если Вы выравнивая относительное положение зубьев шестеренок поворачивали их вокруг своей оси, то необходимо заморозить трансформацию вращения для этих шестеренок , в противном случае при использовании выражений, шестеренки вернутся в свое первоначальное значение т.е. в "0". Для того, чтобы это сделать, удерживая клавишу Alt, кликните правой кнопкой мыши по выделенной шестеренке и в появившемся окне выберите Freeze Rotation .

Вернемся к анимации.
С вращением первой шестеренки разобрались, сейчас займемся следующей. Для нее вращение будет задавать первая и сделаем это при помощи Wire Parameters. Для этого выделяем первую шестеренку (которой уже задано вращение) и идем далее по пунктам меню.

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

После этого откроется окно параметров, где будут выделены параметры вращения по оси Z для первой и второй шестеренки (Star01 и Star02). Здесь жмем на стрелочку направления контроля (control direction) от первой шестеренки ко второй. Далее к выражению внизу добавляем запись, чтобы получилось -Z_Rotation*4 (поясню ниже) и жмем кнопочку Connect (рис. 12).

рис. 12

Итак, что же мы дописали. Во-первых , знак минуса говорит о том, что вращение ведомой шестеренки будет происходить в направлении противоположном ведущей. Цифра "4" - это число, означающее во сколько раз у первой шестеренки больше зубьев, нежели во второй (40:10=4), т.е. вращение второй шестеренки должно быть в 4 раза быстрее, чтобы синхронизировать зацепление зубьев. То же самое можно получить рассчитав угол поворота для каждого зубца у первой и второй шестеренки, где у второй угол поворота получится в 4 раза большим (9 и 36 градусов соответственно).
Сейчас, если подвигать ползунок на таймлайне, Вы увидите как вращаются первые две шестеренки.

Для третьей шестеренки последовательность действий та же, что и для второй с той лишь разницей, что здесь ведущей будет вторая шестеренка, а выражение, используемое для движения будет вида: -Z_Rotation/2. Делим на два т.к. третья шестеренка имеет в два раза больше зубьев, соответственно будет вращаться в два раза медленнее второй.
На рис. 13 (анимированный Gif) представлена часть анимации часового механизма, сделанного нами в сегодняшнем уроке.

рис. 13

Подводя итоги проделанной работе, хочу заметить, что подобного рода анимация пригодится для создания движения стрелок часов, колес и гусениц танка, колес автомобиля относительно дороги (вращение колеса привязывается к поступательному движению) и т.д. и т.п. В общем, проявив фантазию можно найти массу вариантов применения зависимостей.

Если Вы написали свой урок или перевели иностранный, мы с удовольствием вывесим его на сайте.

Rambler's Top100
Hosted by uCoz