Эксперименты с выражениями в After Effects (+ проекты) | ZZ Guru

Эксперименты с выражениями в After Effects (+ проекты)

1. Размещение по сетке

Эксперименты с выражениями в After Effects (+ проекты), изображение №1

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

Как сделать?

Создайте первый объект и разместите его, где угодно. Как главный объект, он является основой, точкой отсчета для размещения остальных. Имя первого объекта должно содержать пробел и цифру 1, например «Rectangle 1». Затем продублируйте его и примените к параметру Position следующее выражение:

Выражение:

objNum = 5; //количество объектов в строке
pos = thisComp.layer(“rectangle 1”).transform.position; //позиция основного
num = parseInt(name.split(” “)[1]) – 1;
repeatX = num % objNum;
repeatY = Math.floor(num / objNum);
gapX = 200; //pixel
gapY = 200; //pixel
x = gapX * repeatX;
y = gapY * repeatY;
pos + [x, y]

Пример работы модицифированной версии такого выражения:

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

Скачать проект.aep

2. Круговое размещение

Эксперименты с выражениями в After Effects (+ проекты), изображение №2

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

Как сделать?

Создайте центральный объект и разместите его где угодно. Как центральная точка — он основа для остальных. Я рекомендую использовать нулевой объект. Затем создайте первый объект. Его название должно включать пробел и цифру 1, например, «Circle 1». Затем примените к параметру Position выражение:

Выражение:

center = thisComp.layer(“center”).transform.position; //центр размещения
radius = 300;
num = parseInt(name.split(” “)[1]) – 1;
angle = 45; //degree
radian = degreesToRadians(angle * num);
x = Math.sin(radian) * radius;
y = -Math.cos(radian) * radius;
center + [x, y]

Примеры работы модифицированных версий выражения:

Скачать проект .aep

3. Продвинутая задержка

Я думаю, что выражение «valueAtTime()» является одним из самых часто используемых в After Effects. Оно весьма полезно для сдвига времени, анимации «хвостов» и т.п.

Я использую его почти в каждом проекте и уверен, что многие аниматоры и моушеры также часто его используют.

Сегодня я решил поделиться с вами выражением для продвинутой задержки/сдвига, как на гифке ниже. Если вы хотите анимацию, как на красном варианте, то смотрите код и/или загрузите .aep проект.

Думаю что многие аниматоры используют «valueAtTime()» для сдвига времени так, как продемонстрировано ниже. Я использую свойство Position в качестве примера.

num = thisComp.layer(“leader”).index – index; // Число должно быть 1, 2, 3… n.

offset = framesToTime(2) * num; // Вы можете настраивать базовую величину сдвига чтобы изменить часть “framesToTime(2)”.

thisComp.layer(“leader”).valueAtTime(time – offset);

И ниже мой код (проект с ним вы можете скачать по ссылке выше)

Продвинутая задержка

decayRate = 0.95; // Я рекомендую 0.95 по умолчанию для затухания. И я всегда использую значения от 0.9 до 0.98.

basicOffset = framesToTime(4); // Базовая величина смещения времени (в кадрах)

num = thisComp.layer(“leader”).index – index; // Число должно быть 1, 2, 3… n.

offset = basicOffset * num * Math.pow(decayRate, num – 1);

thisComp.layer(“leader”).transform.position.valueAtTime(time – offset);

Немного измененная версия:

decayRate = 0.95;

basicOffset = framesToTime(4);

num = parseInt(name.match(/[0-9]+$/)); //В этом случае используется последнее число в названии слоя

offset = basicOffset * num * Math.pow(decayRate, num – 1);

thisComp.layer(“leader”).transform.position.valueAtTime(time – offset);

Скачать проект .aep

4. Всенаправленный маятник

Давайте снова рассмотрим простую вещь, на этот раз это Маятник. Я думаю, что маятник — это одна из простейших, но наиболее полезных штук.
С помощью этого кода вы сможете создать всенаправленное движение маятника. Хотите анимацию, как на гифке — смотрите код или качайте проект.

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

freq = 1;
amp = 50;
value + [0, amp * Math.sin(freq * time * 2 * Math.PI)];

И ниже мой вариант.

Всенаправленный маятник

freq = 1;

amp = 50;

waveAngle = 40; //Настройте угол маятника при помощи этого значения.

wave = amp * Math.sin(freq * time * 2 * Math.PI);

value + [-wave * Math.sin(degreesToRadians(waveAngle)), wave * Math.cos(degreesToRadians(waveAngle))]

В следующем примере выражение вычисляет угол маятника, вертикального по отношению к направлению движения

Продвинутый вариант

freq = 4;

amp = 20;

waveAngle = radiansToDegrees(Math.atan2(velocity[1], velocity[0])); // Вычисление угла с учётом ускорения свойства Position

wave = amp * Math.sin(freq * time * 2 * Math.PI);

value + [-wave * Math.sin(degreesToRadians(waveAngle)), wave * Math.cos(degreesToRadians(waveAngle))];

Скачать .aep проект

Зацикливание при помощи выражений

Эксперименты с выражениями в After Effects (+ проекты), изображение №3

Вы наверняка используете простое выражение «loopOut()» для зацикливания.
И я думаю однажды вы хотели зациклить только определённые ключи, как на показано на картинке выше. Это легко сделать при помощи выражения:

loopOut(“cycle”, 2);

Быстрое объяснение:

loopOut(type=”cycle”, numKeyframes=0);

У выражения loopOut() есть 2 аргумента — тип зацикливания и количество ключей. Например, выражение «loopOut(‘cycle’, 1) зациклит сегмент между последним и предпоследним ключом. Смотрите анимированную подсказку ниже:

Источник: ru_videosmile-expexp

Космическая ретушь
0 комментарий

Похожие статьи

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии