ВИДЕОМОНТАЖЁРDAVINCI RESOLVE · ВИДЕО · AI

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-пайплайне.