Сложность: Легкий
5 простых выражений для After Effects
Всем привет! В этой статье я хочу поговорить с Вами о 5 простых, но тем не менее очень полезных выражениях. Эти выражения я использую чуть ли не в каждом втором проекте и они существенно облегчают мою жизнь.
1) Итак, первое из них - это loopOut(). Простенькое выражение для зацикливания анимации. Допустим, у нас есть бабочка, собранная из трех частей: левое крыло, правое и тело.

И нам необходимо сделать так, чтобы крылья без остановки вращались вокруг оси Y, создавая тем самым эффект реалстичных махов крыльями. Но представляете, сколько ключевых кадров нам нужно поставить, чтобы анимировать крыло на протяжении маленькой пятисекундной композиции. По моим подсчётам около 60! И, чтобы не возиться с этим огромным количеством ключевых кадров, разработчики программы придумали одно простое выражение - loopOut.
Поэтому, мы находим параметр Rotation Y и слева от него кликаем по значку с секундомером. После чего, в начале композиции появится ключевй кадр, измените значение параметра для этого ключа на -80. После этого мы переходим на 4 кадра вперед и изменяем значение параметра Rotation Y на 80. Затем ещё 4 кадра вперед и меняем значение параметра обратно на -80. Таким образом мы получили 3 ключевых кадра.

После этого мы зажимаем клавишу Alt и кликаем ещё раз по значку с секундомером. Появится текстовая область для выражения. В ней мы пишем loopOut().

Всё, теперь наша анимация продолжается до самого конца композиции без всяких ключевых кадров.
2) Ок, правое крыло мы анимировали. Теперь займемся левым. Не будем повторятся, и левое крыло анимируем немного другим способом. Все Вы, наверно, ещё со школьной скамьи помните замечательную математическую функцию синус. Так давайте воспльзуемся ею и здесь. Делаем Alt+клик по значку с секундомером слева от параметра Rotation Y левого крыла. В появившемся окне пишем Math.sin(time).

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

Отлично частоту мы увеличили, но, как Вы помните, значения синуса находятся в диапазоне от -1 до 1. Поэтому и амплитуда вращения крыла у нас такая маленькая. Чтобы увеличить её умножим всё это выражение на 80.

В итоге получим: 80*Math.sin(time*15). Можно, конечно, немного увеличить частоту, но это уже на Ваше усмотрение.
3) Wiggle. Наверно, самое используемое выражение в среде After Effects, и всё-таки не все знают для чего оно предназначено. Wiggle отвечает за хаотичные перемещения. Вообще функция wiggle имеет целых пять аргументов, но в основном используются только два. Первое - это частота, второе - амплитуда колебаний. Рассмотрим на примере. Я анимировал положение бабочки, теперь она перемещается из левого нижнего в правый верхний угол.

Движение ожидаемо смотрится линейно и неправдоподобно. Если мы хотим сохранить направление движения, но при этом добавить немного органичности, то нам не обойтись без wiggle. Итак, делаем Alt+клик на значке с секундомером слева от параметра Position и в текстовой области вбиваем wiggle(3,400). Смотрим и видим, что полёт бабочки стал более реалистичным. Что же означает написанное выражение wiggle(3,400). А означает оно то, что три раза в секунду с амплитудой в 400 пикселей в любом направлении будут происходить случайные колебания. Самое интересное это то, что wiggle можно применить практически к любому параметру в AE.
4) Данный пункт является не столько выражением, сколько очень интересным приёмом при работе с wiggle. Многие меня спрашивают, как можно изменять настройки функции wiggle с течением времени, или по-другому, как анимировать один из аргументов функции wiggle. Очень просто! - отвечу я Вам. Создаём нуль-объект. Затем идём Effect => Expression Controls => Slider Control. Пускай у нас будет изменятся амплитуда. Переходим к выражению, которое мы создали в предыдущем пункте. Выделяем амплитуду,

берём pickwip и тянем его до параметра Slider нуль-объекта.

Вот такое выражение мы получим в итоге:

Теперь Вы можете с легкостью анимировать значение параметра Slider и таким же образом будет менятся амплитуда.
5) И последнее о чем я хотел Вам сегодня поведать - это наипростейшее выражение с управляющей переменной time. Вы, наверное, не раз сталкивались с такими выражениями. На пример, у нас есть какой-нибудь сплошной слой, мы применяем к нему эффект Fractal Noise и, чтобы данный эффект не был статичным нам нужно анимировать параметр Evolution.

Да, можно поставить 2 ключевых кадра в начале и в конце композиции, но есть и другой путь. Делаем Alt+клик по значку с секундомером слева от параметра Evolution и пишем time. Теперь, если мы перемести индикатор текущего времени в позицию одной секунды, то значение параметра Evolution будет равнятся одному градусу. 1 секунда = 1 градус - всё очень просто!

Если нам нужно ускорить анимацию, допустим в пять раз, то мы пишем time*5.

На этом, я думаю, пора заканчивать. Надеюсь эта статья показалась Вам полезной, ведь теперь Вы знаете, что для экономии врмени вместо ключевых кадров можно использовать выражения. Всем удачи и до встречи на сайте VideoSmile.ru
Комментарии 28
Вопрос снят.Нужно было оттянуть вниз окошко внутри окна wiggler. Спасибо за ваш труд.Полезные уроки можно найти на вашем сайте.Успехов!
Добрый день.Решил анимировать свечу с помощью wiggler в After effects, но сама функция не активна.Нет кнопки применить.Установил 2 разные сборки но результат тот же.Можете подсказать где искать причину?Спасибо
Добрый день, спасибо большое за урок. Возник вопрос. Можно ли одновременно для одного параметра (например Position) сделать два выражения? Например, loopOut + wiggle.
Очень доволен уроком. Я давно искал хоть что-то полезное в АЕ по выражениям. К сожалению, такого как сейчас не было (тружусь с АЕ с 2005 года) и единственная дельная и хорошая книга была по АЕ "Официальный уч. курс по АЕ 5.0". Больше не встречал.
Короче спасибо.
как связать значение слайдер со значением в градусах?
Добрый день!
экспрешн loopOut('pingpong') не хочет работать с маской (анимация Mask Path). Как быть в этом случае?
Очень люблю этот сайт, за лаконичные советы по C4D и AE
Здравствуйте!
Нигде не нашел, как сделать так, чтобы освещенность одного слоя влияла на освещенность другого. Например - на переднем плане прокиенный герой,а на заднем - взрывы. Как сделать так, чтобы освещенность лица героя менялась соответственно этим взрывам?
Как вариант - продублировать задний фон, сделать его ч/б, увеличить контраст и сильно размыть, в итоге получим некую "карту освещённости". Т.е. в моменты вспышек на заднем фоне - полученный слой начнёт светиться синхронно с ним. Затем просто накладываем это на лицо героя с помощью режимов наложения и масок
несколько ошибок на -тся и -ться. Исправьте, чтоли
Отличный урок. А как следует изменить выражение, чтобы цикл проходил только с конкретных кейфреймов?
Спасибо за информацию.
Да! То что нужно! Спасибо!
По-моему, это гениально.
Спасибо!
Подскажите пожалуйста как можно внести корректировку в выражение с двумя переменными.
У меня есть PositionXY блика которому я присваиваю значения AnchorPoint другого слоя, но мне надо чтобы XY блика не были равны XY другого слоя , а отличались на константу (например Xблика=Xслоя-104, Yблика=Yслоя-89).
Можно создать новую переменную, и внести в неё значение параметра Position XY только по оси X. Например: S=PositionXY[0]; Далее можете делать с этой переменной все, что захотите. Аналогичную переменную нужно будет создать и для значения параметра Position XY по оси Y.
Побольше бы статей на эту тему. Огромное спасибо автору. Долгое время использую AE но некоторые выражения для меня новы.
спасибо! нужная статья