Выражения. Метод velocityAtTime(t) After Effects

 

 

Выражение velocityAtTime(t) в Adobe After Effects используется для получения значения скорости (velocity) свойства слоя в указанный момент времени t (в секундах). Это полезно для создания динамических анимаций, где поведение одного свойства зависит от скорости изменения другого. Скорость в данном контексте — это производная свойства по времени, которая для пространственных свойств (например, Position) возвращает вектор касательной к траектории движения в виде массива [x, y]; скорость по оси X и Y

Список эффектов и не только After Effects
Выражения After Effects список

Описание velocityAtTime(t) thisComp.layer(«Слой-фигура 1»).transform.position.velocityAtTime(time);
Назначение: Возвращает скорость изменения свойства в указанный момент времени t.

Тип возвращаемого значения: Число (для одномерных свойств, таких как Opacity) или массив (для многомерных свойств, таких как Position)

—————————

//Выражение для пустого текстового слоя Свойства Исходный текст. Показывает скорость изменения Положения
Слой-фигура 1
Value = thisComp.layer(«Слой-фигура 1»).transform.position.velocityAtTime(time);[Math.round(Value[0]), Math.round(Value[1])];

————————-

//Выражение для пустого текстового слоя Свойства Исходный текст. Показывает скорость изменения Оpacity слоя
Слой-фигура 1
thisComp.layer(«Слой-фигура 1»).transform.opacity.velocityAtTime(time).toFixed();

——————-

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

// Применяется к свойству Rotation
v = thisComp.layer(«Слой-фигура 1»).transform.position.velocityAtTime(time)[0]; // Скорость по оси X в текущий момент
Math.round((value + time * 10) * v); // Угол поворота зависит от скорости

Объект вращается пропорционально своей горизонтальной скорости.

————

//Таймер скорости. Выражение для пустого текстового слоя. Свойство Исходный текст
Math.round(thisComp.layer(«Слой-фигура 1″).transform.position.velocityAtTime(time)[0]) + » — Скорость»;

//Таймер поворота. Выражение для пустого текстового слоя. Свойство Исходный текст
Math.abs(thisComp.layer(«Слой-фигура 1″).rotation) + » — Поворот»;

// Применяется к свойству Rotation
v = thisComp.layer(«Слой-фигура 1»).transform.position.velocityAtTime(time)[0]; // Скорость по оси X в текущий момент
(value + time * 10) * v; // Угол поворота зависит от скорости

Объект вращается пропорционально своей горизонтальной скорости.

————————————

Можно использовать скорость слоя для управления параметрами эффекта, например, для создания псевдо-размытия движения (Направленное размытие).

p = thisComp.layer(‘Слой-фигура 1’).transform.position; // Позиция слоя
Speed = length(p.velocityAtTime(time)); // Полная скорость (модуль вектора)
maxBlur = 150; // Максимальное значение размытия
if(Speed > maxBlur) {
maxBlur * 2;
}else{
0 // Ограничение размытия
}

Эффект размытия усиливается, когда слой движется быстрее.

——————————

//Вращение в сторону движения. Для свойства Поворот Слоя фигуры 1

v = thisComp.layer(«Слой-фигура 1»).transform.position.velocityAtTime(time);
Math.round(radiansToDegrees(Math.atan2(v[1], v[0])));

Слой будет поворачиваться по направлению движения

—————————

Пространственные свойства: Для свойства Position velocityAtTime(t) возвращает массив (например, [vx, vy] в 2D или [vx, vy, vz] в 3D), представляющий вектор скорости. Используйте индексы ([0], [1]) для доступа к компонентам.

velocityAtTime(t) работает только с анимированными свойствами. Если свойство статично (нет ключевых кадров), скорость будет равна нулю.

Сложные выражения с velocityAtTime(t) могут замедлить рендеринг, особенно если они применяются к множеству слоев или кадров.