Выражения. Метод length(point1, point2) в After Effects

Метод length(point1, point2) в After Effects используется для вычисления расстояния между двумя точками в пространстве. Этот метод особенно полезен при создании анимаций, где необходимо учитывать расстояние между объектами, например, для автоматического изменения масштаба, прозрачности или других параметров в зависимости от близости объектов.

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

Метод length(point1, point2) можно использовать для вычисления расстояния между двумя слоями. Например, если у вас есть два слоя с позициями [x1, y1] и [x2, y2], вы можете вычислить расстояние между ними следующим образом:

layer1 = thisComp.layer(«Слой-фигура 1»).transform.position;
layer2 = thisComp.layer(«Слой-фигура 2»).transform.position;
distance = length(layer1, layer2).toFixed(0); // Получаем расстояние между слоями. toFixed(0) метод округляет до целого числа

Этот код вернет расстояние между двумя слоями, которое можно использовать для управления другими параметрами, такими как масштаб или прозрачность
—————

Вы можете использовать length(point1, point2) для создания эффекта, при котором объект увеличивается или уменьшается в зависимости от расстояния до другого объекта

point1 = thisComp.layer(«Слой-фигура 1»).position;
point2 = thisComp.layer(«Слой-фигура 2»).position;
distance = length(point1, point2);
scaleValue = distance/2; // Масштаб зависит от расстояния[scaleValue, scaleValue]; // Применяем масштаб по X и Y

cursor = thisComp.layer(«Слой-фигура 1»).position;
icon = thisComp.layer(«Слой-фигура 2»).position;
distance = length(cursor, icon);
scaleValue = linear(distance, 0, 500, [300, 300], [100, 100]); // Используется метод linear(t, tMin, tMax, value1, value2);

Здесь, если расстояние между курсором и иконкой меньше 500 пикселей, иконка будет увеличиваться, а если больше — уменьшаться
——————————-

Если у вас есть несколько объектов, которые должны реагировать на приближение курсора, вы можете использовать length(point1, point2) для каждого из них. Например:

cursor = thisComp.layer(«Пусто 1»).transform.position;
icon = thisComp.layer(«Слой-фигура 2»).transform.position;
distance = length(cursor, icon);
scaleValue = linear(distance, 0, 300, [300, 300], [100,100]);[scaleValue[0], scaleValue[1]];

Этот код можно применить к нескольким иконкам, чтобы они одновременно изменяли масштаб при приближении курсора к слою указанному в выражении
————————

Масштабировать слой в зависимости от расстояния до другого слоя:

point1 = thisComp.layer(«Слой-фигура 1»).position;
point2 = thisComp.layer(«Слой-фигура 2»).position;
distance = length(point1, point2);
scaleValue = distance/2; // Масштаб зависит от расстояния[scaleValue, scaleValue]; // Применяем масштаб по X и Y

Этот код будет уменьшать масштаб слоя по мере приближения другого слоя
——————————————

Метод length(point1, point2) также можно использовать для управления эффектами, такими как размытие или свечение. Например, чтобы создать эффект размытия, который усиливается при приближении одного объекта к другому

layer1 = thisComp.layer(«Слой-фигура 1»).position;
layer2 = thisComp.layer(«Слой-фигура 2»).position;
distance = length(layer1, layer2);
blurAmount = linear(distance, 0, 500, 100, 0);

Здесь размытие будет уменьшаться по мере увеличения расстояния между слоями
————————————

Метод length(point1, point2) можно использовать для создания интерактивных анимаций, где объекты реагируют на движение других объектов. Например, чтобы создать анимацию, где объект «убегает» от курсора:

cursor = thisComp.layer(«Курсор»).position;
object = thisComp.layer(«Объект»).position;
distance = length(cursor, object);
if (distance < 200) {
newPosition = object + [-500,-100];
} else {
newPosition = object;
}