В этом уроке мы посмотрим, как сохранять Render Passes наших рендеров в файл EXR, а затем открывать эти файлы и изменять их в Compositing.
Видеоверсия этого руководства в настоящее время недоступна на этом языке, но доступна на английском языке при выборе соответствующего языка в верхней части страницы.
Текстовая расшифровка видео
Всем привет! В этом уроке мы посмотрим, как сохранять Render Passes наших рендеров в файл EXR, а затем открывать эти файлы и изменять их в Compositing.
В частности, в этом примере мы увидим, как извлечь маску объекта из отрендеренного изображения с помощью информационного канала IndexOB, чтобы изменить некоторые его характеристики в Compositing.
Урок создан с использованием Blender 3.6, но описанные функции доступны как минимум начиная с версии 2.49.
Итак, начнём! Посмотрим, как сохранить Render Passes нашей сцены в файл EXR.
Я открыл проект Blender, в котором есть несколько объектов, готовых к рендерингу.

Я установил тип выходного файла для рендера как OpenEXR Multilayer во вкладке Output редактора Properties. Убедитесь, что выбрана версия Multilayer этого формата.

Перед запуском рендеринга сцены нужно выбрать Render Passes, которые требуется сохранить в файл, в разделе Passes вкладки View Layer в редакторе Properties.

В моём случае я выбираю только Object Index, потому что хочу иметь возможность изолировать определённые объекты по числовому идентификатору, который я скоро им задам.
В узле Render Layers появится поле IndexOB, так здесь обозначается Object Index Pass. Обратите внимание, что нет необходимости каким-либо образом подключать эту информацию к узлу Composite.

Теперь я задаю разные числовые индексы для некоторых объектов сцены, например для стола, стула или оконных стёкол. Числовые индексы задаются для каждого выбранного объекта во вкладке Pass Index раздела Relations вкладки Object в редакторе Properties.

Теперь можно запустить рендеринг сцены. Когда рендер завершён, я сохраняю его на диск в файл с расширением EXR.

Первая часть работы выполнена: нужный информационный канал сохранён в файле EXR!
С этого момента вы можете повторить мои шаги с EXR файлом, предоставленным в бесплатном пакете!
Откроем новый проект Blender, чтобы посмотреть, как изменить внешний вид элемента из рендера, сохранённого в файле.
Сначала откроем окно Compositing Nodes и активируем использование Nodes.

Удалим узел Render Layer и добавим вместо него узел Input Image.
Также добавим узел Viewer и узел Reroute, соединив их так, чтобы выход Image узла Image шёл в Reroute, а из Reroute — к узлам Composite и Viewer.
Таким образом мы сможем видеть предварительный результат в этом окне.

В узле Image загрузим EXR изображение, сохранённое на диск в первой части урока. Либо можно перетащить файл EXR прямо из проводника в окно Compositing.

Соединим выход Combined узла Image с узлом Reroute.
Если активна опция Backdrop, вы увидите изображение как фон окна. Нажмите клавишу V, чтобы уменьшить предпросмотр, или сочетание ALT + V, чтобы увеличить его.

Если перетащить файл EXR в Compositor Editor, в узле появятся каналы IndexOB и другие.
Этого не происходит, если открыть EXR файл через узел Image.
В этом случае, если открыть панель Transform узла Image и нажать Node - Properties - Composite, можно заметить, что этот пункт меню можно изменить на View Layer.
После этого появится второе меню, где можно выбрать IndexOB, что означает, что данные загружены, но ещё недоступны в окне Compositing.

Откроем редактор Image.
В редакторе Image загрузим EXR изображение, импортированное в проект.

Поля, сохранённые в EXR файле, теперь должны появиться в узле Image в окне Compositing. Не спрашивайте почему, но, похоже, изображение нужно открыть в редакторе Image, чтобы получить доступ к его компонентам в Compositing.

Отлично: таким образом мы получили доступ к данным, сохранённым в файле OpenEXR Multilayer, среди которых в нашем случае есть поле IndexOB. В первой части урока я присвоил числовые значения полям Pass Index для некоторых объектов. Чтобы их извлечь, подключим узел Converter - ID Mask между выходом IndexOB узла Image и узлом Reroute.

Затем изменяем значение в поле Index, пока не найдём стол, который будет отображаться белым в предпросмотре Backdrop, тогда как остальная часть изображения станет чёрной.

Теперь можно извлечь маску для некоторых объектов, чтобы изменять их прямо на отрендеренном изображении. Попробуем, например, применить узел Color Balance к столу.
Чтобы получить исходные цвета только стола, умножим выход маски из ID Mask на выход Combined узла Image.
Это можно сделать с помощью узла Color Mix в режиме Multiply, убедившись, что Combined подключён к первому входу Image узла Mix, а выход ID Mask — ко второму входу Image узла Mix.

Затем можно подключить выход Multiply к узлу Color Balance или любому другому узлу цветокоррекции или эффектов в зависимости от задачи.

Чтобы увидеть изменения на всём изображении, добавим в сцену узел Color - Alpha Over.
Далее подключим Combined к первому входу Image этого узла Alpha Over, а выход узла Color Balance — ко второму входу Image.
Затем подключим выход Image узла Alpha Over к узлу Reroute.

Узел Alpha Over сейчас работает неправильно, потому что его параметр Factor установлен в 1 для всего изображения, то есть используется только второй вход Image, который является результатом Color Balance.
Чтобы ограничить наложение второго изображения только областью стола, нам нужна маска, которая чёрная везде, кроме областей стола.
Она будет использоваться как Factor для узла Alpha Over...
… и это как раз маска, которую мы получаем из ID Mask!

Сделаем это подключение и посмотрим на результат, при необходимости продолжая настраивать узел Color Balance или другие узлы постобработки.

Мы можем оценить различия, внесённые узлом Color Balance, выбрав его и нажимая клавишу M, это сокращение для Mute, чтобы включать и выключать узел.
Используя другие узлы ID Mask с разными значениями поля Index, можно изолировать другие элементы изображения и изменять их с помощью других настроек узлов.
В этом примере перед рендерингом я активировал только Object Index и сохранил его в файле OpenEXR Multilayer, но, конечно, можно сохранять и другие Passes для получения различных эффектов.
Надеюсь, этот урок был полезен! До скорой встречи!