Выражения. Метод 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);