Выражения. Метод timeToFeetAndFrames After Effects

Метод timeToFeetAndFrames() в After Effects используется для преобразования времени (в секундах) в формат футов и кадров, который часто применяется в кинопроизводстве для 35-мм плёнки. Этот метод полезен при создании анимации, связанной с таймингом, или для отображения времени в специфическом формате.
Для 35мм плёнки (24 кадра/сек) обычно используется 16 кадров на фут.
Для 16мм плёнки (24 кадра/сек) — 40 кадров на фут.

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

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

Использовать timeToFeetAndFrames() для отображения текущего времени композиции в формате футов и кадров на текстовом слое.

timeToFeetAndFrames(t = time + thisComp.displayStartTime, fps = 1.0 / thisComp.frameDuration, framesPerFoot = 16, isDuration = false) //16 кадров на фут

timeToFeetAndFrames(t = time + thisComp.displayStartTime, fps = 1.0 / thisComp.frameDuration, framesPerFoot = 40, isDuration = false) //40 кадров на фут

time — текущее время композиции в секундах.
fps — частота кадров (по умолчанию берётся из композиции).
framesPerFoot — количество кадров на фут плёнки (обычно 16 для 35-мм плёнки).
Выражение вернёт строку, например, +0+12, где 0 — футы, а 12 — кадры.
Текстовый слой будет показывать время в формате футов и кадров, обновляясь в реальном времени.

// Применить к Source Text текстового слоя:

timeToFeetAndFrames(time, fps = 1.0/thisComp.frameDuration, framesPerFoot = 16);

timeToFeetAndFrames();

————————-

Вы можете использовать timeToFeetAndFrames() для управления анимацией, например, для изменения прозрачности слоя в зависимости от текущего количества кадров в футе.

var timeData = timeToFeetAndFrames(time, fps = 1.0/thisComp.frameDuration, framesPerFoot = 16);
var frames = parseInt(timeData.split(«+»)[1]); // Извлекаем количество кадров
(frames / 16) * 100; // Прозрачность зависит от кадров в футе

timeToFeetAndFrames() возвращает строку вида +футы+кадры.
split(«+»)[1] извлекает число кадров из строки.
Прозрачность (Opacity) изменяется от 0% до 100% в зависимости от количества кадров в текущем футе (16 кадров = 0%).

——————

Если вы хотите создать кастомный тайм-код, включающий футы и кадры, можно комбинировать timeToFeetAndFrames() с другими методами форматирования.

var feetFrames = timeToFeetAndFrames(time, fps = 1.0/thisComp.frameDuration, framesPerFoot = 16);
«Feet: » + feetFrames.split(«+»)[0] + «, Frames: » + feetFrames.split(«+»)[1];

Выражение разделяет результат timeToFeetAndFrames() на футы и кадры.
Форматирует вывод, чтобы он выглядел, например, как Feet: +0, Frames: 12.

————

Конвертация длительности клипа в футы/кадры

// Применить к текстовому слою для отображения длительности:
var duration = thisLayer.outPoint — thisLayer.inPoint;
timeToFeetAndFrames(duration, 16, 24, true); // true = расчёт длительности, а не времени начала