Выражения. Метод linear(t, tMin, tMax, value1, value2) в After Effects

Метод linear(t, tMin, tMax, value1, value2) в After Effects используется для линейной интерполяции значений между двумя диапазонами. Он позволяет создавать плавные анимации, изменяя значение свойства от value1 до value2 в зависимости от времени или другого параметра.

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

Плавное изменение прозрачности слоя от 20% до 80% за 10 секунд.

linear(time, 0, 10, 20, 80);

Здесь time — текущее время в секундах, 0 и 10 — начальное и конечное время, 20 и 80 — начальное и конечное значения прозрачности

Создание обратного отсчета от 10 до 0 за 10 секунды

n = linear(time, 0, 10, 10, 0);
Math.floor(n); //Math.floor(n) используется для округления значения до ближайшего меньшего целого числа, чтобы отображались только целые значения

Для создания анимации текста, где число увеличивается от 0 до 100 за 5 секунд:

t = linear(time, 0, 5, 0, 100); //Этот код создает эффект счетчика
Math.floor(t)

Этот код можно применить к свойству Position, чтобы создать плавное движение
Перемещение слоя по оси X от 0 до 500 пикселей за 10 секунды.

linear(time, 0, 10, 0, 500); //Разделить положение на Х и У. Применить к положению Х

x = transform.position[0] + linear(time,0,10,0,500); // Положение для оси Х
y = transform.position[1];[x,y];

Для перемещения слоя по оси X от 0 до 900 пикселей за 3 секунды:

x = linear(time, 0, 3, 0, 900); //Этот код создаст плавное движение слоя по горизонтали[x, value[1]]

x — новое значение положения по оси X.
value[1] — сохраняет текущее значение по оси Y.

x = transform.position[0] * 0 + linear(time,0,10,0,1000); // Положение для оси Х. Положение объекта в нулевом кадре по оси Х равно 0 пикселей
y = transform.position[1];[x,y];

Линейное изменение позиции слоя по двум осям.

x = linear(time, 0, 3, 0, 1000); //Этот код изменяет позицию слоя по осям X и Y одновременно
y = linear(time, 0, 3, 0, 300);[x, y];

Линейное изменение масштаба по двум осям.

scaleValue = linear(time, 0, 3, 50, 200); //Этот код изменяет масштаб слоя по обеим осям X и Y одновременно[scaleValue, scaleValue]

Для создания циклической анимации, например, пульсации масштаба:

t = time % 2; // Цикл каждые 2 секунды
scaleValue = linear(t, 0, 1, 50, 150);[scaleValue, scaleValue]

Масштаб будет пульсировать между 50% и 150% каждые 2 секунды

Вращение слоя от 0 до 360 градусов за 50 кадров.

currentFrame = timeToFrames(time);
linear(currentFrame, 0, 50, 0, 360);

Здесь текущий кадр используется для управления вращением слоя

Для изменения положения слоя в 3D-пространстве:

x = linear(time, 0, 3, 0, 500);
y = linear(time, 0, 3, 0, 300);
z = linear(time, 0, 3, 0, 200);[x, y, z];

Слой будет перемещаться по всем трем осям за 3 секунды

Допустим, вы хотите, чтобы масштаб слоя изменялся в зависимости от его положения по оси X.
Примените выражение к параметру Scale:

scaleValue = linear(position[0], 0, 500, 30, 200);[scaleValue, scaleValue];

position[0] — текущее положение слоя по оси X.
0 — минимальное положение (tMin).
500 — максимальное положение (tMax).
30 — минимальный масштаб (value1).
200 — максимальный масштаб (value2).
temp = effect(«Элемент управления «Ползунок»»)(«Ползунок»);[temp, temp]

temp = thisComp.layer(«Корректирующий слой 1»).effect(«Элемент управления «Ползунок»»)(«Ползунок»);

Использование слайдера для управления масштабом слоя.
Здесь значение слайдера (от 0 до 100) используется для изменения масштаба слоя по оси Х от 50% до 200%

temp = thisComp.layer(«Корректирующий слой 1»).effect(«Элемент управления «Ползунок»»)(«Ползунок»);
x = linear(temp, 0, 100, 50, 200);
y = value[1];[x, y];

Масштаб для осей Х и У

temp = thisComp.layer(«Корректирующий слой 1»).effect(«Элемент управления «Ползунок»»)(«Ползунок»);
x = linear(temp, 0, 100, 50, 200);
y = linear(temp, 0, 100, 50, 200);[x, y];

Метод linear можно использовать для связывания свойств слоев. Например, если вы хотите, чтобы вращение одного слоя влияло на прозрачность другого:

Rotation = thisComp.layer(«Корректирующий слой 1»).rotation; //Этот код связывает вращение одного слоя с прозрачностью другого
linear(Rotation, 0, 360, 0, 100);