
Кривые Френеля и комплексный BRDF в Maya для V-ray
опубликовано в 3D + 2D Создал(а): Dorian L'even
Закон Френеля описывает то как отражается свет от поверхности в зависимости от угла обзора. Чем больше угол, тем больше света отражает поверхность, зеркальными могут стать даже матовые поверхности. Если мы сравним водную гладь и ламинат, то они будут преломлять свет по-разному – у них отличаются индексы преломления света IOR.
Чаще всего настройка материала ограничивается вводом IOR, регулированием значений Glossiness, Reflection и выбором подходящего BRDF. На самом деле это упрощенный способ, который не учитывает, что для некоторых веществ IOR описывается двумя числами - n и k, где n отвечает за преломление, а k - за поглощение света.
Чтобы в настройке материала сразу учесть и преломление, и поглощение света используем кривые Френеля, а стандартный Use Fresnel отключаем. На большинстве из пластиков разница не так заметна, они имеют белые блики, а поглощение света отсутствует.
В металлах эффект Френеля описывается сразу 3-мя кривыми для Red, Green и Blue. Они достаточно сильно отличаются друг от друга по форме, а значит, когда мы вводим одно общее значение IOR, например, для золота, то не учитываем, как преломляется и поглощается свет в других каналах подгоняя материал «на глаз».
В 3DMax для работы с кривыми удобно использовать Falloff с помощью которого можно быстро вручную настроить затухание в зависимости от угла обзора. Но в Maya все происходит чуть сложнее, необходимо использовать ряд нод для повторения того же результата:
1. Чтобы узнавать под каким углом находятся нормали по отношению к камере понадобится нода samplerinfo и ее параметр FacingRatio.
2. Нода reverse, чтобы инвертировать значения от FacingRatio, иначе кривые Френеля будут работать наоборот, повышая силу отражения на поверхности, нормали которой повернуты к нам.
3. Нода RemapValue - в ней мы будем строить сами кривые Френеля.
4. Изображение самих кривых, которые берем на сайте http://refractiveindex.info/, для России он закрыт, поэтому пользуемся известными средствами и качаем графики. Для металлов берем значения длинн волн Красного, Зеленого и Синего света.
Строим связи
1. Соединяем Facing Ratio (samplerinfo) c input X (reverse).
2. Output X кидаем на InputValue (remapValue).
3. OutputValue соединяем с Reflection color по отдельности на R, G и B если это пластик. В случае металла понадобится создать 3 ноды RemapValue по графику для каждого цвета и каждую кинуть на соответствующий канал RGB. Я взял график поликарбоната, который в находится выше в статье.
Чтобы каждый раз не создавать графики вручную команда therenderblog.com написала скрипт в котором достаточно ввести значение n и, если есть - значение k, в один клик создав ноду remapValue с нужной кривой Френеля. Она изначально перевернута и не требует использования ноды reverse. Для металлов идут сразу преднастройки и нужно только выбрать подходящий из списка, выделить VrayMtl и нажать Create – скрипт сам создаст нужную связь. Вам останется только выбрать подходящий Diffuse.
Скрипт имеет функционал под рендер Arnold и если у вас он не стоит в Maya, то при запуске выдаст ошибку. Если вы используете два рендера можете скачать оригинальную версию с сайта creativecrash.com. А для тех, у кого стоит только Vray качайте измененную версию, которая работает без Арнольда.
Комплексный BRDF
BRDF - это алгоритм по которому рассеивается свет на поверхности материала. В 3-ем V-ray есть 4 варианта:
Phong – Резкие блики, хорошо подходит для гладких поверхностей.
Ward – Размытые блики как у матовых поверхностей.
Blinn – Среднее между Ward и Phong.
GGX – Был добавлен последним, лучше отражения и регулируемое затухание блика.
Эти алгоритмы также не полностью учитывают рассеивание света и создают по большей части линейное затухание блика.
Разница в BRDF:
Для того чтобы создать комплексный BRDF, который ближе к реальности нужно использовать смешение 2-3 материалов, в зависимости от того для какого объекта вы делаете настройку. Для пластика может быть достаточно и 2-х, но для металла лучше создать 3 материала.
Создаем свой BRDF
1. Используем алгоритм выше и создаем материал с использованием кривых Френеля.
2. Дублируем основной материал два раза через Edit --> Duplicate --> With connections to Network.
3. Меняем значение Glossiness для каждого материала, например, у первого 0.6 у второго 0.8, а у третьего 0.99.
4. Создаем ноду VrayBlendMaterial для смешивания 3 материалов с разными значениями размытия блика и 2 ноды remapValue в которых строим графики смешивания второго и третьего материала с базовым. Строим по аналогии с кривыми френеля.
5. Материал с наименьшим значением Glossiness– кидаем на Base material. А два других на Coatmaterial 0 и Сoatmaterial 1.
6. Нам нужно смешать эти материалы в зависимости от угла нормалей к камере. Чем больше угол - тем зеркальнее поверхность. Если вы строили обратные графики как на скриншотах, то соединяйте inputvalue с FacingRatio. Outputvalue кидаете на 3 канала RGB AmountColor в VrayBlendMaterial для второго и третьего материала соответственно.
Сравнение материалов
Поликарбонат:


Выводы
Здесь вы сможете узнать подробнее о cоздании 3D видеороликов и анимации.