Выражения. Свойство 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];
}