Выражения. Метод comp(name) в After Effects
В Adobe After Effects точка (.) в выражениях используется для доступа к свойствам и методам объектов в иерархии композиции. Это похоже на принципы объектно-ориентированного программирования, где точка разделяет объект и его элемент. Точка позволяет «переходить» по иерархии свойств.
Список эффектов и не только After Effects
Выражения After Effects список
comp(‘Композиция 13’);
comp(«Композиция 13»).layer(«<пустой текстовый слой>»).transform.rotation + time * 30;
effect(«Базовый 3D»)(1);
comp(«Композиция 13»).layer(«<пустой текстовый слой>»).effect(«Базовый 3D»)(1) + time * 30;
comp(«Композиция 13»).transform.rotation + time * 30; // Так писать нельзя. Пропущена ступень иерархии layer()
comp(«Композиция 13»).layer(«<пустой текстовый слой>»).time * 30;
comp(«Композиция 13»).time * 30; // Так писать нельзя. Пропущена ступень иерархии layer()
————-
В Adobe After Effects функция comp(name) используется в выражениях для доступа к конкретной композиции в проекте по её имени. Это позволяет ссылаться на свойства, слои или другие параметры указанной композиции
Предположим, у вас есть композиция с именем «Композиция 9», и вы хотите, чтобы позиция слоя в другой композиции следовала за позицией слоя «Собака» из «Композиция 9».
transform.position + time * 100; // Выражение для анимации Положения
comp(«Композиция 9»).layer(«Собака»).transform.position + 200;
comp(«Композиция 9») — обращается к композиции с именем «Композиция 9».
layer(«Собака») — обращается к слою с именем «Собака» внутри этой композиции.
ransform.position + 200 — получает значение позиции этого слоя.
Примените это выражение к свойству Position слоя в другой композиции, и он будет двигаться синхронно с «Собака».
//Для примера как можно использовать слой с Композицией для управления свойства слоя другой композиции
comp(«Композиция 9»).layer(«Собака»).transform.position + comp(«Композиция 9»).layer(«Композиция 10»).transform.position;
—————————-
Если вы хотите, чтобы непрозрачность (Opacity) слоя в другой композиции зависела от времени воспроизведения композиции «Композиция 6», можно написать:
comp(«Композиция 6»).layer(«Собака»).time > 2 ? 100 : 0;
Или написать вот так
if (comp(«Композиция 6»).layer(«Собака»).time > 3) {
100; // Полная непрозрачность после 3 секунд
} else {
0; // Полная прозрачность до 3 секунд
}
comp(«Композиция 6»).layer(«Собака»).time — возвращает текущее время в секундах
Условие > 2 ? 100 : 0 означает: если время в «Композиция 6» больше 2 секунд, непрозрачность будет 100%, иначе — 0%.
Это полезно для синхронизации анимации между композициями.
————
Допустим, вы хотите, чтобы масштаб (Scale) слоя увеличивался в зависимости от количества слоев в композиции «Композиция 11».
[comp(«Композиция 11»).numLayers * 10, comp(«Композиция 11»).numLayers * 10];
//Или написать вот так:
x = comp(«Композиция 11»).numLayers * 10;
y = comp(«Композиция 11»).numLayers * 10;
[x, y];
comp(«Композиция 11»).numLayers — возвращает общее количество слоев в композиции «Композиция 11».
Умножение на 10 создает пропорциональный масштаб (например, 5 слоев = масштаб 50%).
Примените это к свойству Scale, и масштаб будет зависеть от числа слоев.
x = comp(«Композиция 12»).numLayers * 30;
y = comp(«Композиция 12»).numLayers * 30;
[x, y];
[comp(«Композиция 12 композиция 2»).numLayers * 30, comp(«Композиция 12 композиция 2»).numLayers * 30];
———-
Точное имя композиции: Имя должно совпадать полностью, включая пробелы и регистр.
comp(name) особенно полезно в больших проектах с множеством вложенных композиций для централизованного управления.