Подп. рассеивание

Simulates semi-translucent objects in which light rays enter, bounce around, then exit in a different place. Many organic and inorganic materials are not totally opaque right at the surface, so light does not just bounce off the top surface. Instead, some light also penetrates the skin surface deeply, and scatters around inside, taking on the color of the insides and emerging back out at a different location. Human/animal skin, the skin of grapes, tomatoes, fruits, wax, gels (like honey, or Jello) and so on all have subsurface scattering (SSS), and photo-realism really cannot be achieved without it.

Важно понимать, что подповерхностное и диффузное рассеивание – это одно и то же. Разница заключается в том, насколько далеко свет может диффузно рассеятся под поверхностью, прежде чем он поглотится или отразится обратно.

How It Works

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

Blender вычисляет подповерхностное рассеивание в два этапа:

  1. Сначала вычисляется облучённость (по другому – яркость) поверхности, как с лицевой стороны объекта, так и с обратной. Примерно то же самое происходит и при обычной визуализации. Во внимание принимается всё – Ambient Occlusion, Radiosity, тип диффузного шейдера, цвет источника света и так далее.
  2. На втором шаге визуализируется окончательное изображение, но теперь диффузный шейдер заменяется шейдером подповерхностного рассеивания. Вместо ламп используется вычисленная карта освещённости. Яркость точки поверхности вычисляется как «средняя» яркость окружающих точек. В зависимости от ваших настроек, рассматриваться может вся поверхность, и это немного сложнее, чем просто вычисление среднего значения, однако вам не стоит слишком беспокоится о лежащей в основе расчёта математике.

Вместо этого давайте посмотрим, что подповерхностное рассеивание делает с чёткими пятнами света.

../../../../_images/render_blender-render_materials_properties_subsurface-scattering_no-sss.jpg

Без подповерхностного рассеивания

../../../../_images/render_blender-render_materials_properties_subsurface-scattering_small.jpg

Малый радиус подповерхностного рассеивания

../../../../_images/render_blender-render_materials_properties_subsurface-scattering_medium.jpg

Увеличенный радиус подповерхностного рассеивания

../../../../_images/render_blender-render_materials_properties_subsurface-scattering_large.jpg

Подповерхностное рассеивание с очень большим радиусом красного

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

Если вы используете очень большое значение радиуса для цвета, он будет равномерно распределён по всему объекту.

Примечание

Scatter Radius

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

Включение подповерхностного рассеивания

../../../../_images/render_blender-render_materials_properties_subsurface-scattering_panel.png

Панель подповерхностного рассеивания. Подповерхностное рассеивание уже включено

  • Включите подповерхностное рассеивание, отметив галочку Подп. рассеивание.
  • В выпадающем списке сверху панели находятся различные предустановки. При выборе предустановки устанавливаются значения Радиуса, RGB-радиуса и показателя преломления. Остальные параметры не задаются (поскольку они, в основном, зависят от размеров объекта).

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

Параметры

Числовые ползунки регулируют степень рассеивания света:

Показатель преломления
Значение показателя преломления определяет спад падающего света. Более высокие значения означают более быстрый спад света. Этот эффект довольно тонкий и он всего лишь чуть-чуть изменяет функцию распределения. Путём изучения множества различных материалов мы установили, что в большинстве случаев хорошо работает значение в диапазоне от 1.3 до 1.5. Если вы точно знаете, какой материал собрались имитировать, смотрите раздел IOR Values for Common Materials.
Масштаб
The scale of your object, in Blender units, across which you want the scattering effect to take place. Scale of 1.0 means 1 Blender unit equals 1 millimeter, scale of 0.001 means 1 Blender unit equals 1 meter. If you want to work out what scale value to use in your scene, just use the formula: (size in Blender units)/(real-world size in millimeters)=scale.
Цвет рассеивания (альбедо)

Альбедо – вероятность того, что свет «выживет» при рассеивании. Если вы думаете о рассеивании как о фильтре, это – высота фильтра. Оно умножается на цвет поверхности. На практике всё это выглядит неинтуитивным. Альбедо должно быть равным цвету поверхности, однако его изменение влияет на эффект рассеяния совсем неинтуитивно:

Чем темнее цвет, тем больше света рассеивается. Значение 1 отключит эффект рассеивания.

Так что, если вы установите его в зелёный цвет, освещённые области объекта будут видны в зелёном цвете, а сам зелёный будет рассеян совсем немного. Поэтому более тёмные области будут иметь красный и синий оттенки. Вы можете скомпенсировать различное рассеивание путём установки большего радиуса для цвета.

RGB-радиус
На самом деле это не радиус подповерхностного рассеивания, а средняя длина пути между событиями рассеивания. Когда свет проходит через объект, он испытывает внутри него отскоки, а затем выходит на поверхность в какой-то другой точке. Это значение определяет среднюю длину пути, которую свет пройдёт между двумя отскоками. Чем больше длина пути, тем дальше свет может рассеяться. Этот механизм является основным источником воспринимаемого «цвета рассеивания» материала. Материал вроде кожи будет иметь немного больший радиус красного, нежели зелёного или синего. Подповерхностное рассеивание есть ни что иное, как диффузия света под поверхностью. Чтобы достить определённого результата, вы управляете тем, насколько далеко свет может распространиться.
Смешивание
Цвет
Контролирует, как сильно RGB-радиус модулирует диффузный цвет и текстуры. Обратите внимание, что даже при установке этого параметра в 0.0, RGB-радиус всё равно влияет на поведение рассеивания.
Текстура
Насколько сильно размывается текстура при затенении.
Коэфф. рассеивания
Спереди
Коэффициент для увеличения или уменьшения рассеивания спереди. Указывает на то, сколько света поглотится или добавится, когда он входит через переднюю часть объекта (в норме 1.0 или 100%).
Сзади
Factor to increase or decrease the backscattering. Light hitting an object from behind can go all the way through the object and come out on the front of the object. This happens mostly on thin objects, like hands and ears.
Ошибка

Этот параметр определяет, насколько точно алгоритм отбирает образцы окружающих точек. Оставив его в положении 0.05, вы должны получить изображение без артефактов. Для ускорения визуализации он может быть установлен и в более высокое значение, но потенциально это приведёт к появлению артефактов.

Установка параметра в 1.0 – хороший способ получить быстрый предпросмотр визуализации ценой большого количества артефактов.

Developing your own SSS Material

Традиционный подход

Более общий, но менее интуитивный подход состоит в использовании «слоёв». Это упрощённая версия подхода с использованием слоёв. Дополнительную информацию смотрите по внешним ссылкам:

  • Установите по своему вкусу цвет подповерхностного рассеивания, обычно это доминирующий цвет объекта. Если вы хотите использовать различные радиусы для компонент цвета, не делайте сам цвет слишком тёмным.
  • Установите коэффициент масштаба. Если вы хотите, чтобы свет глубже проникал в объекты, вам нужны либо объекты меньшего размера, либо увеличенное значение масштаба.
  • Установите значения радиусов.
  • Подстройте яркость, регулируя значения Спереди и Сзади.

A more Intuitive Approach

  • Set the Scattering color to 0.5.
  • Set the Front weight to 2.0.
  • Установите коэффициент масштаба, руководствуясь относительными размерами объекта в сцене. Если вы хотите, чтобы свет глубже проникал в объекты, вам нужны либо объекты меньшего размера, либо увеличенное значение масштаба.
  • Установите соответствующие радиусы.