Выражения. Метод fromComp(point, t = time) в After Effects

 

 

Метод fromComp(point, t = time) используется для преобразования координат из пространства композиции (composition space) в локальное пространство слоя (layer space). Это полезно для работы с позициями, точками и эффектами в 3D- или 2D-пространстве, когда нужно синхронизировать элементы между слоями, независимо от их трансформаций (масштаб, поворот, позиция и т.д.)

 

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

 

 

fromComp(point, t = time);
fromComp(thisLayer.transform.position, time);

point — Обязательный параметр. Это массив координат в формате [x, y] (для 2D) или [x, y, z] (для 3D), представляющий точку в пространстве композиции.
t — Необязательный параметр. Время (в секундах), на которое рассчитывается преобразование. По умолчанию равно time (текущее время композиции). Полезно для анимации или расчёта в прошлом или будущем.

Метод применяется к объекту слоя, например: thisLayer.fromComp(point) или layer(«Name»).fromComp(point)

Пространство композиции (comp space): Координаты [0, 0] — верхний левый угол всей композиции, независимо от слоёв.
Пространство слоя (layer space): Координаты относительно самого слоя, с учётом его трансформаций (позиция, масштаб, поворот, якорь). [0, 0] — обычно Опорная точка слоя.

fromComp «переводит» точку из глобального (композиционного) пространства в локальное для конкретного слоя. Это обратная операция к методу toComp(point, t = time), который преобразует из layer space в comp space.

fromComp нужен, когда точка в координатах композиции должна быть использована для расчётов или эффектов внутри координат слоя.

В простых случаях можно обойтись без него, но в задачах со слоями, эффектами, Null, трекингом, 3D и курсором — это единственный рабочий инструмент.

———-
2

//Выражение для свойства Положение слоя Сплошная заливка Зеленый 3. Ковертирует координаты композиции в локальные координаты слоя

fromComp(thisComp.layer(«Сплошная заливка Зеленый 3»).transform.position);

//Выражение для свойства Положение слоя Сплошная заливка Красный 1. Ковертирует координаты композиции в локальные координаты слоя

fromComp(thisComp.layer(«Сплошная заливка Красный 1»).transform.position);

//Выражение для свойства Исходный текст Текстового слоя, чтобы видеть числовые результаты, которые возвращает выражение

thisComp.layer(«Сплошная заливка Зеленый 3»).fromComp(thisComp.layer(«Сплошная заливка Зеленый 3»).transform.position);

———-
1

Привязка слоя к позиции другого слоя через fromComp()

//Выражение для свойства Позиция слоя Сплошная заливка Зеленый 3
fromComp(thisComp.layer(«Сплошная заливка Красный 1»).transform.position);

//Выражение для свойства Положение по оси Х слоя Сплошная заливка Зеленый 3
Pos = fromComp(thisComp.layer(«Сплошная заливка Красный 1»).transform.position);
Pos[0];

Pos = thisLayer.transform.position[0] + fromComp(thisComp.layer(«Сплошная заливка Красный 1»).transform.position);
Pos[0];

transform.position + time * 100; //Анимация положения слоя Сплошная заливка Красный 1 по оси Х
——-
4

Привязка эффекта Линза к центру композиции

p = [thisComp.width/2, thisComp.height/2]; // центр композиции
fromComp(p); // переводим в систему слоя

Если слой сдвинется или повернётся — Линза всё равно будет оставаться в центре композиции. Без fromComp она «съедет».

transform.position + Math.sin(time) * 200; //Выражение для анимации Положения слоя Кот по оси Х

————
3

Выражение для свойства Направление эффекта Тень с помощью метода fromComp

Pos = fromComp(thisComp.layer(«Пусто 3»).transform.position);
Pos[0];

transform.position[0] + Math.sin(time) * 200; //Выражение для анимации свойства Положение Нуль слоя по оси X

Анимация свойства Непрозрачность эффекта Тень

Pos = fromComp(thisComp.layer(«Пусто 3»).transform.position);
Math.abs(Pos[1]) / 2;

transform.position[1] + Math.sin(time) * 200; //Выражение для анимации свойства Положение Нуль слоя по оси Y

———
6

Привязка разных слоев к положению слоя Квадрат

Выражение для свойства Положение слоя Квадрат ниже

p = transform.position + fromComp(thisComp.layer(«Квадрат»).transform.position);[p[0] + Math.sin(time) * 300, p[1]];

Выражение для свойства Положение слоя Круг ниже

p = thisComp.layer(«Квадрат»).transform.position;[p[0], p[1]];

Выражение для свойства Положение слоя Звезда ниже

p = thisComp.layer(«Квадрат»).transform.position;[p[0] + Math.cos(time) * 300, p[1]];

Выражение для свойства Положение слоя Text ниже

p = thisComp.layer(«Квадрат»).transform.position;[p[0], p[1] + Math.cos(time) * 300];

Привязка всех слоев к слою Квадрат. Слой Квадрат можно перемещать в любое место композиции.

———
5

Анимация положения эмиттера эффекта Площадка для частиц

Выражение для свойства Положение слоя Пусто 4

p = transform.position + fromComp(thisComp.layer(«Кот»).transform.position);[p[0] + Math.sin(time) * 300, p[1]];

или так

p = transform.position + fromComp(thisComp.layer(«Кот»).transform.position);[p[0] + Math.sin(time) * 300, p[1] + random(5) * 100];

Выражение для свойства Положение эффекта Площадка для частиц

thisComp.layer(«Пусто 4»).transform.position;

———
7

Выражение для анимации Положения слоя Сплошная заливка Красный 6

thisLayer.transform.position + thisComp.layer(«Сплошная заливка Красный 6»).fromComp(thisLayer.transform.position + Math.sin(time) * 300);

Выражение для свойства Исходный текст слоя Text для того чтобы видеть числовые результаты

p = thisComp.layer(«Сплошная заливка Красный 6»).transform.position + thisComp.layer(«Сплошная заливка Красный 6»).fromComp(thisComp.layer(«Сплошная заливка Красный 6»).transform.position + Math.sin(time) * 300);[p[0].toFixed(0), p[1].toFixed(0)];

Выражение для анимации свойства Положение слоя Сплошная заливка Зеленый 6

thisLayer.transform.position + thisComp.layer(«Сплошная заливка Красный 6»).transform.position;

Выражение для анимации свойства Положение слоя Сплошная заливка Зеленый 6 с задержкой 3 секунды

thisLayer.transform.position + thisComp.layer(«Сплошная заливка Красный 6»).transform.position.valueAtTime(time — 3);