Выражения After Effects. Метод footage(name)

В Adobe After Effects функция footage(name) используется в выражениях для получения доступа к свойствам конкретного элемента видеоряда (footage) из панели проекта. Это может быть полезно, например, для извлечения данных, таких как длительность, частота кадров или размеры элемента, и применения их в анимации.

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

Вы можете использовать footage(name).duration для получения длительности элемента в секундах и, например, привязать её к свойству слоя.

Допустим, у вас есть видеофайл в проекте под названием «Wildlife_1.mp4». Вы хотите, чтобы opacity (непрозрачность) слоя плавно уменьшалась или увеличивалось в зависимости от длительности этого видео.

//Увеличение непрозрачности от 0% до 100%
videoDuration = footage(«Wildlife_1.mp4»).duration;
fadeTime = time / videoDuration;
transform.opacity * fadeTime;

//Уменьшение непрозрачности от 100% до 0%
videoDuration = footage(«Wildlife_1.mp4»).duration;
fadeTime = time / videoDuration;
transform.opacity * (1 — fadeTime);

Результат: Непрозрачность слоя будет уменьшаться от 100% до 0% в течение времени, равного длительности «myVideo.mp4».

———————-

// Выражение для положения
videoDuration = footage(«Композиция 2.avi»).duration;
fadeTime = time / videoDuration;
x = transform.position[0] + Math.floor(transform.opacity * (1 — fadeTime)) * 10;
y = transform.position[1];

[x, y];

———————

Использование ширины и высоты элемента
Свойства width и height позволяют получить размеры элемента видеоряда в пикселях. Это полезно для адаптации слоя к размерам footage.

Вы хотите, чтобы масштаб слоя соответствовал ширине видеофайла «Композиция 2.avi».

videoWidth = footage(«Композиция 2.avi»).width;[videoWidth / thisComp.width * 100, videoWidth / thisComp.width * 100];

Результат: Масштаб слоя (scale) будет автоматически подстраиваться под ширину «intro.mp4» относительно ширины композиции.


Частота кадров элемента
Свойство frameDuration возвращает длительность одного кадра в секундах (обратное значение частоты кадров). Это можно использовать для синхронизации анимации.

Вы хотите, чтобы позиция слоя изменялась с шагом, равным длительности кадра видео «Композиция 2.avi».

frameTime = footage(«Композиция 2.avi»).frameDuration;
x = transform.position[0] + time/ frameTime * 10;
y = transform.position[1];

[x, y];

Вы можете использовать footage() с динамическим именем, основанным на источнике слоя, чтобы сделать выражение более универсальным.

frameTime = footage(thisLayer.source.name).frameDuration;
x = transform.position[0] + time/ frameTime * 10;
y = transform.position[1];

[x, y];

Позиция по оси X будет увеличиваться на 10 пикселей за каждый кадр видео «Композиция 2.avi».