Выражения. Метод sub(vec1, vec2) в After Effects
Функция sub(vec1, vec2) в After Effects используется для вычитания одного вектора из другого. Это может быть полезно, например, для вычисления разницы между позициями двух слоев или для создания анимаций, основанных на векторных операциях. Функция sub(vec1, vec2) она может быть использована для создания сложных анимаций и эффектов, основанных на взаимодействии между слоями.
Список эффектов и не только After Effects
Выражения After Effects список
Справочник по JavaScript
1. Вычисление разницы между позициями двух слоев
Допустим, у вас есть два слоя, и вы хотите узнать разницу между их позициями. Вы можете использовать sub(vec1, vec2) для этого.
// Предположим, у вас есть два слоя: «Слой-фигура 1» и «Слой-фигура 2»
vec1 = thisComp.layer(«Слой-фигура 1»).transform.position;
vec2 = thisComp.layer(«Слой-фигура 2»).transform.position;
sub(vec1,vec2); // Вычисляем разницу между позициями
x = thisComp.layer(«Слой-фигура 1»).transform.position;
y = thisComp.layer(«Слой-фигура 2»).transform.position;
difference = sub(x, y);
IntegerValueDifference = [Math.round(difference[0]), Math.round(difference[1])];
Math.abs()
Math.round()
Math.ceil()
Вы можете использовать sub(vec1, vec2) для создания эффекта, когда один слой отталкивается от другого слоя.
// Предположим, у вас есть два слоя: «Слой-фигура 1» и «Слой-фигура 2»
vec1 = thisComp.layer(«Слой-фигура 1»).position;
vec2 = thisComp.layer(«Слой-фигура 2»).position;
// Вычисляем разницу между позициями
difference = sub(vec1, vec2);
IntegerValueDifference = [Math.round(difference[0]), Math.round(difference[1])];//Целое значени
// Применяем эффект притяжения
attractionStrength = 0.5; // Сила отталкивания
newPosition = vec1 — IntegerValueDifference * attractionStrength;
Аналогично, вы можете создать эффект притяжения, используя sub(vec1, vec2).
// Предположим, у вас есть два слоя: «Слой-фигура 1» и «Слой-фигура 2»
vec1 = thisComp.layer(«Слой-фигура 1»).position;
vec2 = thisComp.layer(«Слой-фигура 2»).position;
// Вычисляем разницу между позициями
difference = sub(vec1, vec2);
// Применяем эффект притяжения
repulsionStrength = 0.5; // Сила притяжения
newPosition = vec1 + difference * repulsionStrength;
pos = transform.position;//Перемещение в зависимости от поворота управляющего слоя
angle = thisComp.layer(«Controller»).rotation;
offset = [random(angle/10) * 300, 0];
sub(pos, offset);