Выражения. Метод 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) могут замедлить рендеринг, особенно если они применяются к множеству слоев или кадров.