Задачи на этот урок:
- Метод loopOut();
- Метод. Math.sin();
- Метод Wiggle();
- Анимация эффектов с помощью выражений;
- Примеры выражений в Adobe After Effects;
- Конвертирование выражений в ключевые кадры;
Просмотрим анимацию. Заставим анимацию повторяться до конца композиции. Для этого создадим выражение в Expression Scale loopOut()
Рассмотрим метод из справочника "Атрибуты и методы Adobe After Effects.pdf":loopOut(type="cycle", numKeyframes=0)
Тип возвращения: число или массив.
Повторяет сегмент времени, измеряемый от последнего ключевого кадра в слое до точки входа слоя. Цикл воспроизводится до точки выхода слоя. Заданное число ключевых кадров определяет циклически повторяющийся сегмент.
Значение numKeyframes используется для определения количества сегментов ключевых кадров для зацикливания. Указанный диапазон измеряется в обратном направлении от последнего ключевого кадра.
Например, значение loopOut ("cycle", 1) повторяет сегмент, ограниченный последним и предпоследним ключевыми кадрами. Значение по умолчанию 0 означает, что все ключевые кадры повторяются циклично. Дополнительную информацию см. в методе "loopIn()".
Просмотрим анимацию.
Внимание — это не метод Adobe After Effects а встроенный метод JavaScript, тем не менее его можно использовать в выражениях в Adobe After Effects.
Функцию у=sin(x) мы помним из школьного курса математики. Напомню, что значение функции изменяется от -1 до +1.
Math.abs(Math.sin(time))*100
Обратите внимание методы JavaScript надо вводит с большой буквы в противном случае отобразится ошибка!
Math.abs – абсолютное значение аргумента, компенсируем отрицательные значения функции y=sin(x).
Math.sin(time) – вычисление sin с аргументом время.
*100 масштабируем результат от 0 до 100.
Для параметра Scale выражение будет выглядеть уже сложнее:
temp=Math.sin(time)*200;
[temp, temp]
Здесь необходимо использовать переменные для двух аргументов параметра Scale.
На рисунке выражение для параметра Opacity отключено!
Для создания хаотичности применяется метод Adobe After Effects Wiggle(). Метод Wiggle имеет пять аргументов, обычно используются два первых. Первый это частота колебаний, второй амплитуда колебаний.
Рассмотрим метод из справочника Атрибуты и методы Adobe After Effects.pdf
wiggle (freq, amp, octaves=1, amp_mult=.5, t=time)
Тип возвращения: число или массив.
Тип аргумента: freq, amp, octaves, amp_mult и t – это числа.
Произвольно применяет эффект покачивания к значению свойства.
Значение freq – это частота в покачиваниях в секунду.
Значение amp – это амплитуда в единицах измерения свойства, к которому оно применяется.
Значение octaves – это количество октав шума, которые требуется сложить. Это значение управляет объемом детализации в покачивании. Сделайте это значение больше значения по умолчанию (1), чтобы добавить более высокие частоты, или меньше, чтобы добавить амплитудную гармонику в покачивание.
Значение amp_mult – это число, на которое умножается значение amp для каждой октавы. Это значение управляет скоростью спада гармоник. Значение по умолчанию равно 0,5 приблизите его к 1, чтобы добавить гармонику при той же амплитуде, что и базовая частота, или приблизите его к 0, чтобы уменьшить детализацию.
Значение t – это базовое начальное время. Этому значению по умолчанию присваивается текущее время. Используйте этот параметр, чтобы выходные данные являлись покачиванием значения свойства, полученного в разное время.
Как анимировать с помощью метода wiggle().
wiggle(1,200)
случайные колебания с частотой 1 Гц и амплитудой 200 пикселей.
wiggle(1,50)
случайные колебания с частотой 1 Гц и амплитудой 50 пикселей.
Смотрим анимацию.
У нас есть сплошной слой, мы применяем к нему эффект Gell Pattern и, чтобы данный эффект не был статичным нам нужно анимировать параметрs Evolution и Disperce.
Смотрим анимацию.
Можно «поиграть» с другими параметрами и попробовать применить другие методы.
[(thisComp.width/2),(thisComp.height/2)]+[Math.sin(time)*200,-Math.cos(time)*200]
thisComp.width/2 – вычислили середину окна по горизонтали.
thisComp.height/2 – вычислили середину окна по вертикали.
Math.sin(time)*200,-Math.cos(time)*200 – создали движение по кругу.
R=300; T=time;
[R*(Math.sin(T/24)-Math.cos(T/24))]
thisComp.layer("Hour").transform.rotation
Чтобы минутная стрелка вращалась в 12 раз быстрее часовой стрелки добавьте значение *12 в конце выражения следующим образом:
thisComp.layer("Hour").transform.rotation*12
Реализация исполнения операций по условию.
Выражения вводим в свойство Position:
t=4;
if (time > t) wiggle(3,25) else value;
t=4;
if (time > t) value; else wiggle(3,25);
t1=2; t2=4;
if ((time > t1) && (time < t2)) { wiggle(3,25); } else { value; }
Выражения вводим в свойство Position:
Height=600; freq=3; decay=1,1; amp=500;
y=Height-Math.abs((Math.sin(time*freq))/Math.exp(time*decay)*amp); [Height, y]
Выражения вводим в свойство Scale:
maxDev = 23; spd = 30; decay = 1.0;
t = time - inPoint;
x = scale[0] + maxDev*Math.sin(spd*t)/Math.exp(decay*t);
y = scale[0]*scale[1]/x;
[x,y]
В некоторых ситуациях может быть полезно конвертирование выражений в ключевые кадры. Для преобразования выражений в ключевые кадры необходимо в главном меню Animation/Keyframe Assistant/Convert Expression to Keyframes.