Adobe effect выражения pdf

Обновлено: 04.07.2024

Собрал список выражений для АЕ, которые упрощают мне работу. Совсем простых в стиле loopOut() или wiggle (.4,6) здесь не будет, но и ничего экстрасложного тоже.

Своих экспрешнов здесь всего парочка. Большинство я брал откуда-то и переписывал по чуть-чуть под себя, так что, у чужих экспрешнов поставлю ссылку на авторов.

Плашка за текстом

Создать шейповый квадратик, а сверху отдельным слоём добавить текст;
Применить к параметру size у шейпа:

Если текст в несколько строк, то к position у шейпа добавьте этот экспрешн. Без него тоже всё будет работать, но придётся вручную подгонять позицию плашки за текстом.


К остальным экспрешнам

Анимируемый wiggle

Простой способ заанимировать wiggle. Используем для этого два слайдера: первый отвечает за частоту, второй за амплитуду. Анимировать лучше только амплитуду.

Добавить эффект Slider Control на слой с экспрешном и продублировать его. Применить к любому параметру:

Цикличный wiggle

Благодаря этому экспрешну, wiggle начинается и заканчивается в одной и той же точке.

Если вдруг цикл не работает, то это скорей всего из-за того, что луп не успевает прийти в изначальное состояние за отведённое время. Просто сделайте loopTime побольше или freq почаще

Прикрепить шейп к одной стороне

Применить к position, изменять size у шейпа:

Риг для катящегося круга и квадрата

Катящийся круг

Применить к rotation, анимировать position:

Катящийся квадрат

Работает как с шейпами, так и со слоями и композициями. Если квадрат катится неправильно — изменить значение Slider Control.

Добавить на слой с экспрешном эффект Slider Control;
Применить к position, анимировать rotation:

На основе экспрешна от Mikey Borup

Ежесекундные ступенчатые повороты

Замена time*n. Только вместо плавного поворота — ступенчатый. Чаще всего пригождается, чтобы сделать анимацию секундной стрелки, шестерёнок или других похожих механизмов.

Применить к rotation:

Управляемые ступенчатые повороты

Практически то же самое, что и выше. Но с чуть большим количеством настроек.

Применить к rotation:

Постоянный масштаб при скейле

Если привязать один объект к другому и начать скейлить родительский, то оба слоя будут увеличиваться. Этот экспрешн не даёт дочернему слою изменять масштаб, он просто будет двигаться по позишну.

Применить к scale слоя, у которого должен быть постоянный масштаб:

Переключатель по чекбоксу

Меняет одно значение параметра на другое по нажатию на чекбокс.

Добавить эффект Checkbox Control на слой с экспрешном;
Применить к любому параметру:

Луп для шейпов

Обычный loopOut() не работает с шейпами, но зато работает этот экспрешн.

Применить к path у шейпа:

Range Mapper

Добавить эффект Slider Control на слой с экспрешном;
Применить к любому параметру:

Обводка независимая от скейла

Сохраняет постоянную обводку у шейпов при изменении масштаба.

Применить к «Stroke Width» у шейпа:

Счётчики

Почему-то часто использую счётчики в анимациях, поэтому здесь будет подборка сразу из шести. Сначала три самых простых.

1) Обычный счётчик

toFixed(1) — количество цифр после запятой;
Добавить эффект Slider Control на слой с экспрешном;
Применить к «Source Text» у текста:

2) Счётчик с запятыми вместо точек

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

3) Счётчик с дополнительными знаками

4) Счётчик с заменой 1 на 001


При zerosAmount = 3 счёт будет идти вот так: 000, 001 … 011 … 111.

5) Счётчик с разрядами

Заменяет 500000 на 500 000.

6) Счётчик для больших чисел

Счётчик, привязанный к Slider Control, не идёт дальше 1 000 000. Поэтому если нужны большие числа — приходится использовать эффект Angle Control.

Добавить эффект Angle Control на слой с экспрешном;
Применить к «Source Text» у текста:

Пара мелочей

И, под конец, 4 полезных мини-выражения, которые часто пригождаются.

1) Привязка к слою выше или ниже

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


index+1 — если нужна привязка к слою ниже

2) Постоянно ускоряющиеся повороты

Попробуйте добавить к rotation:

3) Ключи для time*n

Добавляет постоянное движение, но оставляет возможность ставить ключи.

4) Привязка эффекта к слою

Чтобы Gradient Ramp не слетал при перемещении слоя, добавьте этот экспрешн на Start и End:

Похоже, это все выражения, которыми я пользуюсь на постоянной основе. Всего получилось 23.
На всякий случай, собрал их в проект и прикрепил к статье.

Сергей Маслов

начну пожалуй с самого популярного экспрешшона рунета, автором которого является Тимур Константинов. вот скрипт:

mp = .1;//Чем больше значение, тем больше амблитуда
freq = 5;//Чем больше значение, тем больше частота
decay = 7;//Чем больше значение, тем меньше задержка

n = 0;
if (numKeys > 0)<
n = nearestKey(time).index;
if (key(n).time > time)<
n--;
>
>
if (n == 0)<
t = 0;
>else<
t = time - key(n).time;
>

if (n > 0)<
v = velocityAtTime(key(n).time - thisComp.frameDuration/10);
value + v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);
>else<
value;
>

Всеволод Амелин

точнее - вот так:

amp = .1;
freq = 5;
decay = 7;

n = 0;
if (numKeys > 0)n = nearestKey(time).index;
if (key(n).time > time)n--;
>
>
if (n == 0)t = 0;
>elset = time - key(n).time;
>

if (n > 0)v = velocityAtTime(key(n).time - thisComp.frameDuration/10);
value + v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);
>elsevalue;
>

Сергей Маслов

да, спасибо. скопипастил криво) можно и с комментариями оставить после amp/frec/decay, потому что за двойным слешем программа не читает скрипт и туда можно вписывать пометки и комментарии

Сергей Маслов

Костя Лашин

вот ссылка на несколько полезных выражений

Саша Танцура

да выражений в нете полно,куда интереснее скрипты))их я не часто встречал.

Саша Танцура

вот те,которыми я пользуюсь:

Для оси X:
Math.cos(S*time)*360

Для оси Y:
Math.sin(S*time)*360

Для колес эволюции и оси Z:
time*S

amp = 15; //amplitude (pixels)
freq = 10; //frequency (cycles per second)

n = 0;
if (numKeys > 0)<
n = nearestKey(time).index;
if (key(n).time > time)<
n--;
>
>
if (n == 0)<
t = 0;
>else<
t = time - key(n).time;
>
if (n > 0)<
v = velocityAtTime(key(n).time - thisComp.frameDuration/10);
amp = .05;
freq = 4.0;
decay = 2.0;
value + v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);
>else<
value;
>

,где amp - амплитуда, freq - частота, а decay - затухание

Серега маслов, это вообще не Тимура скрипт)) А Хэрри Фрэнка с грэй машин)
Но экспрешн реально полезный)

DELETED

ухты, полезная вещь, спс, а то вручную надоело крутить)

Владимир Ордовский-Танаевский

2 Владислав Соловьев
а по моему - это просто код программирования.
зная язык, можно самому написать без Генри и Тимура

Сергей Маслов

Вовка, это то да)
Просто этот экспрешн я видел давным давно еще на старой версии сайта грэй машин) А вообще Хэрри Фрэнк очень неплохо рассказывает, советы дельные)

origin = [10,10,10];//описываем стандартный размер массива (таблица)
dimX = 10;//к-во ячеек по X
dimY = 10;//к-во ячеек по Y
dimZ = 10;//к-во ячеек по Z
gap = 50;//максимально расстояние между ячейками
gridRate = 500;//скорость движения частиц
holdTime = .1;//максимальная задержка по времени
//описываем необходимые переменные, заранее обнулив их
start = 0;
startX = 0;
startY = 0;
startZ = 0;
endX = 0;
endY = 0;
endZ = 0;
deltaX = 0;
deltaY = 0
deltaZ = 0;

end = 0;
j = 0;//переменная, необходимая для проведения цикла и дальнейшей проверки значений

while (time >= end) //цикл, аналог цикла "for"
seedRandom(j,true); //генератор случайных чисел
//задаем начальные позиции элемента
startX = Math.floor(random(dimX))*gap + origin[0]; //по X
startY = Math.floor(random(dimY))*gap + origin[1]; //по Y
startZ = Math.floor(random(dimZ))*gap + origin[2]; //по Z
j +=1;//наращиваем значение j на единичку с каждым шагом, т.е. в следующем цикле
произойдет новое перемещение объекта
seedRandom(j,true) //снова рандомим
start = end; //присваиваем значению "end" значение "start" для просчета
конечной позиции элемента
//========«строчим все как для старрта»==========
endX = Math.floor(random(dimX))*gap + origin[0];
endY = Math.floor(random(dimY))*gap + origin[1];
endZ = Math.floor(random(dimZ))*gap + origin[2];
deltaX = Math.abs(endX - startX);
deltaY = Math.abs(endY - startY);
deltaZ = Math.abs(endZ - startZ);
//теперь конечная позиция будет менятся в каждом новом цикле
end += (deltaX + deltaY + deltaZ)/gridRate + 3*holdTime;
>

p1 = start + deltaX/gridRate; //определено рандомное расположение объекта и первое движение по X
p2 = p1 + holdTime; //второе движение c задержкой
p3 = p2 + deltaY/gridRate;//третье со смещением по Y
p4 = p3 + holdTime;// четвертое с задержкой
p5 = p4 + deltaZ/gridRate; //пятое со смещением по Z
//========«проверка на порядок действий (порядок движения) и движение по-этапное»=========
if (time < p1)
ease(time,start,p1,[startX,startY,startZ],[endX,startY,startZ]) //изменение позиции с мягким ключом (короче в виде часиков песочных :D)
>
else if (time < p2)
[endX,startY,startZ] //первое смещение
>
else if (time < p3)
ease(time,p2,p3,[endX,startY,startZ],[endX,endY,startZ]) //третье движение
>
else
if (time < p4)
[endX,endY,startZ] //четвертое
>
else
if (time < p5)
ease(time,p4,p5,[endX,endY,startZ],[endX,endY,endZ]) //пятое
>
else
[endX,endY,endZ]
>

//движение элемента теперь будет происходить рандомно по сетке по направлениям X,Y и Z

Мы не обмениваемся ссылками на пиратский контент - будь то скрипты, плагины или что-нибудь в этом духе. За ссылки на ломаные скрипты - бан.

Особенно воздержитесь от вопросов типа "как поставить афтер эффектс" или "у меня кодек не работает". Для этого есть другие места.

ВНИМАНИЕ - список материалов группы в разделе "Список выражений" чуть ниже (привет, кэп). Прежде чем задать вопрос, посмотри. Возможно, на него уже есть ответ.

Ссылки на выражения по темам

  • Часть 1.
  • Часть 2 - seedRandom
  • Часть 3 - Шум Перлина
  • Bar Graph'ы, инфографика (+проект)
  • Остановка в случайном месте
  • Вступление
  • Кладем слой с эффектом в композицию
  • Ставим ключевой кадр всем выбранным свойствам
  • Пэрентим кучу слоёв к другой куче слоёв
  • Добавляем нуль, подрезанный под выбранные слои
  • Массовая смена тайминга композиций и выложенных прекомпов
  • Подрезка первого слоя под второй
  • Подрезка прекомпоза для AE младше CC
  • Expression Toolbox - своя библиотека выражений
  • iExpressions - более сотни выражений
  • Smart Baker - умный перевод выражений в кифрэймы
  • True Comp Duplicator - дублирует композицию со всеми вложенными прекомпами
  • Reposition Anchor Point - перемещаем сами поняли что
  • Masks to Layers - маски в слои
  • Ease and Wizz - сглаживания
  • Rift - грамотный сдвиг слоев, кифрэймов, маркеров(. )
  • pt-ImportSubtitles - импорт субтитров в текстовый слой
  • pt-Multiplane - создание трехмерной сцены из 2д слоев с глубиной
  • Mocha Import - грамотный импорт tracking data из mocha
  • Duik - ИК и куча фишечек для анимации
  • BG Renderer - рендерит пока вы работаете
  • Activate Disabled Expressions - активирует отключенные выражения
  • Distribute Layers - раскидывает слои по композиции
  • Align 3D - выравнивание слоев в 3D!
  • Lines Creator - соединяет слои линиями
  • AEmap + Locations - делает карту мира и работает с ней
  • ДЗ №2 - появление без кифрэймов
  • ДЗ №3 - золотое сечение
  • ДЗ №4 - зависимость от скорости
  • ДЗ №5 - Зависимость от расстояния
  • ДЗ №6 - одометры

AE_Expressions

AE_Expressions запись закреплена
Лариса Магданова

Пётр Челышев

Игорь Шипилов

На самом деле пользоваться действительно просто, автор показала на скрине исчерпывающую инструкцию. Может, картинка сложится, если показать так?

Игорь Шипилов

AE_Expressions

AE_Expressions запись закреплена
Олег Иванов

Решил потихоньку показывать, то над чем сейчас работаем. Мы создаём абсолютно уникальный проект, который позволит очень быстро создавать 3Д локацию любой точки Земли и показать на ней ваше путешествие.
Сходили в поход в горы, сплавились по крутой реке, проехали на горном веле, проделали большой путь, покажите это в красивом видео. Дабы люди оценили масштаб. Сделать это максимально просто с помощью нашего проекта для After Effects и Element3D.


Просмотрим анимацию – буква должна повернуться за 10 секунд на 360 градусов по часовой стрелке.

Вращаться буква будет вокруг Anchor Point=0.0, 0.0 якорной точки, установленной в левый нижний угол буквы по умолчанию. Перенесем, для удобства Anchor point в центр буквы 180.0, -160.0 и переместим букву в центр окна.

Обратим внимание: время измеряется в секундах, обороты в градусах!

1.2 Заставим букву вращаться с помощью метода Time.

Очистим Ключевые кадры параметре и сбросим его Rotation=(0+0,0)

  • На Timeline в текстовом слое раскроем свойство Rotation.
  • Нажимаем и держим клавишу alt и щелкаем по секундомеру слева от слова Rotation. Справа откроется поле ввода выражений. Можно того же достичь с помощью меню Animation/Remove Expression быстрые клавиши (alt+shift+=)
  • Справа в открывшемся поле ввода вводим выражение (метод) «time*36» без кавычек.

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

В нашем выражении мы использовали глобальный метод Time у которого нет аргументов:

time

Тип возвращения: число.

Представляет время композиции в секундах, в которых вычисляется выражение.

Не пугайтесь слова метод, в математике мы изучали фунции метод это нечто аналогичное. У методов тоже могут быть аргументы и методы возвращают какое-то значение. Далее мы будем употреблять термины: объекты, атрибуты и методы.

  • Метод time возвращает время в секундах.
  • Rotation (вращение) изменяется в градусах или радианах.
  • Соответственно за 1 секунду буква должна повернуться на 36 градусов, тогда за десять секунд буква повернется на 360 градусов. Обратите внимание – буква продолжит вращение до конца, а не остановится через 10 сек.

Я специально так подробно рассматриваю этот тривиальный пример, чтобы Вам легче было разбираться дальше (особенно пользователям без знаний математики).

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

2. Создание выражений с помощью Pick whip.

  • Создадим новый проект Adobe After Effects 1280*720 30 сек.
  • Создадим слой Solid 300*300 красного цвета.
  • Создадим слой Solid 300*300 синего цвета.
  • Перетащим квадраты так чтобы они оба отображались в окне.

2.1 Создадим анимацию вращения синего квадрата (так же, как и в предыдущем пункте).

  • На Timeline в слое Blue Solid 1 раскроем свойство Rotation.
  • Нажимаем и держим клавишу alt и щелкаем по секундомеру слева от слова Rotation. Справа откроется поле ввода выражений.
  • вводим выражение (метод) «time*36» без кавычек.

2.2 Создадим анимацию вращения красного квадрата с помощью Pick whip.

  • На Timeline в слое Red Solid 1 раскроем свойство Rotation.
  • Нажимаем и держим клавишу alt и щелкаем по секундомеру слева от слова Rotation. Теперь рассмотрим появившуюся под свойством Rotation строку Expression Rotation здесь четыре кнопки:
    • Enable Expression - вкл/выкл выражение.
    • Show Post-Expression Graph – вкл/выкл графическое отображение выражения в режиме отображения Graph Editir.
    • Expression Pick whip – создание выражений связыванием свойств.
    • Expression Language Menu – показать список методов для создания выражений разбитых по разделам.

    thisComp.layer("Blue Solid 1").transform.rotation

    Найдем эти методы в справочнике Атрибуты и методы Adobe After Effects.pdf

    thisComp

    Тип возвращения: композиция.

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

    layer(name)

    Тип возвращения: слой, свет или камера.

    Тип аргумента: name – это строка (в нашем случае "Blue Solid 1").

    Извлекает слой по имени. Имена согласуются по имени слоя или имени источника при отсутствии имени слоя. При наличии повторяющихся имен After Effects использует первое (самое верхнее) имя на панели «Таймлайн».

    rotation

    Тип возвращения: свойство.

    Возвращает значение поворота слоя в градусах. Для 3D-слоя выполняется возврат значения поворота по оси Z в градусах.

    transform.rotation – указывает на отслеживание изменения свойства Rotation.

    Для примера рассмотрим такое выражение:

    comp("comp1").layer("layer1").transform.position

    Это выражение указывает на отслеживание изменения свойства Position в слое "layer1” композиции "comp1".

    Далее мы остановимся на элементарных примерах составления выражений. Кроме этого наиболее популярные выражения можно скачать из интернета в готовом виде.

    3. Работа с переменными.

    3.1 Как использовать переменные.

    Давайте изменим выражение из предыдущего примера так (можнос копировать мое выражение и вставить в проект):

    tr=thisComp.layer("Blue Solid 1").transform.rotation;

    k=tr*2;

    Введена переменная tr которой присвоено значение выражения thisComp.layer("Blue Solid 1").transform.rotation

    Введена переменна k которой присвоено значение переменной tr*2

    После этих манипуляций красный квадрат будет вращаться в 2 раза быстрее синего. Можно было и так:

    thisComp.layer("Blue Solid 1").transform.rotation*2;

    Обратите внимание каждый отдельный метод должен закрываться «;»

    3.2 Работа с другими параметрами.

    Рассмотрим работу с параметром Scale (масштаб). Разница в количестве параметров у scale два аргумента. Масштаб можно изменять и по «X» и по «Y».

    Для синего квадрата введем зависимость масштаба от времени:

    temp = time*6;

    [temp, temp]

    Переменной temp присвоено значение time*6.

    Во второй строке [temp, temp] показывает, что обе координаты бут изменяться одинаково. Попробуйте

    [temp, temp*2]

    [temp*2, temp]

    3.3 Рассмотрим пример с параметром Opasity (прозрачность).

    Этот параметр завяжем на параметр Scale с помощью выражения с const=100:

    Разберемся:

    • 100 это константа – максимальное значение прозрачности.
    • transform.scale[0] - увеличивается от 0 до 100% прозрачность будет уменьшаться от 100 до 0

    Выражение можно временно выключить. Для этого нажмите на кнопку Enable Expression «=».

    Читайте также: