Найти в Дзене

Выражения в After Effects

Выражение — это фрагмент кода JavaScript, как правило, не очень большой, но могут быть и исключения. Его можно подключить к анимированным свойствам модификаторов в проектах AE. Не смотря на то, что язык выражений основан на стандартном языке программирования JavaScript, для начала работы с выражениями его доскональное знание вам не потребуется. Для того, чтобы начать работу с выражениями, нужно просто выбрать модификатор и кликнуть с зажатым Alt/Option по часикам слева от него. Код самого выражения нужно вводить вот сюда: Индикатором того, что выражение активировано и работает, служит красный цвет на работающем модификаторе, а так же значок «=», включив/выключив который можно также включить/выключить выражение соответственно. Ниже мы приведем примеры, чтобы вы могли разобраться насколько это мощный инструмент: 1. Wiggle - одно из самых распространенных выражений After Effects. Данное выражение позволяет создавать хаотичное изменение выбранного модификатора слоя. Для того чтобы ег

Выражение — это фрагмент кода JavaScript, как правило, не очень большой, но могут быть и исключения. Его можно подключить к анимированным свойствам модификаторов в проектах AE. Не смотря на то, что язык выражений основан на стандартном языке программирования JavaScript, для начала работы с выражениями его доскональное знание вам не потребуется.

Для того, чтобы начать работу с выражениями, нужно просто выбрать модификатор и кликнуть с зажатым Alt/Option по часикам слева от него.

-2

Код самого выражения нужно вводить вот сюда:

-3

Индикатором того, что выражение активировано и работает, служит красный цвет на работающем модификаторе, а так же значок «=», включив/выключив который можно также включить/выключить выражение соответственно.

-4

Ниже мы приведем примеры, чтобы вы могли разобраться насколько это мощный инструмент:

1. Wiggle - одно из самых распространенных выражений After Effects. Данное выражение позволяет создавать хаотичное изменение выбранного модификатора слоя.

Для того чтобы его применить, нужно выбрать модификатор (например position), перейти в режим для редактирования выражений и написать wiggle(2,40), где первое значение — это количество колебаний в секунду, а второе — величина покачивания.

Слой будет «плавать» 2 раза в секунду, не больше чем на 40 пикселей в любом направлении.

Пример использования выражения:

-5

2. Затухание колебаний при движении - это выражение создано для того, чтобы сделать анимацию еще «живее», благодаря добавлению в движение элемента противохода. Опять же, оно применимо не только к модификатору position

amp = .02;

freq = 2.0;

decay = 6.0;

n = 0;

time_max = 4;

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 && t < time_max){

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 - амплитуда отскока, freq - частота, decay - затухание

Пример использования выражения:

-6

3. Реалистичный отскок объекта. Это выражение стоит применять к модификатору position. Его основная роль – это создание более правдоподобного отскока от поверхности, с которой соприкоснулся объект после падения. Выглядит код вот так:

e = .7;

g = 5000;

nMax = 9;

n = 0;

if (numKeys > 0){

n = nearestKey(time).index

if (key(n).time > time) n--;

}

if (n > 0){

t = time - key(n).time;

v = -velocityAtTime(key(n).time - .001)*e;

vl = length(v);

if (value instanceof Array){

vu = (vl > 0) ? normalize(v) : [0,0,0];

}else{

vu = (v < 0) ? -1 : 1;

}

tCur = 0;

segDur = 2*vl/g;

tNext = segDur;

nb = 1; // number of bounces

while (tNext < t && nb <= nMax){

vl *= e;

segDur *= e;

tCur = tNext

tNext += segDur;

nb++

}

if(nb <= nMax){

delta = t - tCur;

value + vu*delta*(vl - g*delta/2);

}else{

value

}

}else

Value

Ключевыми строками являются:

e = эластичность или «пружинистость». Чем выше данный параметр, тем сильнее будет отскок

g = отвечает за гравитацию. Чем этот параметр ниже, тем медленнее идет сам отскок (здесь все так же, как с реальной гравитацией - чем она выше, тем сильнее притягивается объект к поверхности)

nMax = количество отскоков

Пример использования выражения:

-7

4. Выражение Time в After Effects

time*10

Выражение Time идеально подходит для объектов с бесконечным движением. Например, если вы хотите, чтобы объект вращался бесконечно, вы можете просто добавить слово time в качестве параметра вращения, и ваш объект будет вращаться на 1 градус на длине всей композиции. Параметр времени также работает с основными математическими уравнениями. Поэтому если вы хотите, чтобы слой вращался в 30 раз быстрее, вы можете просто написать выражение time*30. Установка величины задержки в кадрах var delay = 5; // Смещение положения слоя во времени на основе задержки parent.fromComp( toComp( anchorPoint, time - framesToTime( delay ) ) );

5. Плашка, масштабируемая за текстом

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

Для начала создайте шейп и слоем над ним напишите текст, далее на параметр size у шейпа добавьте это выражение:

margin_width = 20;

margin_height = 20;

text_width = thisComp.layer(index-1).sourceRectAtTime().width;

text_height = thisComp.layer(index-1).sourceRectAtTime().height;

box_width = text_width + margin_width*2;

box_height = text_height + margin_height*2;

[box_width, box_height]

-8

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

x = value[0]; y = content("Rectangle 1").content("Rectangle Path 1").size[1]/2; [x,y]

6. Постоянный масштаб у связанных объектов

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

Что если вы не хотите давать привязанным слоям такую возможность? Применяйте это выражение к scale слоя/слоев, у которого должен быть постоянный масштаб (к слоям, которые вы связали parental whip)

s = [];

ps = parent.transform.scale.value;

for (i = 0; i < ps.length; i++){

s[i] = value[i]*100/ps[i];

}

s

-9

Пример использования выражения:

-10

На этом все, теперь в вашем багаже знаний на один полезный навык больше! :)

Подписывайтесь на наш основной канал в Телеграм или группу ВКонтакте и следите за нашими обновлениями!

Там вы можете:

  • забрать бесплатные проекты для After Effects
  • скачать наши статьи в формате PDF
  • получить порцию вдохновения
  • развиваться в сообществе сильных motion-дизайнеров

#motiondesign #birchplus #онлайн обучение #aftereffects #профессия дизайнер #моушндизайн #бесплатное обучение