Выражение затухающих колебаний after effects

Обновлено: 07.07.2024

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

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

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

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

  • Часть 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.

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

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

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

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

1) Итак, первое из них - это loopOut(). Простенькое выражение для зацикливания анимации. Допустим, у нас есть бабочка, собранная из трех частей: левое крыло, правое и тело.

5 простых выражений для After Effects

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

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

5 простых выражений для After Effects

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

5 простых выражений для After Effects

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

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

5 простых выражений для After Effects

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

5 простых выражений для After Effects

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

5 простых выражений для After Effects

В итоге получим: 80*Math.sin(time*15). Можно, конечно, немного увеличить частоту, но это уже на Ваше усмотрение.

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

5 простых выражений для After Effects

Движение ожидаемо смотрится линейно и неправдоподобно. Если мы хотим сохранить направление движения, но при этом добавить немного органичности, то нам не обойтись без wiggle. Итак, делаем Alt+клик на значке с секундомером слева от параметра Position и в текстовой области вбиваем wiggle(3,400). Смотрим и видим, что полёт бабочки стал более реалистичным. Что же означает написанное выражение wiggle(3,400). А означает оно то, что три раза в секунду с амплитудой в 400 пикселей в любом направлении будут происходить случайные колебания. Самое интересное это то, что wiggle можно применить практически к любому параметру в AE.

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

5 простых выражений для After Effects

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

5 простых выражений для After Effects

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

5 простых выражений для After Effects

Теперь Вы можете с легкостью анимировать значение параметра Slider и таким же образом будет менятся амплитуда.

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

5 простых выражений для After Effects

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

5 простых выражений для After Effects

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


Золотое правило: "Чем анимация "натуральней", тем она лучше выглядит в целом." Добится этой "натуральности" (то есть создать условия, для имитации законов физики - отскоков, инцерции и пр.), можно разными путями. Но создавать все это с помощью ключей очень утомительно. В этом нам помогут выражения, и в данной статье рассмотрим выражения "bounce" типа.

Inertial Bounce.

Очень распространенный эффект "отскока", который можно записать в виде выражения:

v = velocityAtTime(key(n).time - thisComp.frameDuration/10);

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

Элемент к которому необходимо привязать данный экспрешн,переводим в 3д слой. Затем перемещаем его anchor point в то место, где будет его "центр тяжести", то есть откуда будет идти вращение. В моем случае это самый верх слоя (текст). Также создаем ключи вращения (в моем случае X rotation от 90 до 0) и в этот X rotation дописываем выражение Inertial Bounce. Также можете создать свет (Light) в композиции для еще более натурального вида анимации.


Decay Bounce.

Еще один вид отскока, на этот раз "от земли". Со следующим выражением:

veloc = thisComp.layer("Control Layer").effect("velo control")("Slider");

amplitude = thisComp.layer("Control Layer").effect("amplitude control")("Slider");

decay = thisComp.layer("Control Layer").effect("decay control")("Slider");

Проблема в том, чтобы использовать данное выражение необходимо создать дополнительный Null Object (или solid слой), назвать его как "Control Layer". Затем применить к ниму 3 фильтра Slider control, и назвать каждый как "velo control", "amplitude control", "decay control". Поставить у них значения -200,-200 и 4, соответственно. Кстати эти значения регулируют скорость (velo), амплитуду (amp) и затухание (decay) отскока. Затем на объект к которому необходимо сделать данный отскок, применяем выражение на параметр Position.


Better Bounce.

Очень простое выражение, которое можно записать в виде:

freq = effect("bounce - frequency")("Slider"); //oscillations per second

amplitude = effect("bounce - amplitude")("Slider");

Это выражение можно добавить к любому из параметру transform, главное аккуратнее подбирайте частоту отскока (freq) так как оно основано на fps проекта.

Баскетбольный мяч.

Еще одно популярное выражение имитирующее отскок баскетбольного мяча. Выражение к позиции следующее:

Vy0 = 500; //initial y velocity (pixels/second)

Vx0 = 100; // initial x velocity (pixels/second)

g = 2500; // gravity (pixels/second/second)

e = .85; //elasticity

b = floor - position[1];

T = Vy0/g + Math.sqrt(2*h/g);

if ((time-inPoint) < T)

y = Vy0*(time-inPoint) - g*(time-inPoint)*(time-inPoint)/2 + b;

if ((time-inPoint) < T)

t = (time-inPoint) - t;

>else if (T - t < thisComp.frameDuration)

[position[0] + Vx0*(time-inPoint), floor - y]

Единственное предупреждение - не ставить начальное значении объекта отскока ниже окна композиции.

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