Выражения. Свойство velocity After Effects
Свойство velocity в выражениях After Effects используется для получения скорости изменения значения свойства — например, позиции, масштаба, поворота и т.д. Это особенно полезно, когда ты хочешь реагировать на то, насколько быстро или резко что-то двигается, масштабируется и т.п.
Список эффектов и не только After Effects
Выражения After Effects список
speed — возвращает: одно число. Показывает: модуль скорости, то есть «насколько быстро» меняется значение, без учёта направления
velocity — вектор. Возвращает: массив значений, например [x, y] или [x, y, z]. Показывает: скорость и направление изменения свойства
//Выражение для Положения слоя
x = transform.position[0] + time * 100;
y = transform.position[1] + time * 50;
[x, y];
//Выражение для свойства Исходный текст пустого текстового слоя
x = thisComp.layer(«Слой-фигура 1»).transform.position.velocity;[Math.round(x[0]), Math.round(x[1])];
—————
Вы можете использовать velocity для добавления реакции объекта на его собственное движение, например, имитации дрожания.
// Выражение для свойства Scale Слой-фигура 1
Scale = thisComp.layer(«Слой-фигура 1»).transform.position.velocity; // Получаем скорость позиции слоя
Wiggle = Math.abs(Scale[0]) + Math.abs(Scale[1]); // Суммируем модули скоростей по X и Y
wiggle(5, Wiggle / 10); // Дрожание масштаба пропорционально скорости
//Для свойства Исходный текст пустого текстового слоя
x = transform.scale.velocity[0];
y = transform.scale.velocity[1];[Math.round(x), Math.round(y)];
//Для свойства Масштаб пустого текстового слоя
Scale = thisComp.layer(«Слой-фигура 1»).transform.position.velocity; // Получаем скорость позиции слоя
Wiggle = Math.abs(Scale[0]) + Math.abs(Scale[1]); // Суммируем модули скоростей по X и Y
wiggle(5, Wiggle / 10);
Когда слой движется быстрее, масштаб начинает дрожать сильнее, создавая эффект реакции на движение.
———————
Уменьшение прозрачности слоя при увеличении скорости.
//Выражение для свойства Исходный текст пустого текстового слоя
x = thisComp.layer(«Слой-фигура 1»).transform.position.velocity[0];
y = thisComp.layer(«Слой-фигура 1»).transform.position.velocity[1];[Math.round(x), Math.round(y)];
// Выражение для свойства Opacity
vel = thisComp.layer(«Слой-фигура 1»).transform.position.velocity; // Получаем скорость позиции
maxVel = 500; // Максимальная скорость для нормализации
opacity = linear(Math.abs(vel[0]) + Math.abs(vel[1]), 0, maxVel, 100, 20); // Прозрачность от 100 до 20
opacity
Когда слой движется быстрее, его прозрачность уменьшается, создавая эффект «исчезновения» при высоких скоростях.
———————-
velocity можно использовать для управления длиной или интенсивностью эффекта следа Echo.
Управление параметром Echo в зависимости от скорости.
// Выражение для свойства Echo Time в эффекте Echo
vel = thisComp.layer(«Слой-фигура 1»).transform.position.velocity; // Скорость слоя
maxVel = 300; // Максимальная скорость
echoTime = linear(Math.abs(vel[0]) + Math.abs(vel[1]), 0, maxVel, 0, -1); // Эхо от 0 до -1
При увеличении скорости движения следа становится длиннее, усиливая эффект.
—————————
Для позиции velocity возвращает пиксели в секунду, для вращения — градусы в секунду, для масштаба — проценты в секунду.
Нормализация: Используйте функции linear() или ease() для преобразования значений скорости в нужный диапазон.
Math.abs(): Часто используется для получения абсолютной скорости, чтобы избежать отрицательных значений.
velocity работает только с анимированными свойствами (например, с ключевыми кадрами или выражениями). Если свойство статично, скорость будет равна 0.