FUSION · СПРАВОЧНИК НОД
CustomTool
CustomTool — программируемая обработка каналов и масок
Программируемая нода Fusion: три image inputs, белый Matte Input, синий Effect Mask, Number/Point/LUT, Setup/Inter и формулы RGBA/aux channels.
CustomTool
Обзор
Что делает CustomTool
CustomTool — программируемый 2D image processor, а не C++ compiler и не Fuse. Внутри ноды пользователь пишет выражения для пикселей и вспомогательных каналов, используя три изображения, управляющие значения и маски.
У CustomTool пять разных входных ролей: три image input (Image1, Image2, Image3), отдельный белый Matte Input и синий Effect Mask. Их нельзя сводить к одному «Image» — это меняет смысл формул и схему Flow.
Оранжевый Image1 — основная ветка, на неё ссылаются r1/g1/b1/a1. Зелёный Image2 читает r2/g2/b2/a2; пурпурный Image3 — r3/g3/b3/a3. Источники могут содержать разные карты или варианты одного кадра.
Matte Input — отдельный data input для использования маски как значения в математике, обозначаемого m1 в документации. Он отличается от Effect Mask: белая matte может менять вычисленное выражение, синяя mask ограничивает уже обработанный результат.
Выход CustomTool — один 2D image stream. Даже если в Alpha вычислена чёрно-белая маска или в Z записан depth, это не превращает Output в отдельный синий mask connector.
Controls содержит четыре Point In (X/Y), восемь Number In и четыре LUT In. Это живые редактируемые controls, на которые ссылаются выражения. Их можно анимировать или подключать к модификаторам.
Number In 1–8 используются в формулах как n1…n8. Переименование в Config делает интерфейс понятнее художнику, но не переименовывает идентификаторы переменных внутри математического языка.
Point In 1–4 доступны как пары p1x/p1y…p4x/p4y. Они подходят для центров, опорных точек и анимируемых координат процедурного эффекта, но не создают дополнительных графовых point-портов автоматически.
LUT In 1–4 представляют кривые; getlut1(value)…getlut4(value) позволяют применить mapping к channel/scalar. Это не file LUT, не OCIO transform и не отдельные входы изображения.
Setup и Inter — разные стадии вычислений. Setup рассчитан на значения, которые обновляются один раз на кадр; Inter — на промежуточные значения, вычисляемые для каждого пикселя до итоговых каналов.
В прилагаемом текущем Inspector видны Setup 1–8 и Intermediate 1–8. Однако опубликованные справочники Blackmagic для старых версий описывают только Setup 1–4 (s1…s4) и Inter 1–4 (i1…i4); имена s5…s8/i5…i8 следует подтвердить на целевой сборке, а не угадывать.
Setup не является эквивалентом per-pixel выражения. r1/g1/b1, x и y в контексте одного пикселя нельзя безопасно трактовать как постоянное значение для всего кадра; такую работу переносите в Intermediate.
Intermediate 1–4 в документированной схеме доступны как i1…i4 в последующих формулах. Перенос повторяющейся математики туда упрощает Channels, но не заменяет явное документирование областей действия переменных.
Channels содержит отдельные формулы Red, Green, Blue и Alpha. Для pass-through в актуальном capture стоят r1, g1, b1, a1: это лучший исходный smoke test перед сложными вычислениями.
c1…c3 обозначают текущий channel соответствующего image input. Поэтому одна формула вида c1/2 работает для того канала, в поле которого она записана; она не обязательно значит «всегда красный».
Координаты x и y внутри pixel stage нормализованы примерно к 0…1 по frame. Для размеров есть w/h (или w1…w3/h1…h3); для pixel aspect — ax/ay. Эти синтаксические переменные относятся к CustomTool, не к обычным Inspector Expressions.
Поля Aux Channel Expressions позволяют писать технические данные Z, Z Coverage, U/V, XYZ Normal, XY Vector и другие каналы, но полезность зависит от того, действительно ли source и downstream умеют читать эти данные.
Z является глубиной, Z Coverage — покрытием, U/V — текстурными координатами, нормали — ориентацией поверхности, motion vectors — движением. Их нельзя использовать как взаимозаменяемые «вспомогательные цвета».
В текущем capture виден X BackVector под XY Vector. Не следует по одному скриншоту выводить полный список опций BackVector или экспортируемых каналов: нижняя часть Inspector может выходить за пределы кадра.
CustomTool поддерживает получение соседнего pixel через функции get… с вариантами boundary behavior. В официальной документации getr1b(x,y) даёт 0 за границей, getr1d(x,y) clamp к краю, getr1w(x,y) wrap на противоположный край.
Аргументы get… — пространственные координаты; их не следует путать с выбором первого или второго input, encoded в цифре после имени channel. Чтение соседей через выражения часто заметно дороже специальной Blur/CustomFilter ноды.
Color channels в float pipeline могут иметь значения за диапазоном 0…1. Integer destinations будут clip out-of-range; ранний принудительный clamp способен уничтожить HDR/headroom и ошибочно «починить» картинку.
Alpha — коэффициент покрытия, а не яркость. Если формула меняет RGB, но не альфу, переходы по прозрачным краям нужно проверять на реальном фоне с правильным premultiplication state.
Blend/Channel common controls в Settings применяются по своим общим правилам после node evaluation и не подменяют логическое ветвление между Image1/Image2/Image3.
Config показывает Random Seed и кнопку Reseed. Seed нужен для воспроизводимых rand()/rands() паттернов; Reseed намеренно меняет sequence и поэтому не подходит для неожиданно меняющихся дублей композита.
Show/Name Number, Point, LUT управляют интерфейсом controls, а не структурой ноды в Flow. Скрыв контрол, вы не обязаны удалять его значение или исходную переменную из формулы.
Не вводите математические переменные CustomTool напрямую в обычное контекстное Expression поле Number In и не ожидайте одинакового словаря: у движка CustomTool и у стандартных Inspector expressions разные области имён.
Если задача — стандартный kernel 3×3/5×5/7×7, CustomFilter обычно проще и быстрее. CustomTool оправдан, когда нужны произвольные функции, несколько input images, user controls, matte math или специфические aux channels.
Перед передачей проекта проверяйте, что все используемые images и mattes подключены, выражения не делят на ноль и не получают undefined data, а каждый видимый control подписан по задаче.
Не объявляйте страницу документацией полного scripting API. Captured Inspector подтверждает UI labels, manual — синтаксис базовых переменных; live verification на Resolve 21/21.1 всё ещё нужна для конкретных serialized IDs и расширенных s5–s8/i5–i8.
Когда применять
Линейно смешать два image inputs через Number In Mix.
Подать третий image как procedural/noise/control source для формулы.
Вычислять matte как числовое значение внутри выражения через white Matte Input.
Ограничивать вычисленный RGB эффект отдельным синим Effect Mask.
Реализовать индивидуальный remapping каналов RGB/Alpha/aux.
Построить градиент/радиальную процедурную карту из Point и x/y.
Добавить управляющую LUT-кривую для нелинейной функции.
Прототипировать обработку до написания Fuse.
Сформировать воспроизводимые случайные эффекты при фиксированном seed.
Изучать сохранность технических Z/UV/normal/vector каналов в VFX-пайплайне.
CustomTool в контексте
Скриншоты из статьи. Откройте изображение, чтобы рассмотреть его крупнее.
Пример для CustomTool.
Оригинальное изображениеПример для CustomTool.
Оригинальное изображениеПример для CustomTool.
Оригинальное изображениеПример для CustomTool.
Оригинальное изображениеПример для CustomTool.
Оригинальное изображение