Рендер объекта на прозрачном фоне с тенями в Corona Renderer

10 января 2016 / 3 комментария

Для работы часто бывает необходим ренедер какого-нибудь объекта, чтобы в последствии наложить его на какой-либо фон и использовать в макете.
Сегодня решил описать процесс, как я делаю рендеры объектов на прозрачном фоне с сохранением теней в 3ds max и Corona Renderer. Постарался изложить все очень подробно.

Для примера вот такая несложная сцена:

Автомобильный диск в Corona Renderer

В сцене 2 объекта — диск и пол-подложка (обычный плейн без толщины), освещение — HDRI карта, положенная в стандартный Environment (меню Rendering — Environment), карта для HDRI — Vray HDRI
Карта Vray HDRI для освещения сцены в Corona Renderer

Материал для диска настраивать в этот раз не будем, а возьмем вот тут

Для пола-подложки применен материал CoronaShadowCatcherMtl.
Материал по умолчанию имеет нейтральный серый цвет и выглядит как обычный VrayMtl или CoronaMtl.

Именно при помощи CoronaShadowCatcherMtl можно отрендерить объект на прозрачном фоне с сохранением отбрасываемых теней. Для этого его нужно немного настроить.

Для начала расскажу о том, какие параметры содержит данный материал.
Настройки материала Corona Shadow Catcher Material

Основной свиток настроек — Matte/Shadow.

В пункте Enviro/Backplate задаем цвет или карту для материала.
Здесь нужно заметить, что сам объект с материалом CoronaShadowCatcherMtl ведет себя также, как любой другой объект сцены, а именно отражается в других объектах, дает рефлексы. Поэтому назначенный ему цвет будет привносить эффект в материал нашего автодиска. Пока этого не заметно, поскольку материал нейтральный серый (128, 128, 128)
На изображении ниже в Enviro/Backplate применена карта Bitmap.
Настройки материала CoronaShadowCatcherMtl

Это очень удобно, поскольку основное назначение этого материала — возможность сохранения объекта с альфа-каналом и последующее использование в определенном окружении, здесь-то и можно задать основной цвет этого окружения, чтобы объект наиболее реалистично вписался.
Например, наш объект будет использован в каком-то сине-фиолетовом окружении, задаем нужный цвет в Enviro/Backplate:
Использование цвета в настройке материала Corona Shadow Catcher Material

Здесь, я думаю, все понятно.

Следующий пункт настроек Projection Mode (Режим проекции).
Эта настройка задает результат отражения для вторичных лучей, которые попадают на объект с данным материалом. Если в Enviro/Backplate установлено изображение или цвет, то здесь устанавливаем Screen projection onto geometry, если в качестве фона используется панорамное изображение, то Enviro projection onto geometry.
В нашем случае, это Screen...

Дальше основной пункт настроек Alpha mode (Режим альфа-канала). Этот пункт задает, каким образом объект с материалом CoronaShadowCatcherMtl будет отображен в альфа-канале.
Здесь три режима — Always solid (Всегда «видимый») — объект с материалом CoronaShadowCatcher Mtl будет виден в альфа-канале, как и другие объекты. Always transparent (Всегда прозрачный) — объект полностью исключен из альфа-канала. И For compositing — режим позволяет исключить объект из альфа-канала, но оставить падающие на него тени и отражения. Его и выбираем.

Режимы Alpha Mode в настройках материала CoronaShadowCatcherMtl

Настраиваем цвет Enviro/Backplate, запускаем рендер.
Здесь нужно заметить, что в режиме For compositing шумы в тенях уходят довольно долго, поэтому требуется значительно гораздо больше пассов.
Сохраняем изображение в tiff с альфа-каналом.

Сохранение изображения в формат TIFF с сохранением альфа-канала

Для того, чтобы сохраненные изображения были в той же гамме, при сохранении в Corona Virtual Frame Buffer нужно включить опцию Override и указать гамму 2,2.

Гамма 2,2 при сохранении в формат TIFF

Разница между двумя сохраненными изображениями очевидна:

Использование гаммы 2,2 при сохранении в Corona Renderer

Открываем изображение в Photoshop. В палитре Channels находим наш альфа-канал, средствами которого создаем маску для изображения.

Альфа-канал в палитре Channels в Adobe Photoshop

В принципе, рендер на прозрачном фоне с тенями готов.

Несколько слов об остальных настройках материала CoronaShadowCatcherMtl.

Свиток Reflection properties отвечает за свойства отражений объекта, к которому применен данный материал, другими словами, помимо отбрасывания теней на объекте с CoronaShadowCatcherMtl можно настроить отражения и также сохранить их в альфа-канале.

Настройка отражений для материала CoronaShadowCatcherMtl

Level — сила отражений (по умолчанию 0 — выкл.). Максимальное значение — 1.
Color — цвет отражений.
Fresnel IOR — коэффициент по Френелю. Чем выше, тем сильнее отражает под прямым углом.
Glossiness — Размытость отражений (Глянец.). Значение 1 — очень четкие отражения. 0,5 — достаточно размытые.

На изображении ниже продемонстрированы различные значения этих параметров:

Настройка параметров Reflections у материала CoronaShadowCatcher

Я забыл сказать о параметре Shadow amount из свитка Matte/Shadow.

CoronaShadowCatcherMtl значение Shadow Amount

По умолчанию его значение = 1. При увеличении существенных изменений не происходит, а вот при уменьшении (изображение 4) действие настроек свитка Reflection properties уменьшается.
Думаю, менять его значение не имеет смысла.

Как я уже говорил, действие свитка Reflections properties при режиме Alpha mode: For compositing сохраняет свою прозрачность в альфа-канале:

Прозрачность объекта с материалом CoronaShadowCatcher в альфа-канале

Также помимо отражений можно использовать карту Bump, поместив её в соответствующий слой:

CoronaShadowCatcherMtl слот для карты Bump

В постобработке я часто использую пасс Ambient Occlusion. Давайте выполним его и в этот раз, хотя это уже совершенно другая тема, но все же.

Пасс Ambient Occlusion (AO) в Corona Renderer

Пасс Ambient Occlusion в Corona Renderer осуществляется при помощи рендер-элемента CTexmap.
Этот элемент позволяет сделать рендер сцены с применением заданной текстуры. Например, Checker:
Corona render element CTexmap с текстурой Checker

Чтобы добавить этот элемент заходим в Render Setup (F10), далее выбираем вкладку Render Elements

Вкладка Render Elements в Corona Renderer

После нажимаем кнопку Add... и из списка доступных рендер-элементов выбираем CTexmap

Добавляем рендер-элемент CTexmap в Corona Renderer

В Material Editor добавляем карту CoronaAO, эту карту мы будем применять для всей сцены в рендер-элементе CTexmap.

Карта Corona AO

Карта Corona AO (Corona Ambient Occlusion Texmap) позволяет реализовать затенение поверхности с учетом близости геометрии. Грубо говоря, аналог карты Vray Dirt.

Созданную карту нужно поместить в слот Texmap в настройках рендер-элемента CTexmap:

Помещаем карту CoronaAO в CTexmap

После этого в Corona Virtual Frame Buffer доступен пасс CTexmap, который по окончании рендера мы можем сохранить и использовать при постобработке:

Пасс Ambient Occlusion в Corona Renderer

На радиус затенения влияет параметр Max distance в настройках карты Corona Ambient Occlusion Texmap:

Настройки карты Corona-Ambient Occlusion Texmap

По умолчанию он равен 1000, устанавливаем его на свой вкус, в зависимости от сцены.

Финальное изображение (после постобработки):

Финальное изображение

Надеюсь, все понятно.
Всех с праздниками, отличных рендеров!


По той же теме:

3 комментария

  1. Евгений

    21 ноября 2018
    /

    Спасибо!

  2. Дмитрий

    28 марта 2020
    /

    Спасибо! Очень помогло

  3. Вассилий

    26 февраля 2022
    /

    Благодарю Вас.

* - обязательные поля

Добавить комментарий