LuxRender имеет гибкую и мощную систему работы со средами (волюметрикой), который отвечают за поведение света, проходящего сквозь объект, или через пространство между объектами.
Как правило, для сцен с волюметрикой, создаётся некий набор типов среды, которые присваиваются к объектам. Внутренний тип среды определяет, как свет движется внутри объекта, внешний — как свет движется в пространстве между объектом, из которого он только что вышел, и следующим, с которым он сталкивается.
Настройки внутренней среды используется для определения свойств поглощаемости и распределения света внутри объекта. В большинстве случаев нужно создавать различные типы сред для каждого материала, в котором требуется определить свойства поглощения света и эффекта внутреннего рассеивания лучей, и так с каждым объектом в сцене. Настройки внешней среды используются для создания различных атмосферных эффектов, которые одинаковы для всех объектов сцены.
При использовании волюметрики особое внимание стоит уделить плоским мешам, таким как листья или ткань. Вы должны быть уверены, что определена внутренняя и внешняя волюметрика меша, в противном случае при запутывании поверхностей LuxRender может потеряться в том, какая волюметрика из них какая, что может привести к некорректному отображению меша (не пытайтесь применять SSS к плоскими мешами, это не работает). Смысл в том, что внешняя волюметрика определяет среду перед лицевой стороной полигона, а внутренняя, соответственно, перед обратной. В случае с открытыми формами мешей, с обеих сторон среды должны быть одинаковые, воздух/вода/туман/вакуум и т.д. То есть одинаковые волюметрики (для объектов, которым не была назначена какая-то индивидуальная волюметрика, LuxRender назначает вакуум). В качестве альтернативы вы можете использовать такой инструмент как «Solidify», чтобы придать плоскому мешу закрытый объём.
В некоторых случаях желательно продолжение волюметрики за пределами плоскости (по другую сторону от той, к которой он применён), например, при использовании плоскости с типом материала glass2 в качестве водной поверхности в непрозрачном контейнере. В этом случае волюметрика продолжится за пределами плоскости вплоть до поверхности твёрдого объекта (самого контейнера), что придаст объём жидкости, в то время как сам меш жидкости будет представлять из себя только плоскость.
Типы волюметрик
Clear
Clear — это простая среда, функция которой в преломлении и поглощении, но не рассеивании света. В первую очередь предназначена для использования с чёткими материалами, например, стекло. Она работает с индексом преломления (IOR) и цветом абсорбции (поглощения).
IOR (индекс преломления) / fresnel texture (френелевские текстуры)
Преломляющие свойства определяет френелевская текстура, назначенная волюметрике. Если ваш экспортер использует встроенный в вашу программу моделирования редактор материалов и текстур, возможно, вам потребуется создать новую текстуру, назначить её среде, и определить эти свойства в редакторе текстур. Некоторые экспортеры позволяют вам указывать значение IOR, которое будет экспортировано как «constant» (постоянная) текстура.
Не все материалы требуют, чтобы IOR был назначен волюметрике Clear. В LuxRender 0.8 (и более ранних версиях) единственный тип материала, который это использует — это glass2, любые другие или не учитывают преломления в первую очередь, или имеют свои собственные значения IOR.
Absorption color (цвет пошлощения, или абсорбции)
Параметр Absorption color указывает, как свет будет поглощаться, проходя через волюметрику. Он определяет скорость затухания, т. е. чем дольше свет будет проходить сквозь объём, тем более тёмным и насыщенным он будет. Это также значит, что указанный цвет будет работать «наоборот». Если вы укажете, что поглощается красный цвет, то свет красного цвета будет удалён, оставляя объём голубым.
Так как это слегка нелогично для многих людей, большинство экспортёров предлагают некую абстрактную модель, называемую «Color @ Depth» (цвет @ глубина). Это система из двух аргументов: RGB-цвета, и расстояния, которое свет должен пройти по объёму для достижения указанного цвета. Если свет проходит именно то расстояние, которое указано, вы получаете в точности указанный цвет. Если свет проходит расстояние, меньшее заданного, цвет будет менее насыщенный. Если же свет путешествует на более дальние дистанции, цвет будет более насыщенный. В отличие от нормального поглощения цвета, схема «Color @ Depth» позволяет точно отрегулировать интенсивность изначального цвета. Важно помнить, что схема «Color @ Depth» не будет работать с текстурами, поскольку текстуры уже просчитаны экспортёром.
Также возможно установить значение поглощения уже заранее измеренных данных при помощи текстуры типа «tabulateddata». Текстура этого типа должна прикрепляться к каналу цвета поглощения, а схема «Color @ Depth» деактивирована. Если для указания дистанций вы используете в качестве единицы измерения не метры, а другую величину, то можете воспользоваться специально функцией и отрегулировать масштаб поглощения.
Homogeneous (однородная)
Представляет собой некий объём с равномерно распределёнными микроскопическими частицами. При использовании в качестве внутренней волюметрики она может применяться для подповерхностного рассеивания (SSS), мутной жидкости или изображения объекта в затуманенном пространстве (как на примере выше). Также можно использовать её как волюметрику для окружения, что может придать некую насыщенность атмосфере.
Важно отметить, что атмосферное рассеивание очень яркое. Для эффективной симуляции нужно использовать интегратор среды «single», а не «multi». Это позволит уменьшить шум. Интегратор «multi» должен использоваться для SSS.
Homogeneous использует те же параметры абсорбции и IOR, что и Clear. Также эта среда имеет два дополнительных параметра: коэффициент рассеивания и асимметричное рассеивание.
scattering coefficient (sigma_s)
Коэффициент определяет цвет и плотность частиц. Чем больше коэффициент, тем больше плотность. Также этот параметр может влиять на цвет среды, но в первую очередь цвет будет определятся цветом абсорбции:
Так как цвет поглощения имеет RGB-значения, он не является RGB, как и другие поля выбора цвета. Вы можете указывать значения, превышающие 1. Для внутренних объемов чаще всего нужно использовать значения в диапазоне от 30 до 100 и выше. Значение 0.1 для атмосферных эффектов является очень большим. Чтобы справиться с этим широким диапазоном значений большинство экспортеров предоставляет ряд значений RGB и «scale factor», с которым будет умножены RGB-значения. Если нужен финальный коэффициент около 100 с голубым оттенком, можно установить коэффициент масштабирования до 100, а также использовать RGB-значения 0.9, 0.9, 1.0. В итоге получится коэффициент, равный 90, 90, 100.
Scattering asymmetry (асимметрия рассеивания)
Значение асимметрии находится в диапазоне от -1 до +1, которое определяет отклонение от движения вперёд (при значении +1 свет рассеивается в том же направление, что и луч) или назад (при значении -1 свет рассеивается в противоположном движению луча направлении). Положительное значение рассеивания используется для прозрачных частиц, отрицательное значение — менее прозрачных частиц. При значении 0, частицы рассеиваются равномерно, во всех направлениях.