Объединение выражений в After Effects

Автор: Никита Шилов Дата . Написано Учебные материалы - Adobe After Effect

объединение выражение в АЕ

«Как объединить два выражения в одно? Например, пресловутый баунс с виглем?» – вот такой вопрос пришел недавно в личку. Решение очень простое, надо все лишь «подмешать» значение wiggle (кто вдруг не знает это экспрешн колебаний значений) к выражению bounce (кто не помнит это экспрешн затухания с отскоком).

Например, мы хотим получить такую анимацию:

Вспомним стандартное выражение отскока:

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 = 1;

freq = 2;

decay = 8;

M=Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);

value + v*amp*M;

}else{

value;

}

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

value +v*amp*M;

Вместо value пропишем вигглю: wiggle(1,20). Конечно же амплитуду, частоту и итерации можно вывести на слайдеры или записать в переменные, для удобства. Но смысл в том, что мы подмешиваем виггл, вместо стандартного параметра в баунс и получаем:

wiggle(1,20)+ v*amp*M;

Теперь вставив это выражение в параметр позиции с ключевыми кадрами, вы получите баунс + рандомные колебания.

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

Про объединение time + wiggle, можно было промолчать – здесь работает простейшая арифметика:

Например, при использовании time выражения (например для анимации параметра Evolution: time*50 или для позиции когда необходимо проанимировать бесконечный поток значения offset для массива: [time*50,value[1]], но с добавлением рандомных колебаний). В такое выражение достаточно буквально добавить виггл:

time*50+wiggle(1,20)

Или для offset движения по x-координате:

w=wiggle(1,20)+time*50;

[w[0],value[1]]


Смотрите также:
Похожие статьи:
Не пропустите:


У Вас недостаточно прав для добавления комментариев.
Регистрируемся,а потом можно будет писать.

Популярное в АЕ: