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