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

ComfyUI и офлайн-генерация

Связка TouchDesigner с ComfyUI по WebSocket: когда нужен результат сложнее, чем даёт реальное время.

ComfyUI — нодовый интерфейс к диффузионным моделям. Логика узлов там та же, что в TouchDesigner, и связать их естественно.

Когда это нужно

Задача Реальное время ComfyUI
Стилизация живого видео Диффузия
Генерация фонов и текстур перед шоу Да
Сложные пайплайны с ControlNet, апскейлом, инпейнтом Да
Генерация по событию (раз в минуту, по кнопке) Да
Подготовка контента пачками Да

Коротко: реальное время — StreamDiffusion, качество и сложность — ComfyUI.

Как связывают

ComfyUI имеет HTTP- и WebSocket-API. Схема:

  1. В ComfyUI включите Dev Mode в настройках — появится экспорт workflow в формате API.
  2. Экспортированный JSON — это описание графа с подставляемыми значениями.
  3. TouchDesigner отправляет этот JSON с подменёнными параметрами (промпт, seed, входное изображение) и получает результат.

Готовые решения:

  • TDComfyUI — интерфейс к ComfyUI из TouchDesigner;
  • ComfyUI-TD — нода на стороне ComfyUI, отправляющая результат в TouchDesigner по WebSocket; передаёт изображения, видео, облака точек (в том числе гауссовы сплаты) и звук. Работает в паре с компонентом ComfyUI2TD.tox.

Своими силами это тоже собирается: Web Client DAT и WebSocket DATВеб.

Практическая схема

TouchDesigner                    ComfyUI
   промпт + кадр  ──WebSocket──▶  граф генерации
   очередь задач                   │
   готовый кадр  ◀──WebSocket───  результат

Ключевые моменты:

  • асинхронность: запрос уходит, ответ приходит через секунды. Проект не должен ждать;
  • очередь: не отправляйте новый запрос, пока не пришёл предыдущий, иначе ComfyUI забьётся;
  • кэш: сохраняйте результаты на диск. Второй раз то же самое генерировать незачем;
  • план Б: ComfyUI не ответил — берём из кэша или показываем заготовленное.

Локально или на сервере

ComfyUI может стоять на той же машине (делит видеокарту с шоу — плохо) или на отдельной (правильно). Отдельная машина в той же сети снимает конкуренцию за GPU и позволяет перезапускать генерацию, не трогая шоу.

Генерация на машине шоу отнимает кадры

Диффузия загружает видеокарту полностью. Если ComfyUI работает на той же карте, что и вывод, — картинка будет проваливаться в момент генерации. Либо отдельная машина, либо генерация только когда вывод не критичен.

Генерируйте заранее, показывайте из кэша

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

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