Подслойное рассеивание (SSS) в mental ray

Урок по практическому использованию модели подслойного рассеивания света (SSS) в mental ray. Проводится на базе 3D Max. Желательно использовать 3D Max 2009 и выше. Будет разобран материал SSS Physical Material (mi) и возможности его применения, создание материалов с эффектом SSS и общие принципы их настройки, предложены табличные данные с коэффициентами.

Вступление

В компьютерной графике наиболее широко используется модель двунаправленной функции распределения рассеивания (BSDF), которая включает поверхностное рассеивание (BRDF) и сильно упрощенное подповерхностное (BTDF). Такая модель не совсем корректно учитывает прохождение света в толще материала, но вполне подходит для быстрой имитации эффекта.

В 2001 году Henrik Wann Jensen, представил новую модель освещения BSSRDF  ( двунаправленная функция распределения поверхностного рассеивания ). Суть новой модели заключается в том, что падающий на поверхность свет может выйти из модели претерпев преломление (однократное рассеивание) и может выйти из модели со смещением претерпев ряд переотражений и отклонений.

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

В mental ray (рассматриваем с точки зрения работы в 3D MAX ) функция BSSRDF реализована в группе материалов SSS ( Subsurface Scattering in Surfaces ) которые можно разделить на группу нефизических (SSS Fast…) и физического SSS Physical Material (mi).

Первые обсчитываются быстрее, но менее точны, а второй максимально физически корректен. Он и будет рассмотрен.

Наглядно  продемонстрирую эффект, который мы будем добиваться в нашем уроке:

Посмотрите на  место падения луча на гранит:

Кроме ярко-освещенной точки никаких других световых эффектов не наблюдаем, про такой материал можно сказать что у него нет подслойного рассеивания в том виде, который бы нас интересовал и создать такой материал труда не составит.

Теперь фото падения луча на мрамор и кальцит:

Теперь  явно видно прохождение света в объеме минерала с отклонением от изначального направления. Это и есть эффект подслойного рассеивания и этот эффект будет создан с помощью SSS Physical Material mi.

 

Physical Material mi

Свойства материала SSS Physical Material удобнее будет понять на практическом примере.  Смоделируем светильник, у которого источник света будет геометрически изолирован, а свет будет выходить наружу по световодам из материала на основе SSS.

Светильник типа ночник:

Источник света помещен в герметично закрытый корпус, из которого выходят четыре световода (рожки), которые будут выводить свет наружу, рожки сделаем загнутыми, чтобы максимально осложнить распространение света.

На корпус назначаем любой непрозрачный материал. А рожкам-световодам SSS Physical Material (mi)

Первый слот Material – сюда назначается материал который будет отвечать за функцию BRDF, проще говоря, внешней оболочки материала, на которую потом будет добавляться эффект SSS.

Я назначил в этот слот стекло, так как световоды в основе своей прозрачны.

Использовался специализированный шейдер стекла Glass(lume).

Если нет шейдера подходящего для конкретной ситуации, то можно создать материал на основе любого другого материала и установить его сюда через Material to Shader.

Transmission – фильтр и яркость для SSS эффекта. Значение 0,5 по всем трем составляющим цветов не оказывает влияние на  результат , уменьшение или увеличение веса составляющих делает эффект ярче или темнее, но в любом случае на рассеивание и поглощение не влияет.

Index of refraction – коф преломления материала.


Ближе к  концу урока я дам табличку со значениями четырех основных параметров подслойного рассеивания для самых распространенных материалов


Absord. Coeff -  Коэффициент поглощения света, величина обратно пропорциональная пробегу фотона в толще материала до полного поглощения. Чем меньше величина, тем дальше свет проникнет в материал.

Scatter. Coeff. – Коэффициент рассеивания света в материале. Чем больше значение, тем сильнее материал рассеивает свет внутри себя.

Нужно не путать эти понятия, поглощение снижает интенсивность света с расстоянием, а рассеивание, не снижая интенсивности распределяет свет внутри объема материала, при этом подсвечивание объекта изнутри возрастает.  Оба коэффициента даны в трех значениях для каждой составляющей цвета – R G B.

Scattering anisotropy – Анизотропия рассеивания, принимает значения от -1 до 1.  При положительных значениях рассеивание происходит вперед ( по ходу движения фотона), то есть у фотона больше шансов выйти с противоположной освещенной стороне материала и «подсветить» теневую сторону объекта (Рис №1). При отрицательных значениях происходит обратное рассеивание, то есть дополнительно подсветиться область рядом с местом падения света(Рис №2). Анизотропия равная нулю, равномерно распределит рассеивание во все стороны (Рис №3)

Далее в настройке материала идут вспомогательные параметры, о них позже, а пока заставим работать ночник.

Для работы физического SSS материала необходимо включить непрямое освещение, удобнее использовать Каустику.

- В свойствах объекта (рожки) ставим галку для участия в расчете каустики

- Включаем каустику в настройках рендера

Все параметры, кроме слота для материала оставляем без изменения, так как предлагается редактором по-умолчанию. Но для наглядности картины уменьшим коэф. рассеивания до 0,01

Свет от источника света (ИС) я умышленно сделал светло-голубым.

Можно делать первую визуализацию

Уже сейчас видна работа материала подслойного рассеивания, рожки проводят свет, но пока не в той мере, как хотелось бы.

Очевидно, что нужно уменьшить коэф поглощения. Ставим минимальное значение (Absord. Coeff  = 0.001 0.001  0.001  ) это означает что свет в полном спектре будет распространяться с минимальным поглощением:

Свет закономерно распространился дальше.

Сравните изменение цвета излучаемого света. Во втором случае у нас явно начала пропадать синяя составляющая спектра. Происходит это из-за того, что учитывается  поглощение света  по составляющим цветам – синий поглощается больше, красный меньше. Чем больше пройденное расстояние в материале, тем это больше заметно. При настройке материала, нужно учитывать этот факт и корректировать значения с учетом цвета.

Продолжим улучшать результат.

Поглощение  сделали минимальным, а свет пока не хочет бежать по всему объему рожек. Все дело в том, что рожки светильника кривые, и чтобы заставить свет «завернуть за угол» нужно повысить его рассеивание в материале. Увеличиваем параметр рассеивания  до 0,5 (Scatter. Coeff = 0.5  0.5  0.5 )

Почти совсем хорошо, но слишком хорошо видна граница между светом по линии распространения и боковому рассеиванию.

Посмотрите на коэф анизотропии, по-умолчанию он равен 0,8, грубо говоря 80% света проходит в материале прямо и только 20% отклоняется «за угол». Очевидно что нужно уменьшить анизотропию рассеивания, я уменьшил до 0,4

В результате получился материал с минимальным поглощением света и сильным равномерным рассеиванием.

После небольшой доводки получилось следующее:

Коэф. Поглощения для зеленой составляющей цвета Absord. Coeff (G)  выше, чем для красной и синей составляющей, сделано это для поглощения зеленого и пропускания фиолетового спектра.

В итоге:

 Освещение стенки под светильником и окружающих предметов в идеале происходит за счет фотонов и за счет Final Gather. Но в старых версиях 3d max есть определенные проблемы с настройкой фотонов непрямого освещения (неустранимый цветной шум), в этом случае необходимо отключать прием каустики на предметах вблизи работы sss материала.  Проблема в max 2010 устранена.

  скачать сцену для 3d max 9 и выше.

В перечислении параметров я перепрыгнул через параметр Scale conversion, он служит для адаптации значений под единицы измерения сцены. Все коэффициенты рассчитываются на миллиметры и если сцена выполнена в других единицах, то здесь необходимо указать размер масштабирования:

Единица измер

Scale conversion

см

10

м

100

футы

304

дюймы

25,4

Также этот параметр можно изменять для достижения результатов, выходящих за рамки физически корректных, получения сверхпроводящих (свет) и сверхрассеивающих  материалов, для этого достаточно увеличивать масштаб. Правда установив  Scale conversion = 10, не нужно ожидать что материал в 10 раз дальше проведет свет, расчеты не линейные.

Depth – глубина проникновения. Объем объекта, к которому применен SSS Physical Material делиться на внутренний и внешний. Внешний объем начинается от внешней кромки объекта и на глубину Depth. Рассеивание здесь происходит максимально точно. В остальном объеме рассеивание рассчитывается по упрощенной схеме. На практике чем прозрачнее объект, тем желательнее увеличивать этот параметр. Цветные или отдельно висящие «шарики» внутри прозрачного объекта, явный признак недостаточной глубины.

Max samples – величина показывающая максимальное количество отклонений, отражений или преломлений фотона, после чего он перестанет учитываться. Чем больше это значение, тем более точным будет эффект, но потребуется больше места для карты фотонов и дольше будет производиться расчет.

Max photons – максимальное количество фотонов для расчета эффекта, увеличение количества сделает результат более качественным, но ресурсов будет расходоваться больше. Как правило, для окончательной визуализации нужно использовать значение от 3000 и выше.

Max radius – радиус семпла (площадки сбора фотонов) уменьшение делает расчет точнее, но требует повышения количества фотонов.

Lights – активация данной опции с указанием источника света (источников), привязывает эффект к выбранным ИС и не учитывает для остальных.

Все параметры рассмотрены.

Далее приведу табличку с параметрами для некоторых распространенных материалов. Рассеивание и поглощение даны общей цифрой для всех цветовых составляющих. В хелпе к 3d max  есть подробные значения для четырех материалов, полученных опытном путем разработчиками. Но найти такие значения для любого материала проблематично. Поэтому для трех цветов пишется одинаковый параметр, а более точно выравнивается после предварительной визуализации в зависимости от потребностей и взаимодействием с диффузной составляющей объекта.

материал

Absord. Coeff

Scatter. Coeff

Scattering anisotropy

Index of refraction

Парафин

1,01

0,216

0,2

1,2

Воск

0,5

1,5

0

1,3

Мед

0,16

0,012

0,1

1,3

Масло сливочное

0,285

3,02

-0,3

1,4

Мыло

0,56

1,78

-0,5

1,45

Сок апельсин

0,096

0,035

-0,2

1,3

Молоко

0,016

1,82

0

1,3

Кофе раствор

0,045

1,08

0,26

1,3

Шоколад твердый

2,087

0,145

0,6

1,1

Вазелин

0,25

0,23

0

1,4

Кровь свернувш.

5,2

0,18

0,46

1,1

Кровь жидкая

0,06

1,2

-0,2

1,3

Фарфор

1,3

4,2

0,6

1,5

Мрамор чистый

0,012

2,1

0,2

1,5

Мрамор слоистый

0,04

3

-0,3

1,5

Резина, Латекс

0,35

0,087

0

1,2

 

Порядок практической настройки SSS Physical Material, для материала данные на которого неизвестны

Покажу на живом примере:

На моем столе прописалась настольная лампа, устройство (в интересующем сейчас меня плане) следующее:

В металлической «воронке» находиться лампочка, а поверх воронки пластик, материал для которого я и хочу настроить

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

Из своего опыта и здравого (надеюсь) смысла нужно придерживаться следующего порядка:

  1. Создаем материал для внешнего вида нашего объекта, так как привыкли раньше. Я сделал на основе Архетектурно-дизайнерского:
  2. В слот Material ставим карту Material to Shader  и в единственный слот кидаем мышкой наш созданный материал:

  3. Transmission устанавливаем в 0,5  (128) для каждого цвета
  4. Коэффициент преломления придется найти, но, как правило жидкости 1,3 твердо-мягкие материалы 1,1 до 1,4 и твердые неорганические от 1,4 и выше.  Для пластика я беру 1,2
  5. Scattering anisotropy,  в твердых телах, как правило положительная, в жидкостях-суспензиях отрицательная. Пластик в моем примере однородный и твердый ставлю 0,6
  6. Scatter. Coeff  временно понижаем до 0,01
  7. настраиваем Absord. Coeff  до требуемого прохождения света в глубину материала, в моем примере это оценить сложно, пластик тонкий, но по опыту сразу ставлю 3,  но вообще необходимо будет сделать несколько предварительных визуализаций.
  8. настраиваем Scatter. Coeff  до требуемого расхождения света «в стороны» от основного направления светового потока, после трех предварительных визуализаций я остановился на 15

Физические характеристики настроили, закончим качественными для хорошего рендера:

  1. Увеличиваем Depth если хотим более качественный результат и готовы пожертвовать временем. В материалах с сильным поглощением Глубину не имеет смысла увеличивать, а в материалах близких по прозрачности к стеклу – наоборот. Я ставлю 3  - на всю толщину пластика в моей модели.
  2. Max photons Увеличиваем количество фотонов до 4000 -5000
  3. Max samples  Если у объекта очень сложная геометрия, то есть смысл увеличить этот параметр, но как правило оставляем по-умолчанию
  4. Max radius  - если после визуализации есть зернистость на материале, то увеличиваем, если нет, можно попробовать уменьшить.

Готово:

В результате наших стараний, кроме подслойного рассеивания, получаем более правильный переход от света к тени на окружаемых поверхностях с учетом цвета пластика (зеленая область на листе бумаги) и правильное смешивание со спектром света от ИС (Теплый фотометрический ИС, добавил желтого спектра на освещенную сторону пластика)

Еще пример для сравнения материала с SSS  и без него.

 

Использование процедурных 3D карт

При сильном желании и настойчивости с помощью SSS Physical Material и трехмерных процедурных карт можно имитировать довольно сложные материалы с неоднородной внутренней структурой ( визуально наблюдаемой). Надо сказать, что это занимает довольно много времени. При создании материала  все настраивается «на глазок» и требует кучи предварительных визуализаций, а время визуализации подскакивает на порядок.

Трехмерные процедурные карты есть смысл ставить для следующих параметров:

 

Несколько советов:

- На коэфф. поглощения и рассеивания в процедурках недопустимо использование черного цвета (0,0 по всем цветам), визуализация аварийно закончиться.

- Рассеивание лучше поставить большим и менять его в случае удачной картинки после настройки поглощения.

- Одинаково настроенную процедурную карту использовать для рассеивания и поглощения нецелесообразно, а вот  инверсию карты для второго параметра вполне нормально.

- Освещать подопытный объект несколькими источниками света.

В остальном советовать нечего, получение задуманного результата путем настроек карт на этих параметрах даже танцами с бубном не назовешь. Но хороший результат того стоит – универсальный материал с имитацией структуры объема.

Один из примеров:

Вот собственно и все. Кто-то может возмутиться- «А где же кожа?!»  Действительно, рядом с понятием SSS всегда создание материала кожи. Но создавать слоистую структуру кожного покрова физически точным методом совершенно непрактично, для этой цели есть специальный узкоспециализированный материал и все желающие могут поучаствовать на форуме Render.ru (ветка mental ray) в его обсуждении и принять участие в настройке.

Успехов!
С Уважением, КАА.
Kaa936@rambler.ru

736 0 850 106
38
2009-11-26
5/5 ЗЫ: А где же кожа?! ^....^
2009-11-26
+10
2009-11-26
5/5 Alex Kras мне всегда виши уроки как мана с небес.[quote=redCrocodile] [/quote]Я думаю принцип остается, кожа, мло парафин все с одного теста.
2009-11-26
Спасибо за Ваши уроки. Начал изучать ментал, сейчас они мне очень кстати!
2009-11-26
Отлично, вот если бы автор писал время рендера изображений, было бы вообще здорово.
2009-11-27
может меня будут тут пинать ногами, но я всетаки напишу здесь... в однои из пролых Ваших уроках так же был приведен пример использования ССС физикл материала, а именно в уроке, где про материалы и шейдеры.. так влт, там приложенный файл написано было под версию 2009 макса, у меня стоит 2009 и 2010 макс о всеми апдейтами, но файл открывается только в 2010... и при рендери выдает уйму ошибьок... если все оставить по-умолчанию, то вместо требуемого эфекта получается просто черный куб и волум-лайт.... когда удаляешь волум лайт , то одна ошибка убирается, но всеравно, что-то получается не так, как на рендерах в самом туторе.... не поможете в моей проблеме?
2009-11-27
Урок хорош, мне лично понравился. Но всё же не вижу смысла использовать SSS Physical Material (mi) если можно создать SSS c помощью SSS Fast Material и SSS Fast Skin Material(для кожи). Уж очень много ограничений у физической модели подслойного рассеивания... А к изучению кожи на форуме я ещё вернусь и всёх призываю поучавствовать :)
2009-11-27
Surface- это поверхность,а не слой. SSS-подповерхностное рассеивание.Очередной перевод хелпа,а не урок.
2009-11-27
Спасибо за урок)
2009-11-28
за табличку большое спасибо!
2009-11-28
5/5 Как всегда - актуально и качественно! И спасибо)
2009-11-30
5/5 впрочем, как всегда :)
2009-12-01
Отличный урок. Спасибо.
2009-12-01
ОТЛИЧНО х2! Давно хотелось разобраться, но не доходили руки. Спасибо!
2009-12-03
Классно. Эх жаль ковыряться не времени.
2009-12-04
Урок конечно классный, прояснил кое-что, но вот незадача... либо у меня корявые руки, либо что-то с компом - активно никакого результата.
2009-12-04
To Alex Kras, советую тебе найти все статьи Игоря Сивакова и внимательно их прочитать. Очень внимательно прочитать.
2009-12-04
Просто очередная лажа 1/1
2009-12-04
Leonidych (3D Work), а давай попробуем общаться чуть более культурно и без выраженного негатива, лично я буду признателен.
2009-12-05
Ладушки, постараюсь быть более сдержанным. Моё мнение, даже не мнение а убеждение - прежде чем писать урок следует разбираться в излагаемой теме на все сто. Ладно если это проскочит мимо ушей, а ведь может и навредить.
2009-12-06
Лично для меня, SSS материалы никогда не юзал. Но сейчас меня урок вдохновил, и то что-то получилось спустя пару часов ковыряний самому. Урок дал единственное - не бояться и экспериментировать. Хотя комп у меня часто глючит и не всегда понимаю - это макс с компол глюкнул, или мои мозги с рукам. Спасибо...
2009-12-10
Для критиков: Можешь лучше? Возьми и напиши урок лучше! Молодец автор! Так и держать. Уроки по менталу крайне необходимы. Благодаря Вам соскочил с иглы Врая.
2009-12-14
Кошмар я или совсем криворукий или все неправильно обьясняют, но у меня ни разу не получилось сделать рабочий ссс материал :D, по этому уроку в том числе )) Может ктото скинуть готовую сценку ?)
2009-12-17
2 Leonidych, пишите конкретнее, что не так если разбираетесь. кто просил сцену: [img]http://i029.radikal.ru/0912/db/442c27449cb5.jpg[/img] сцена под 2009 макс Ссылка для скачивания файла: http://ifolder.ru/15516920 у кого проблемы - пишите на почту, в конце урока есть. Чем смогу, помогу. на счет скорости. пока до нормального компа руки не доходят, то что выложено считалось на intel Atom N270 16 минут, без ссс 4 минуты. но на нормальных компах конечно на порядок быстрее будет. позже как будет возможность положу нормальную сцену, или здесь или в форуме
2009-12-27
5|5 Спасибо!
2010-01-05
Отличный урок. Спасибо)
2010-01-09
Хм, такое ощущение что в 2010 были внесены какие-то изменения, прилагаемые сцены не работают должным образом... Подробнее посмотреть пока не успел.
2010-01-09
Да, к сожалению выяснилось что в 2010 64-бит (не в курсе как дело обстоит с 32-битной версией) есть баг, предположительно в subsurface.dll который "ломает" работу шейдера SSS Physical. Эта инфа с зарубежных форумов ( http://forum.mentalimages.com/showthread.php?t=5778 ) . Так что чтобы заставить этот шейдер работать в 2010 прийдётся ждать хотфикса или что более вероятно - уже выхода МАКСа 2011. :( Тем не менее спасибо за хороший урок! :)
2010-02-19
Ноль на массу, нифига не получается. А то что я скачал, сценку, так вообще черное рендерит..
2010-03-17
Спасибо за урок, с такими знаниями вполне можно браться за дизайн светильников в ключе LE FUTURE, которые в основном дают мягкое свечение за счет прохождения и рассеивания света через пластик или хромированное стекло... прикрепленная сцена рендерится отлично в Максе 2009.. автору респект и творческих успехов =)
2010-04-09
Переделайте урок под 2011 макс :(
2010-05-05
[quote=Qwas] Переделайте урок под 2011 макс :( [/quote] О чем вы? все в силе остаётся. что в 2009, что в 2010, что в 2011. З.Ы. Единственно замечу, некоторые шейдеры ментала отключены, например такие как DGS и Dielectric. Но это решаемая нестыковочка)))
2010-07-03
Клевый урок! побольше таблиц)) хорошо когда табличные данные используя получаеш реальную картинку как в жизни, типа в доме 5 лампочек, воткнул в сцену 5 лампочек и по таблице ввел люксы люмены и прочее, и РЕндериш спокойно)) правда надо сначала настроить ментал. если есть то поделитесь плиз пресетами ментала, у вас их наверно много bairkoff@ya.ru))) ментал супер, но иногда приходится и в вирей ходить)))
2010-07-16
нармально
2011-03-10
Век живи, век учись. Спасибо о чень позновательно.
2011-08-23
В принципе мне все было понятно до момента "Создаем материал для внешнего вида нашего объекта, так как привыкли раньше."... как вы создали материал на основе arch/des ? Я так понимаю что вы кидали материал SSS в mental rey conection или я не прав, я в общем на этом этапе полностью запутался. Если я кидаю SSS в mental rey conection, то материал мною созданый затирается, приходится создавать в SSS, а это уже не как обычно... или быть может есть какой то способ сохранять материал. Не могли бы вы подробно расписать свой пример. Я уже как только ни делал, но так как вы еще не разу )). Если я делаю например так : 1. создаю материал на основе SSP 2. в нем в слот material кидаю material to shader. 3. Затем создаю arch/des пластиковый материал. 4.А уж потом в material to shader в слот material кидаю созданный arch/des пластиковый материал, то материал вроде как получается, но накинуть я его не могу на модель. 5. Потом немного подумав накинул этот материал на новый arch/des в color, чем черт не шутит... ну вобщем сами понимаете, полная неразбериха, он применился, но эффекта нет, получился просто пластиковый светильник без рассеивания. Это только одна из попыток ))). В общем на основе SSP материала и накидывании на него glass и прочего эфект радует, но вот на основе arch/des у меня стабильно ничего не получается.
2012-11-12
Красота!
2013-07-13
Уроком очень доволен!) Намучился жутко с разблокировкой шейдера "Glass" (3d max 2013). А в целом очень полезно всё и подробно))) Есть только одно маленькое "НО". Автор использовал в настройках сцены единицы измерения "1 Unit = 1 Unches". По-моему, корректнее делать сцены с юнитами равными миллиметрам. Ну это, как говорится, личное дело каждого.
RENDER.RU