К содержанию
fohbookбета/ TouchDesigner

Синхронизация машин и выходов

Несколько машин — одна картинка. Откуда берётся рассинхрон, почему проект обязан быть детерминированным, OSC на 1–3 кадра, Sync CHOP в пределах кадра и Frame Lock с Quadro Sync.

Ветка вашего пульта:
Быстрый выбор:

На одной машине с одной картой синхронизировать нечего. Если картинку делят несколько машин или карт, они должны показать один кадр в один момент. Насколько точно, решает площадка: на медленном контенте и разнесённых экранах пару кадров разницы никто не заметит; при быстром движении через стык соседних экранов заметна любая.

Ошибка складывается из двух частей. Машины должны посчитать одно и то же для одного номера кадра — тот же кадр видео, те же камеры, — это программная синхронизация. И мониторы разных машин обновляются не в фазе: при 60 Гц развёртки расходятся до 16,6 мс, до кадра, — это уже аппаратная.

Сначала проект делают детерминированным: одна команда или один набор каналов — одна картинка. Обычно всё ведут от одного номера кадра.

Feedback и частицы расходятся

Feedback TOP и частицы считают кадр из прошлого. Машина пропустила кадр — через несколько секунд у неё своя картинка. Такое считают на одной машине и раздают видео либо гоняют всех без Realtime на строго одинаковых входах.

Уровень Чем Точность
Слабая Touch In/Out, потоки с очередями Непрерывность, без точности кадра
Средняя OSC Out CHOP или DAT с номером кадра или таймкодом 1–3 кадра
Жёсткая программная Sync In и Sync Out CHOP В пределах кадра; Pro
Жёсткая + аппаратная Sync-операторы, Hardware Frame Lock, Quadro Sync Кадр в кадр и в фазе

Без Pro идеала нет, но 1–3 кадра даёт OSC: ведущий рассылает номер кадра, остальные по нему встают, по multicast и с выключенным Queued у OSC In CHOP — OSC. Тот же уровень даёт общий LTC на всех машинах — Таймкод. Большинству проектов этого хватает.

Sync In и Sync Out CHOP

Сервер с Sync Out ждёт, пока все клиенты с Sync In досчитают кадр, и пускает следующий; каналы на входе Sync Out приезжают клиентам вместе с ним. У клиентов Realtime выключен — частоту задаёт сервер, мониторы везде на одной частоте, адрес multicast и порт общие. Info DAT на Sync Out показывает каждого клиента — машину, файл, сколько раз его ждали.

Клиента, который подряд не отвечает, сервер перестаёт ждать до первого ответа, Ban Clients исключает ненадёжного насовсем, Clear Stats прощает всех. Клиент теряет кадры — растут timeout_consecutive на сервере или sync_incompletes в Info CHOP клиента, и помогает больший Timeout. Сервер на машине рендера — номер кадра в одном COMP со своим временем, рендер в другом, и рендер читает Sync In в том же файле.

Аппаратная

Массивы экранов с быстрым контентом, LED-стены из панелей. Профессиональные NVIDIA и плата Quadro Sync шлейфом к карте в каждом компьютере; для Frame Lock через Window COMP требования называют ещё AMD S400.

Genlock ставит развёртки в фазу — от одной из карт или от house sync. Включается в панели NVIDIA (Synchronize Displays) или утилитой QSync, нужен V-Sync, Pro не нужен. Hardware Frame Lock меняет кадр на всех выходах, только когда готовы все: запнулся один — ждут все, и двух разных кадров на холсте не бывает. Это Pro и минус к производительности, его включают, когда без него никак. С ветки 2025.30000 Frame Lock делают на Direct Display Out TOP — путь через Window COMP устарел и плохо переносит смену окон и режимов, Несколько экранов.

По документации: дисплеи на одном EDID, проще всего одной модели; в панели NVIDIA V-Sync «Вкл.» или «по приложению», в Synchronize Displays сервер на этой системе и нужные дисплеи; на машине с несколькими картами — процесс на карту (Железо). Процессы стартуют с выключенными Direct Display Out с включённым Hardware Frame-Lock, и канал через Sync Out и Sync In включает выходы везде разом, с Timeout 5 секунд. После старта сервер можно опустить до секунды, клиенты остаются высокими.

Frame Lock не прощает сбоев

Одна машина теряет кадры — теряют все, догнать ей нечем. Поэтому ставят большие таймауты и подбирают одинаковые по железу и нагрузке машины.

TDSynchro в палитре — каркас «сервер рендерит холст, клиенты мэппят свой кусок»: куски уходят по SDI или NDI с номером кадра, клиенты кэшируют и показывают нужный. Документации на большинство его компонентов пока нет, на разбор нужно время.

Нашли в статье ошибку, устаревшее или непонятное место?

рядом по смыслу