Render.ru
Поддержать
Сохранить
Man5ON
ПОДПИСАТЬСЯ
  • ПРЕДЛОЖИТЬ ПРОЕКТ
  • ДОБАВИТЬ В КОНТАКТЫ
4901Записей
87Следят
16Читает
30.1 MЗаходов

Создание выражений в Adobe After Effects

Урок

Использование новых методов зацикливания ключевых кадров

AE 5.5 включает четыре новых метода зацикливания ключевых кадров.
Это следующие методы:

1. loop_in(type = "cycle", num_keyframes = 0)
Зацикливает участок времени, начиная от первого ключевого кадра вперёд по направлению к точке выхода. Цикл идёт от точки входа до первого ключевого кадра слоя. Сегмент для зацикливания задаётся количеством ключевых кадров.

2. loop_out(type = "cycle", num_keyframes = 0)
Зацикливает участок времени, начиная от последнего ключевого кадра назад по направлению к точке входа. Цикл идёт от последнего ключевого кадра до точки выхода слоя. Сегмент для зацикливания задаётся количеством ключевых кадров.

3. loop_in_duration(type = "cycle", duration = 0)
Зацикливает участок времени, начиная от первого ключевого кадра вперёд по направлению к точке выхода. Цикл идёт от точки входа до первого ключевого кадра слоя. Промежуток времени до следующего цикла задаётся определённой пользователем длительностью в секундах.

4. loop_out_duration(type = "cycle", duration = 0)
Зацикливает участок времени, начиная от последнего ключевого кадра назад по направлению к точке входа. Цикл идёт от последнего ключевого кадра до точки выхода слоя. Промежуток времени до следующего цикла задаётся определённой пользователем длительностью в секундах.

Типы установочных параметров

Доступные типы приведены ниже:

1. Cycle
Повторяет определённый участок.
loop_in(type = "cycle", num_keyframes = 20)

2. Pingpong
Повторяет определённый участок, но чередует повторение вперёд и повторение назад.
loop_out(type = "pingpong", num_keyframes = 40)

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

4. Continue
Не повторяет определённый участок, но продолжает создавать анимацию, основываясь на скорости в первом или последнем ключевом кадре свойства. Например, если последний ключевой кадр свойства scale показывает, что слой имеет в этой точке масштаб 100% и свойству назначено выражение loop_out(type="continue"), тогда слой вместо зацикливания продолжит увеличиваться от 100% к точке выхода. Этот тип не имеет "keyframes" или "duration" параметров.

Просмотр аргументов функций и значений по умолчанию

Меню функций выражений содержит перечень аргументов и значений по умолчанию. Это упрощает запоминание элементов, которые вы можете контролировать, когда напишите выражение.
Для примера, в меню функций есть функция wiggle, с которой приводиться перечень его аргументов wiggle(freq, amp, octaves = 1, amp_mult =5, t = time). Вводный перечень указывает, что функция wiggle имеет пять аргументов. Знак (=) в последних трёх выражениях говорит о том, что использование этих аргументов является необязательным.

Использование функции "has_parent()"

Вы можете указать в вашем выражении, что вы хотите извлечь свойство из родительского слоя. Для этого используйте функцию "has_parent()".
Пример:
idx = index;
if (has_parent)
{idx = parent.index}
this_comp.layer(idx).position.wiggle(5, 20)

Получение случайного значения независящего от времени

Используя функцию seed_random() вы можете писать выражения для получения случайного значения, которые будут зависеть от номера слоя и не зависеть от времени.
Например, следующее выражение передаёт true, как второй параметр для функции seed_random(), задающей случайное число между 0 и 1.
seed_random(<any number>, true);
r = random()

Использование атрибута ".name"

After Effects 5.5 добавляет атрибут ".name" к объектам Comp, Footage, Layer, Mask, и Effect. Это полезно, когда вы хотите применить одинаковые выражения к нескольким слоям. Изменение действия будет базироваться на имени объекта. Например, следующее выражение применяет wiggle на position слоя различно, в зависимости от того является ли данный слой слоем с именем "hero":
amp = 20;
if (name == "hero")
{amp = 40;}
wiggle(5, amp)

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

Сейчас вы можете писать выражения, которые имеют доступ к ключевым кадрам и маркерам. Эти выражения полезны, когда требуется, что бы свойство в определённый момент времени имело определённое значение. Для доступа к маркеру или ключевому кадру используем следующие атрибуты и методы:

- this_comp.marker(marker_num)
Возвращает время маркера композиции. Вы можете использовать это, например, для ухода слоя в 100% прозрачность.
mark_time = this_comp.marker(1);
linear(time, mark_time - 5, mark_time, 100, 0)

- num_keys
Возвращает число ключевых кадров свойства.

- key(idx)
Возвращает ключевой кадр по номеру. Например, key(1) это первый ключевой кадр композиции.
Когда вы имеете доступ к объекту key, то вы можете извлечь из него свойства time, index и value. Например, следующее выражение даёт вам доступ к свойству value третьего ключевого кадра.
position.key(3).value.
Следующее выражение, будучи написанным, на слое с анимированным свойством opacity, игнорирует значение ключевых кадров и использует только их положение во времени. Оно определяет, когда должны происходить вспышки.
d = Math.abs(time - nearest_key(time).time);
ease_out(d, 0, 1, 100, 0)

- marker
Возвращает свойство marker для слоя. Это свойство отлично от свойств типа position тем, что поддерживаются только такие методы и атрибуты как: key(), nearest_key и num_keys. Вы можете извлечь ключи двумя путями:

1. По индексу marker.key(1)
2. По имени маркера marker.key("foo")

А вот вам ещё один пример использования маркеров в выражениях:
m1 = marker.key("Start").time;
m2 = marker.key("End").time;
linear(time, m1, m2, 0, 100);

Это выражение написано на свойстве opacity и создаёт линейное нарастание непрозрачности от маркера "Start" до маркера "End".

 

 

 

 

406
Комментарии:12
по поступлениюВсе языкиТолько русский
2
0
Patrick
15.05.2007 6:40
помоему эта тема всегда останетцо популярной для всех начинающих в ае. много обьясняет
2
0
IngWAR
04.07.2007 9:28
Отлично!!! Столько мучался а изюминка вот она!!! Спасибо большое просто выручили!!!Отличные уроки
2
0
NATO
27.02.2008 10:22
Файлы урока не могу скачать. Досадно.
2
0
dverg
15.04.2008 12:05
хорошая публикация! не могли бы администраторы сайта дать верную ссылку на "Скачать файлы урока (3,67 Mb)"
15
0
ms.tomik
15.04.2008 19:16
хорошая публикация! не могли бы администраторы сайта дать верную ссылку на "Скачать файлы урока (3,67 Mb)"
ссылка исправлена
2
0
blade
27.07.2008 12:44
>> создайте верхний слой круглым и назовите его "Light" Блин объясните мне что сие значит? Кто такой этот круглый?
2
0
SlayerBoxer
14.07.2009 10:46
=) Начинающий в АЕ врдли сразу лезит в Java Script )))
7
0
Romark
23.11.2009 13:20
Александр, большое спасибо за твой труд!
20
0
Paul_Winex
21.02.2010 21:06
Очень полезно всё. Прости за возможно глупый вопрос. Ты всё время отправляешь читателей за справкой в "Справочник по языку выражений Adobe After Effects". Может я что недочитал, где это? Спасибо.
2
0
Toys
18.09.2011 20:17
да уж ... ребята, будьте внимательны, тут есть несколько ошибок...... автор не перевел документ тщательно, то ли от нехватки времени, то ли от лени. На все слои кроме контрольного применяется fastblur и на параметр размытости кидается этот скрипт. выражение применяется для при том как он смог присвоить параметр с двумя значениями к параметру который имеет одно значение?! поэтому вносим исправления и будет щастье то му кто хочет разобрацо в этом море методов и функций. point1=this_layer.position[0]; point2=this_comp.layer("Drag Me").position[0]; delta=sub(point1, point2); distance=length(delta); linear(distance, 0, 80, 40, 0); ps работает на cs5
2
0
Toys
18.09.2011 20:18
ну а с увидичением я думаю уже не сложно разобрацо. Всем приятного, творческого настроения . =)
2
0
DVDkhv
13.07.2015 8:30
Какое выражение написать, чтобы указанный эффект был применен ко всем нечетным кадрам?