Рендер объекта с отражением на белом фоне

Чаще всего предметная визуализация выполняется на однородном белом фоне. Достичь этого стандартными средствами настройки сцены достаточно сложно — при увеличении освещенности объект «засвечивается», при уменьшении — фон вместо белого становится серым. И если сам объект можно просто отрендерить на прозрачном фоне и затем наложить на белый, то как быть с его отражением?

Рассмотрим способ, как можно отрендерить объект и его отражение на белом фоне.

  1. Для начала подготовим сцену.
  2. Возьмем любой объект и разместим его на отражающей плоскости.

В окне Properties во вкладке Material в панели Settings для материала объекта назначим Pass Index равный 1.

  1. Теперь создадим маску, по которой объект с отражением можно будет отделить от фоновой плоскости.

Для этого выделим объект и отражающую плоскость и создадим их копии:

shift+d — Ввод

После чего переместим их на второй слой:

m — 2 — Ввод

Переключимся на второй слой. Для копии объекта, которую мы сюда поместили, назначим светящийся материал с силой 1.

В окне Properties во вкладке Render Layers:

Настроим рендер первого рендер-слоя с именем RenderLayer. Отметим в Layer для рендера только первый слой сцены и исключим в Exclude воздействия второго слоя. Также установим галочку Material Index.

Нажатием на плюсик создадим новый рендер-слой. Назовем его ReflectionMask. Для него все наоборот — в Layer отметим для рендера только второй слой сцены, а в Exclude исключим влияние первого. Также для второго рендер-слоя снимем галочку Use Environment, чтобы исключить освещение сцены, оставив только собственный свет Emission объекта. В панели Passes отметим для рендера дополнительно проход Glossy — Direct.

  1. Переключимся в режим Compositing.

Отрендерим оба рендер-слоя, чтобы визуально контролировать работу со слоями через нод Viewer.

Итак, у нас есть изображение объекта на фоне и черно-белая маска, по которой можно отделить отражение объекта от фона.

Для начала отделим от фона сам объект.

Добавим нод ID Mask:

shift+a — Converter — ID Mask

Соединим выход IndexMA нода Render Layers (Render Layer) со входом ID Value нода ID Mask

Для нода ID Mask установим галочку AntiAliasing и выставим индекс материала Index равный 1. Это то самое значение, которое мы выставили для материала объекта в Pass Index.

С помощью этого нода мы получили черно-белую маску для отделения объекта от фона.

Объединим обе маски, для объекта и для его отражения, в одну.

Добавим нод Mix Color:

shift+a — Color — Mix

Соединим выход Alpha нода ID Mask со входом Fac нода Mix и с нижним входом Color того же нода Mix.

Соединим выход Glossy Direct нода Render Layers (ReflectionMask) с верхним входом Color нода Mix.

Кажется, что здесь проделана напрасная работа, ведь у нас уже есть черно-белая маска, полученная на выходе Image нода Render Layers со второго рендер-слоя ReflectionMask. Однако это не так. Маска, полученная напрямую со светящегося материала, не стопроцентно белая, из-за чего при дальнейшем смешивании по такой маске результат получается «замыленный». Это будет хорошо смотреться для отражения, но плохо для самого объекта. После же проделанных действий мы имеем стопроцентно белую маску для объекта и размытую для его отражения, что в конечном итоге даст хороший результат.

Инвертируем маску — цвет маски для вырезаемого объекта должен соответствовать черному.

Добавим нод Invert:

shift+a — Color — Invert

Соединим выход Image нода Mix со входом Color нода Invert

Получив нужную маску, отделим объект с отражением от фона.

Добавим нод Set Alpa

shift+a — Converter — Set Alpha

Соединим выход Color нода Invert со входом Image нода Set Alpha

Добавим нод Alpha Over

shift+a — Color — Alpha Over

Соединим выход Image нода Set Alpha со входом Fac нода Alpha Over

Соединим выход Image нода Render Layers (Render Layer) с верхним входом Image нода Alpa Over

У нижнего входа Image нода Alpa Color выставим Alpha белого цвета в 0

Комбинация этих двух нодов добавляет в созданную нами маску фактор прозрачности (нод Set Alpha) и по нему производит смешение белого цвета с изображением объекта и его отражением (через нод Alpha Over) — фон заменяется на белый цвет.

Выход Image нода Alpha Over соединим со входом Image нода Composite для получения конечного результата рендера.