Выражения. Метод timeToFrames() After Effects. Таймер

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

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

timeToFrames(t = time + thisComp.displayStartTime, fps = 1.0 / thisComp.frameDuration, isDuration = false)

timeToFrames(time, 30) для отображения номера текущего кадра в текстовом слое, для создания таймкода.

Если вы не укажете частоту кадров в timeToFrames(t, fps), функция использует частоту кадров текущей композиции по умолчанию.

timeToFrames(time);

Можно написать вот так

timeToFrames();

Текстовый слой будет показывать номер текущего кадра, начиная с 0 (например, 0, 1, 2, 3…), в зависимости от текущего времени и частоты кадров композиции (например, 30 fps).
Если вы хотите, чтобы счет начинался с 1, добавьте +1

timeToFrames(time, 30) + 1;

или вот так

K = timeToFrames(time, 30) + 1;
«Количество кадров — » + K;

——————————

timeToFrames() можно использовать для создания анимации, которая зависит от номера кадра, например, для циклического вращения объекта с определенной периодичностью.

//Для свойсвойства Поворот слоя
angle = 15; // Угол поворота за цикл
rotateDuration = 6; // Длительность вращения в кадрах
timeStop = 10; // Пауза между вращениями в кадрах
offset = 0; // Сдвиг начала в кадрах
fr = timeToFrames(time) + offset;
cycle = timeStop + rotateDuration;
n = Math.floor(fr / cycle);
cur_phase = fr — n * cycle;
if (cur_phase > timeStop) {
angle * n + (cur_phase — timeStop) * angle / rotateDuration;
} else {
angle * n;
}

//Для другого слоя свойство Поворот
thisComp.layer(«Слой-фигура 1»).rotation;

——————-

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

//Для свойства Непрозрачность слоя
frame = timeToFrames(time);
if (frame < 60) {
100; // Непрозрачность 100% до 60-го кадра
} else {
30; // Непрозрачность 0% после 60-го кадра
}

———————

Если вы хотите создать таймкод с ведущими нулями (например, 00001, 00002), можно использовать timeToFrames() с форматированием строки.

//Для свойства Исходный текст Пустого текстового слоя
frame = timeToFrames(time, 30);
pad = «00000»;
(pad + frame).slice(-5);

// Для эффекта Быстрое размытие свойства Размытость
time * 10;

//Для эффекта Базовый 3D свойство Поворот
frame = timeToFrames(time);
pad = «00000»;
(pad + frame).slice(-5);

—————————-

Преобразовать время в кадры вручную (с указанием fps)

timeToFrames(2.5, 24); // Результат: 60 (2.5 секунды при 24 кадрах/сек)

Ты можешь указать вторым аргументом свою частоту кадров, если она отличается от композиции

————————-

Если вы не укажете частоту кадров в timeToFrames(t, fps), функция использует частоту кадров текущей композиции по умолчанию.
Чтобы учесть смещение времени композиции, используйте timeToFrames(time + thisComp.displayStartTime).