К содержанию
fohbook/ TouchDesigner
профи

Несколько процессов

Engine COMP, TouchEngine и разделение проекта: как вынести тяжёлое и рискованное из главного потока.

TouchDesigner считает всё в одном потоке. Единственный способ по-настоящему распараллелить — вынести часть работы в отдельный процесс.

Engine COMP

Engine COMP загружает .tox и выполняет его в отдельном процессе TouchEngine, показывая результат внутри вашего проекта как обычный узел.

Что важно:

  • работает с любой лицензией, включая Non-Commercial;
  • на вход и выход можно передавать TOP, CHOP и DAT;
  • падение содержимого не роняет главный процесс;
  • есть управление частотой: движок может считаться реже основного проекта.

Что выносить

Что Зачем
Нейросетевые модели Изоляция от падений — Нейросети
Тяжёлая генеративная сцена Не блокирует вывод
Работа с внешними библиотеками Python Конфликты версий не трогают шоу
Части, разрабатываемые другими людьми Независимая отладка
Медленные вещи (запросы в сеть, чтение больших файлов) Не крадут кадр

Цена

  • Задержка передачи между процессами — как минимум кадр.
  • Память: каждый процесс держит свои текстуры.
  • Отладка сложнее: в чужой процесс не зайдёшь так же свободно.
  • Синхронизация: движок и хост считаются независимо.

TouchEngine вне TouchDesigner

Та же технология доступна снаружи: плагины для Unreal Engine и других приложений позволяют запускать .tox внутри чужого софта. Технология бесплатна; включается наличием платной лицензии TouchDesigner или TouchPlayer на машине пользователя.

Практический сценарий: логика, интерактив и коммутация делаются в TouchDesigner как .tox, тяжёлый фотореалистичный рендер — в Unreal.

Несколько машин

Следующий уровень — разнести по машинам:

  • Touch In / Touch Out для картинки и данных между экземплярами — Вывод по сети;
  • NDI там, где допустима задержка;
  • OSC для синхронизации состояния — OSC;
  • общий таймкод как источник времени для всех.

Схема «одна машина считает, вторая выводит, третья в резерве» — типовая для больших инсталляций — Резерв.

Начинайте разделять до того, как станет плохо

Переносить готовый монолит в несколько процессов больно. Если уже на этапе проектирования видно, что в проекте будет нейросеть или тяжёлая симуляция, — делайте её отдельным .tox с самого начала.

Процессы должны переживать друг друга

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

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