Выражения. Свойство ntscDropFrame After Effects
В After Effects метод ntscDropFrame используется в выражениях для работы с временными кодами. Метод работает корректно только в композициях с частотой кадров, близкой к 29.97 fps соответствующего вещательному стандарту NTSC
Список эффектов и не только After Effects
Выражения After Effects список
thisComp.ntscDropFrame;
Возвращает логическое значение (true или false), которое показывает, использует ли текущая композиция (thisComp) формат drop-frame для отображения временного кода.
true — композиция использует NTSC drop-frame формат (обычно для 29.97 fps и 59.94 fps).
false — используется non-drop-frame формат.
Drop-frame нужен для корректного отображения реального времени при работе с дробными частотами кадров (например, 29.97 fps). Без него таймкод постепенно «убегает» от настоящего времени. Drop-frame временно «пропускает» номера кадров в определённых минутах, чтобы выровнять таймкод с реальными часами.
29.97 fps ≠ 30 fps
За каждые 1000 кадров вы теряете ≈3.6 секунд по сравнению с «идеальными» 30 fps.
Drop-frame компенсирует это, пропуская 2 номера кадров в каждой непятой минуте (кроме кратных 10) — тем самым выравнивает таймкод с настоящим временем.
—————-
1
//Универсальное выражение для таймера
var t = time;
var fps = 1 / thisComp.frameDuration;
var isDF = thisComp.ntscDropFrame;
«Timecode (» + (isDF ? «DF» : «NDF») + «): » + timeToTimecode(t, fps, isDF)
——————
1
//Автоматический выбор между Drop-Frame и Non-Drop-Frame таймкодом
var t = time;
var fps = 1 / thisComp.frameDuration;
var df = thisComp.ntscDropFrame;
timeToTimecode(t, fps, df)
——————-
2
//Вывод обоих форматов (DF и NDF) + текущий режим композиции
var t = time;
var fps = 1 / thisComp.frameDuration;
«DF: » + timeToTimecode(t, fps, true) + «\r» +
«NDF: » + timeToTimecode(t, fps, false) + «\r» +
«Current Mode: » + (thisComp.ntscDropFrame ? «DF» : «NDF»)
———————-
3
//Изменение цвета
thisComp.ntscDropFrame ? [0, 1, 0, 1] : [1, 0, 0, 1]
// зелёный для DF (с альфой), красный для NDF (с альфой)
if(thisComp.ntscDropFrame == false) {[0, 1, 0, 1];
}else{[1, 0, 0, 1];
}