За обновлениями можно следить в telegram-канале https://t.me/quasiart

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

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

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

При использовании волюметрики особое внимание стоит уделить плоским мешам, таким как листья или ткань. Вы должны быть уверены, что определена внутренняя и внешняя волюметрика меша, в противном случае при запутывании поверхностей LuxRender может потеряться в том, какая волюметрика из них какая, что может привести к некорректному отображению меша (не пытайтесь применять SSS к плоскими мешами, это не работает). Смысл в том, что внешняя волюметрика определяет среду перед лицевой стороной полигона, а внутренняя, соответственно, перед обратной. В случае с открытыми формами мешей, с обеих сторон среды должны быть одинаковые, воздух/вода/туман/вакуум и т.д. То есть одинаковые волюметрики (для объектов, которым не была назначена какая-то индивидуальная волюметрика, LuxRender назначает вакуум). В качестве альтернативы вы можете использовать такой инструмент как «Solidify», чтобы придать плоскому мешу закрытый объём.

В некоторых случаях желательно продолжение волюметрики за пределами плоскости (по другую сторону от той, к которой он применён), например, при использовании плоскости с типом материала glass2 в качестве водной поверхности в непрозрачном контейнере. В этом случае волюметрика продолжится за пределами плоскости вплоть до поверхности твёрдого объекта (самого контейнера), что придаст объём жидкости, в то время как сам меш жидкости будет представлять из себя только плоскость.

Типы волюметрик

Clear

Среда Clear с материалом Glass2
Среда Clear с материалом Glass2

Clear — это простая среда, функция которой в преломлении и поглощении, но не рассеивании света. В первую очередь предназначена для использования с чёткими материалами, например, стекло. Она работает с индексом преломления (IOR) и цветом абсорбции (поглощения).

IOR (индекс преломления) / fresnel texture (френелевские текстуры)

Преломляющие свойства определяет френелевская текстура, назначенная волюметрике. Если ваш экспортер использует встроенный в вашу программу моделирования редактор материалов и текстур, возможно, вам потребуется создать новую текстуру, назначить её среде, и определить эти свойства в редакторе текстур. Некоторые экспортеры позволяют вам указывать значение IOR, которое будет экспортировано как «constant» (постоянная) текстура.

Не все материалы требуют, чтобы IOR был назначен волюметрике Clear. В LuxRender 0.8 (и более ранних версиях) единственный тип материала, который это использует — это glass2, любые другие или не учитывают преломления в первую очередь, или имеют свои собственные значения IOR.

Примеры различных IOR
Примеры различных IOR. Hydrogen gas (однородный газ) — 1.000132), ice (лёд) — 1.31, обычное стекло Крон (1.519), стекло Флинт (1.805) и бриллиант (2.41)

Absorption color (цвет пошлощения, или абсорбции)

Параметр Absorption color указывает, как свет будет поглощаться, проходя через волюметрику. Он определяет скорость затухания, т. е. чем дольше свет будет проходить сквозь объём, тем более тёмным и насыщенным он будет. Это также значит, что указанный цвет будет работать «наоборот». Если вы укажете, что поглощается красный цвет, то свет красного цвета будет удалён, оставляя объём голубым.

Так как это слегка нелогично для многих людей, большинство экспортёров предлагают некую абстрактную модель, называемую «Color @ Depth» (цвет @ глубина). Это система из двух аргументов: RGB-цвета, и расстояния, которое свет должен пройти по объёму для достижения указанного цвета. Если свет проходит именно то расстояние, которое указано, вы получаете в точности указанный цвет. Если свет проходит расстояние, меньшее заданного, цвет будет менее насыщенный. Если же свет путешествует на более дальние дистанции, цвет будет более насыщенный. В отличие от нормального поглощения цвета, схема «Color @ Depth» позволяет точно отрегулировать интенсивность изначального цвета. Важно помнить, что схема «Color @ Depth» не будет работать с текстурами, поскольку текстуры уже просчитаны экспортёром.

Также возможно установить значение поглощения уже заранее измеренных данных при помощи текстуры типа «tabulateddata». Текстура этого типа должна прикрепляться к каналу цвета поглощения, а схема «Color @ Depth» деактивирована. Если для указания дистанций вы используете в качестве единицы измерения не метры, а другую величину, то можете воспользоваться специально функцией и отрегулировать масштаб поглощения.

Глубина поглощения
Глубина поглощения. Слева направо: depth of absorption — 10м, 1м, 10см, 1см и 1 мм
Насыщенность цвета поглощения
Насыщенность цвета поглощения. Слева направо: saturation — 0.0, 0.5, 0.9, 0.999 и 1.0
Среда clear с материалом Rough Glass
Среда clear с материалом Rough Glass

Homogeneous (однородная)

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

Важно отметить, что атмосферное рассеивание очень яркое. Для эффективной симуляции нужно использовать интегратор среды «single», а не «multi». Это позволит уменьшить шум. Интегратор «multi» должен использоваться для SSS.

Homogeneous использует те же параметры абсорбции и IOR, что и Clear. Также эта среда имеет два дополнительных параметра: коэффициент рассеивания и асимметричное рассеивание.

scattering coefficient (sigma_s)

Коэффициент определяет цвет и плотность частиц. Чем больше коэффициент, тем больше плотность. Также этот параметр может влиять на цвет среды, но в первую очередь цвет будет определятся цветом абсорбции:

Цветовое поглощение и рассеивание
Слева: цветовое поглощение с серым рассеиванием. Справа: цветовое рассеивание с серым поглощением. Оба используют RGB значение 0.1-0.1-0.9
The effect of absorption depths
The effect of absorption depths and scattering scales on a material with colored absorption

Так как цвет поглощения имеет RGB-значения, он не является RGB, как и другие поля выбора цвета. Вы можете указывать значения, превышающие 1. Для внутренних объемов чаще всего нужно использовать значения в диапазоне от 30 до 100 и выше. Значение 0.1 для атмосферных эффектов является очень большим. Чтобы справиться с этим широким диапазоном значений большинство экспортеров предоставляет ряд значений RGB и «scale factor», с которым будет умножены RGB-значения. Если нужен финальный коэффициент около 100 с голубым оттенком, можно установить коэффициент масштабирования до 100, а также использовать RGB-значения 0.9, 0.9, 1.0. В итоге получится коэффициент, равный 90, 90, 100.

Пример различных значений параметра sigma_s
Пример различных значений параметра sigma_s при использовании для атмосферных эффектов. Ceiling is approximately 2m high. Absorption set to leave light at 90% intensity at 40m. Sigma_s values, from left to right: 0.001, 0.01, 0.05, 0.1, 1.0

Scattering asymmetry (асимметрия рассеивания)

Значение асимметрии находится в диапазоне от -1 до +1, которое определяет отклонение от движения вперёд (при значении +1 свет рассеивается в том же направление, что и луч) или назад (при значении -1 свет рассеивается в противоположном движению луча направлении). Положительное значение рассеивания используется для прозрачных частиц, отрицательное значение — менее прозрачных частиц. При значении 0, частицы рассеиваются равномерно, во всех направлениях.

Свет проходит сквозь объём
Свет проходит сквозь объём, у которого синее обратное рассеивание на -0.25 и красное рассеивание вперёд, равное 0.25. Свет идёт слева направо