Погружение в ментал (шейдерный материал mental ray)
Доброго времени суток!
В этом уроке я хочу показать структуру и использование шейдерного материала mentalf ray. Покажу использование и назначение основных шейдеров для этого материала и эффекты, которые возможны в Mental Ray. Урок носит справочно-обзорный характер и несет цель раскрыть «прелесть» шейдерного материала в MR, без глубокого описания каждого использующегося шейдера (которым я посвящу отдельные уроки). Материалы предназначены для работы в Max 2008 и выше, с установленным по умолчанию рендером Mental Ray, отдельно помечены пункты, где пример дается с использованием дополнительных шейдеров. Урок комплектуется файлами сцен.
Основным материалом MR является одноименный материал mental ray. При назначении мы получаем набор из пустых слотов для назначения шейдеров различных свойств:
также можно осуществить «подключение» mental ray к стандартным материалам 3D max, и готовым материалам Mental Ray, через закладку в свойстве материалов «mental ray Connection»:
свойства которые уже используются помечены замочками, но это не мешает нам их поменять при надобности, разблокировав замок и установив нужное в соответствующий слот.
Опишу каждый слот отдельно и выборочно наиболее актуальные шейдеры, которые можно назначать в них.
Первая группа шейдеров «Basic Shaders» описывают сам материал.
Surface – поверхность, служит для формирования внешнего вида объекта.
Shadow - формирование отбрасываемых теней.
Как правило для получения корректной картины в эти слоты назначается один и тот же материал с зависимыми по изменению параметрами (instance), но не кто нам не запрещает изобразить физически невозможный материал например камень у которого тень как у стекла, для этого в слот Shadow нужно поставить шейдер прозрачного материала, а в Surface шейдер нужного нам материала:
Посмотрим основные материальные шейдеры для поверхности и затемнения:
- Ambient/Reflective Occlusion
Принцип данного материала в уроках уже рассматривался, посмотрим, что реализовано в mental ray.
Если назначить «чистый» АО в качестве поверхности на материал, получим расчет сцены с имитированием глобального освещения но без учета диффузного и других свойств материала.
настройки шейдера:
samples: качество семплирования , чем больше - тем лучше, но замедляется рендер
bright: цвет лучей источника света
dark: цвет неосвещенных поверхностей
spread: определяет качество теней при 0 (расчет одним лучем) тени контрастные, при 1 (освещение лучами со всей полусферы) тени мягкие.
Max distance: расстояние, которое берется в расчет теней вокруг объекта, при 0 считается вся сцена.
Reflective: флаг переключающий режим Ambient Occlusion / Reflective Occlusion
Type : 0 – режим АО, 1 – АО с учетом окружения (цвет либо карта), 2 – режим когда цветовой гаммой указывается отклонение нормалей относительно мировых координат, 3- тоже что и 2 только относительно камеры.
Return … alpha – при рендере дополнительно в альфа канале строиться карта АО
Как правило, чистый AO используют только для получения масок изображений и дальнейшего использования их в других программах.
В Максе шейдер АО можно назначать на значения Ambient материалов (если он есть) или использовать смешивание с диффузным отражением для имитации глобального освещения(можно устанавливать на параметр Bright карту HDR).
На рисунке сцена с одним источником света (omni) и добавленным АО во все Diffuse материалов (дополнительно наложена HDR).
GI и FG отключены (семплирование 1, 16, на АО 64) , рендер длится около 2 минут - способ подходит для «быстрой» имитации GI
- Car paint (шейдер и отдельный материал)
Исходя из названия это имитация автомобильной краски.
В настройках шейдера огромное количество параметров.
Параметры диффузного цвета разделены на четыре части. Базовый (Base color), окружающий (Ambient), а так же дополнительно цвет на освещенных гранях напротив камеры (Light facing color) и цвет поверхностей находящихся под большим углом к камере (Edge Color). Цифровые параметры регулируют (образно говоря) масштаб применения этих цветов.
Далее идут настройки для имитации поверхности «металлик» - закладка «Flakes»
Flake Color это цвет вкраплений в краску, которая и создает нужный эффект далее идут настройки их количества, масштаба применения и размера, хочу отметить, что отдельно можно отрегулировать их отражающую способность «Flake Reflection»
Ниже закладки с настройками рефлексии и глянца.
Итак, сделав предложенные диффузные цвета одинаковыми(с небольшим различием по яркости), мы получим обычную глянцевую краску автомобиля, а настроив каждый цвет отдельно – краску «хамелеон» или «перламутр», добавляя Flakes’ы, имитируем «металлик» (если металлик не нужен, Flakes’ы покрасьте черным)
на данном материале впечатляет скорость работы рендера.
- DGS material.
Так называемый диффузный, глянцевый и отражающий материал. Из названия уже понятно зачем он нужен. Настройки:
Diffuse – цвет материала
Glossy Highlights – цвет бликов
Specular – отражаемый цвет
Shiny - блеск
Transparency - прозрачность
IOR – коф преломления
В отличии от стандартного материала, DGS свои функции выполняет по всем физическим законам, например, чем дальше объект от отражающей поверхности, тем он более размазан (регулируется параметром блеска).
Стоит отметить, что иногда в областях блеска сильно видны неоднородности, исправляется это изменением количества семплов на пиксель в настройках рендера. На рисунке видны отличия одной и той же сцены и параметры, приводящие к этим результатам:
- Glow (lume)
Шейдр для создания светящихся поверхностей. В настройках прост – устанавливаем цвет поверхности и диффузного отражения, потом указываем цвет которым он будет светиться (Glow) и яркость свечения (Brightness). Галка «Mix diffuse» заставляет смешивать цвет поверхности и цвет свечения. Параметр прозрачности думаю актуален только в анимации, чтобы «убрать» объект со сцены из контроллера.
Особенность : материал будет работать только с включенным Final Gather (F10 >> Indirect Illumination >> Final Gather> Enable FG)
- Facade
Шейдр наносит растровый рисунок на видимую часть объекта, к которому применен данный материал, при этом рисунок будет всегда повернут к камере, независимо от расположения объекта. Геометрия объекта полностью не учитывается, а вот расчет световых эффектов накладывается согласно форме этого объекта. Такое свойство можно использовать при создании спец эффектов и низко полигональном проектировании.
Например вы хотите сделать ролик как инопланетяне высаживаются рядом с вашим домом :-). Фотографируете дом, делаете сцену, на которой дом заменит параллелепипед, ставите камеру на сцене в то место откуда делалось фото (нужен тот же ракурс). Потом применяете к параллелепипеду материал с поверхностью Façade и растром фото дома. Рисуете НЛО и опускаете его рядом с домом. Тень от НЛО ляжет на растровую картинку не прямо, а с учетом углов и ориентации параллелепипеда.
- SSS Physical Material (mi). Шейдер и отдельный материал.
Очень привлекательный шейдер с точки зрения физики, но крайне ресурсо-емкий, имитирует подслойное рассеивание света. В 3D графике материалы представляют собой каркасы обтянутые пленкой материала и как правило прохождение света в толще материала не учитывается – только на входе и на выходе. Материалы на основе данного шейдера просчитывают проникновение фотонов в толщу материала и дальнейшею их судьбу. На рисунке представлен материал на поверхность которого падает свет и вызывает свечение в толще объекта:
настройки шейдера:
material : в данный слот назначается шейдер материала, для которого будет рассчитываться эффект подслойного рассеивания (как правило glass или DGS.
Transmission цвет или карта, которая будет фильтровать входящий в материал поток света (если цвет = #000000, свет в материал не будет проникать)
IOR коф преломления материала.
Absorption coeff - коф. Ослабления (поглощения) света в толще материала. Минимальные значения (но не ноль) – свет слабо поглощается, значение =1 – поглащение 100%. Коф применяется из расчета миллиметра глубины проникновения, не учитывая какая система измерения установлена в редакторе.
Scattering coeff - коэффициент рассеяния света в толщине материала параметры аналогичны.
Внимание эти два коэффициента указываются отдельно для каждой составляющей цвета (RGB) при этом по умолчанию синий цвет имеет преимущество. На коэффициенты можно устанавливать 3d процедурные карты, для имитации внутренней структуры материала. Правда в Max 2008 вероятно есть с этим ошибка, рендер объекта с материалом sss и 3d картой на рассеивании, проходит через раз (просто виснет на определенном проценте выполнения), в 2009 максе – проблем нет.
Сцена с таким эффектом, только для 2009 макса.
scale conversion - параметр для масштабирования единиц измерения, поскольку в шейдере расчет идет на милиметры, а сцена может быть в других единицах. Если сцена в сантиметрах, то он равен 10, если в метрах = 1000.
Scattering anisotropy – анизотропия 0 нет, 1 и (-1) анизотропия 100% для направления внеред\назад.
Depth - толщина слоя в мм для точного расчета физики распространения света.
Далее параметры семплирования фотонов и указание источника света, от которого идет расчет эффекта.
Важно: объекту с данным материалом, должна быть назначена каустика, рендеру включен режим каустики, и источник света тоже должен участвовать в расчете каустики. При расчете эффекта могут возникать артефакты в виде отдельных фотонов в слое материала который находиться за пределами величины Depth, это обусловлено включением упрощенного алгоритма просчета для данной области. Для точной картины воспроизведения картины рассеивания необходимо для материала и источника света назначать большое количество фотонов каустики и GI (если включен GI), соответственно требуется много памяти, на моей машине масштабные сцены заканчиваются сообщением о нехватке ресурсов, на машинах х64, думаю с этим проблем не будет.
- Metal (lume) – только шейдр.
Имитирует поверхность металла , настройки простейшие- цвет поверхности, коэффициент отражения, цвет фильтра отражения, флаг использования размытия отражения и настройки размытия. На рисунке два разных металлических шара с примерами настройки.
- Glass (lume) – только шейдр.
Имитирует стекло
Параметры:
Surface material - материал поверхности. В данный слот может быть назначен шейдер, описывающий поверхность, например Ocean(lume)
На рисунке к ровной плоскости назначен материал стекла с шейдором Ocean, который имитирует волны.
если нужна ровная поверхность – оставляем слот пустым .
Diffuse – цвет самого стекла
Reflectivity – отражение (0-1)
Transparency – прозрачность (0-1)
Transparency Tint – судя по заявлению Lume( в мануале к шейдору), этот параметр позволяет более реалистично засчитать проходящий через стекло цвет, и позволяет смешать его с дополнительным user color.
Blur Transparency – устанавливает размытее прозрачности
Blur Reflection - устанавливает размытее отражений
Edge Transparency – позволяет руками настроить прозрачность поверхности в зависимости от угла зрения
Edge Shadow – позволяет настроить тень от объекта, а точнее пятно от эффекта каустики.
Translucency – одностороння прозрачность – настройка прозрачности на гранях, нормаль которых повернута от камеры.
Шейдр назначается в слот материала, но при использовании эффекта каустики для данного материала требует назначения шейдера фотонов в соответствующий слот материала ( подробности ниже).
На этом с основными шейдерами поверхности закончу.
Переходим к группе шейдеров Caustic & GI.
В слот Photon, как правило устанавливается шейдер фотонов: «Photon Basic» для прозрачных материалов или «Transmat Photon» если фотоны нужно принудительно убрать.
В настройке шейдера Photon Basic указываются основной цвет материала, цвет отражения и прозрачность, на основании которых вычисляется цвет фотонов прошедших через материал и цвет фотонов отразившихся от него. Также указывается коэффициент преломления материала.
На предлагаемом рисунке три материала: 1 - стекло с генерацией фотонов, 2 – материал 3D max Raytrace, но в выключенной генерацией фотонов и 3 – материал без поверхности и тени, но генерирующий фотоны каустики.
внимание : для того чтобы от объекта генерировалась карта фотонов каустики, необходимо в настройках объекта (вызывается через правую кнопку мыши) указать генерирование каустики:
Следующий слот «Photon Volume» - генерация объемных фотонов.
Сюда назначается шейдер для генерирования видимых фотонов, которые можно наблюдать внутри прозрачного объекта - «Parti Volume Photon», но для запуска алгоритма просчета света в объеме объекта, необходимо установить в слот «Volume» группы «Extended Shaders» шейдер «Parti Volume» (тем самым мы запускаем алгоритм ray marching).
Оба шейдера имеют абсолютно одинаковые параметры, но Parti Volume Photon применяется для фотонов (будет виден каждый фотон), а «Parti Volume» для всего объекта (что-то вроде объемного света для источника света, но внутри объема).
Примечание «Parti Volume» наверное должен называться «Party Volume», но что есть то есть :-).
Основные параметры:
Mode режим просчета, если 0 то эффект считается для выбранного источника света, а 1 для всей сцены без источника света. По идее должно быть 2 для всех истточников….. но проверил…. Не работает.. тоже что и 0.
Scatter color фильтр цвета заполнения либо для фотонов либо для всего объекта, в зависимости от шейдера.
Extinction – параметр показывает ослабление эффекта с глубиной
Потом идет группа параметров функции для описания поведения фотонов при прохождении материала на глубину Height - r,g1,g2 и Non Uniform,
последние параметры указывают качество семплирования и используемый источник света.
Примечание – привожу только поверхностное описание данных шейдоров, так как из-за их сложности им нужно посветить отдельный урок (работа алгоритма ray marching)
Пример работы шейдеров в стекле:
а вот вместо стандартного шейдера фотонов (Photon Basic) назначен шейдер с эффектом дисперсии prism_photon о котором я писал в первом уроке.
несмотря на то что описанные эффекты работают только в объеме конкретного объекта, допускается применение шейдеров для вложенных объектов.
На сцене, приведенной ниже, шар помещен в куб, которому в качестве поверхности назначен прозрачный материал и шейдер Parti Volume в слот Volume. Эффект Volume минимизирован (чтобы не мешал) а эффект Photon Volume максимизирован. Справа находиться источник света, от которого мы видим объемный эффект каустики от сферы.
вот еще сцена с призмой и шейдером prism_photon, вместо стандартного шейдера фотонов
каждая точка это один фотон. Размер отображаемых фотонов устанавливается в настройках рендера (F10), закладка Indirect Illumination, раздел Volumes.
а количество самих фотонов в настройках источника света закладка в свойствах - mental ray Indirect Illumination.
Количество фотонов должно измеряться миллионами, тем самым использовать эффект отображения объемных фотонов для больших сцен проблематично – нужны довольно мощные машины. На своей машине (два проца по 1,8Ггц и 2 Гб ОЗУ) я не смог приблизить эффект к визуально натуральному и имитировать пыльную комнату , где бы были видны все отраженные, преломленные и прямые лучи света. Рендер выдал ошибку нехватки памяти, после 30 минут генерации фотонов.
Но просто объемным заполнением мы пользоваться можем, применяя карты для фильтрующего цвета, можно получать красивые эффекты для свой сцены с объемным заполнением материалов:
Environment – в данный слот назначается шейдер Environment(3dsmax) в котором можно указать растровую карту которая будет учитываться как окружение для объекта на который назначен данный материал. Это удобно когда визуализируется отдельный объект на однотонном фоне, но необходимо подчеркнуть свойства рефлексии для поверхности, а отражать на сцене собственно и нечего.
Остались не рассмотренными два слота под шейдеры: Bump и Displacement оба имитируют неровности на прямых гранях объекта.
С первого взгляда эффект от применения шейдоров похож, но Bump просто накладывает маску теней и при больших значениях эффекта работать будет некорректно, так как видимый контур не меняется, а Displacement имитирует настоящее смещение. Урок по Displacement в mental ray уже есть, а на Bump останавливаться не буду, он довольно прост и работает аналогично как и в стандартных материалах.
Для примера работы обоих шейдоров - сценка, слева шар с нанесенной текстурой на диффузное отражение, справа этаже текстура применена на Bump , в середине на Displacement.
На этом обзор по материалам и шейдерам mental ray закончу, позже отдельно сделаю урок для GI и АО в ментале, и возможно объемному заполнению.
В заключении хочу отметить то, что в слоты для назначения шейдеров, можно назначать карту mix , и смешивать пропорционально или по функции несколько шейдеров. Например, чтобы получить материал для стекла, использующегося в бижутерии, с отражающим покрытием- можно смешать шейдер Стекла и Автомобильной краски (хамелеон) по функции спада. Так же можно получить материал для фото и оптических линз с антибликовым покрытием.
С уважением КАА