Разработан скрипт PROPAGATE для удобного массового редактирования узлов в Fusion
Для среды композитинга Fusion и интегрированной в DaVinci Resolve версии Fusion доступен новый утилитарный скрипт PROPAGATE, реализующий удобный механизм распространения внесённых изменений с одного активного узла на выбранный набор других узлов. Скрипт распространяется через Reactor — менеджер пакетов сообщества для Fusion — и призван заполнить практический пробел: возможность отредактировать один инструмент, а затем автоматически применить те же правки ко всем остальным выбранным инструментам, включая значения параметров, выражения, подключённые входы и анимацию.
Основная идея PROPAGATE проста и понятна: пользователь выбирает несколько узлов, делает правки в активном узле, после чего нажимает команду применения изменений. При открытии окна PROPAGATE сохраняет исходное состояние активного узла, затем сравнивает его с текущим состоянием после правок и распространяет обнаруженные отличия на остальные выбранные инструменты. Важная особенность — под «изменениями» скрипт понимает не только простые числовые контролы, но и выражения, ключевые кадры, подключённые входы и выходные маршруты, а также специфические структуры параметров.
Работа с параметрами и выражениями
Для обычных параметров PROPAGATE кеширует первоначальные значения и затем сравнивает их с текущими. Для некоторых типов данных предусмотрена отдельная логика: значения FuID и перечислений обрабатываются с учётом того, что их значение в Fusion может храниться внутри таблицы; табличные параметры сравниваются рекурсивно; выражения отслеживаются отдельно от вычисленных значений. Если вход получил или утратил выражение, скрипт классифицирует это как изменение выражения и реплицирует само выражение, а не только его результат в текущем кадре — что важно для корректного процедурного поведения композиции.
Подключения входов и выходов
PROPAGATE отслеживает изменения подключений входов: подключение, отключение или смену источника и воспроизводит соответствующие изменения на целевых узлах. Скрипт дополнительно проверяет реальный источник подключения, чтобы отличать настоящие межузловые связи от внутренних анимационных механизмов (например, BezierSpline или Path-модификаторов), которые визуально тоже могут выглядеть как подключение. Выходные маршруты тоже кешируются отдельно: изменение маршрута на активном узле можно распространить на другие выбранные инструменты, что полезно, например, при массовом подключении к одному downstream-узлу (MultiMerge упомянут разработчиком как пример).
Анимация и ключевые кадры
Система аккуратно обрабатывает анимацию: PROPAGATE обнаруживает появление анимации, её прекращение или изменение ключевых кадров, сравнивая времена ключей и их значения, и может скопировать анимацию на целевые узлы. Внутренние структуры BezierSpline и Path распознаются как анимационные механизмы. Для анимации на основе Path скрипт клонирует внутренний Path для каждого целевого узла и записывает соответствующие значения точек в параметры узла.
Особое отношение к параметрам типа Point
Для параметров типа Point реализована логика поосевого различения изменений: если на исходном узле изменена только координата X, PROPAGATE способен сохранить существующие Y и Z у целевых узлов и заменить только X. Аналогичная логика применяется к статическим точкам, ключам BezierSpline и клонированной Path-анимации. Это уменьшает риск случайного уничтожения намеренной, отличающейся по другим осям, геометрии у группы узлов.
Обработка Loader и Saver
Скрипт содержит отдельную обработку для Loader и Saver и их параметров, связанных с клипами. Медиа-инструменты содержат более сложную структурированную информацию, и простое «скопировать всё подряд» может привести к нежелательным результатам; PROPAGATE учитывает это и обрабатывает такие случаи осторожно. Также вложенные таблицы обрабатываются консервативно: простые таблицы сравниваются и копируются, а сложные вложенные структуры иногда пропускаются, чтобы избежать некорректных автоматических действий.
Транзакционный подход и Undo
Рабочий процесс PROPAGATE имеет явно транзакционную природу: при открытии окна сохраняется состояние активного узла, затем пользователь делает правки, и только при нажатии Apply Changes скрипт вычисляет и распространяет изменения. При этом порядок обнаружения изменений отделяет выходные подключения, входные подключения, выражения и обычные параметры, чтобы не дублировать действия. Операция обёрнута в единый блок отмены Fusion с именем «Propagate Parameters», поэтому результат можно откатить одной операцией undo, а не отменять каждое скопированное значение по отдельности.
Live Mode
Помимо ручного применения, PROPAGATE предлагает режим Live Mode: при его включении скрипт мониторит активный узел с интервалом 250 миллисекунд и автоматически распространяет изменения в реальном времени, пока пользователь работает. В Live Mode кнопка Apply Changes становится недоступной, и все изменения записываются в специальный живой блок undo. Предпочтение режима Live Mode сохраняется в небольшом конфигурационном файле в платформо-зависимом месте, чтобы состояние могло сохраняться между сессиями. Это превращает PROPAGATE из одноразового копировальщика в инструмент для временного многонодового редактирования: назначив один инструмент источником и выделив целевые, можно в реальном времени распространять правки на группу узлов. При этом разработчик предупреждает об осторожности — стоит заранее проверить, какие узлы выделены, прежде чем активно менять параметры.
Упаковка и интеграция
PROPAGATE распространяется как Atom-пакет для Reactor и устанавливает в конфигурацию Fusion два файла: (интеграционная .fu-конфигурация) и (реализация обнаружения изменений, UI и логики распространения). Reactor синхронизирует Atom-пакеты из своего репозитория и размещает установленные элементы в структуре путей Fusion. Это делает PROPAGATE лёгким дополнением к уже существующей установке Fusion, без необходимости вводить новые форматы медиа, бэкенды рендеринга или облачные сервисы — скрипт работает через существующие интерфейсы Fusion: параметры, выражения, подключения и анимацию.
Практическая ценность
PROPAGATE не предлагает принципиально новых методов композитинга; он устраняет рутинное повторение операций в привычных рабочих процессах. Массовая корректировка параметра, восстановление подключений или дублирование выражений между несколькими узлами теперь выполняются значительно быстрее и безопаснее благодаря учёту выражений, анимации и структурированных параметров. В результате инструмент экономит время и снижает вероятность ошибок, превращая ранее утомительную последовательность действий в простую и обратимую операцию.





