В стандартных атмосферных эффектах 3d Max есть возможность визуализации
объемного света, когда лучи источника света будут видны на сцене, но
при пользовании mental ray возникают проблемы при назначении данного
эффекта фотометрическим источникам света, а при использовании
фотометрической экспозиции эффект не действует. Тем не менее в mental
ray данный эффект можно достичь использованием эффекта причастных сред,
когда выделенный объем сцены воспринимается, не как набор фигур в
вакууме, а с учетом рассеивающих характеристик заполняющей среды.
Плюсы данного подхода:
- работа с фотометриками, включая свет mr Sun, IES Sun.
- визуализация в фотометрической экспозиции
- Визуализация эффектов непрямого освещения (GI и каустики)
- более быстрый расчет
Небольшой минус эффекта, это несложная подготовка сцены.
Урок может быть выполнен начиная с восьмой версии 3d Max, а возможно
и на более ранних, но особенности интерфейса и файлы сцен предназначены
для 3d Max 2009. Все операции производятся при активном рендере mental
ray.
Подготовка к использованию эффекта причастных сред.
Для использования эффекта причастных сред, на сцене должен
присутствовать источник света (а иначе зачем мы все это делаем) и нужно
отделить объем сцены, где данный эффект будет наблюдаться. При
отделении объема необходимым условием является наличие ширмы между
камерой и визуализируемым объектом, ширме должен быть назначен шейдер
объема – Parti Volume (physics). Задняя часть сцены
тоже отделяется ширмой- задником, роль задника могут выполнять и
объекты сцены, которые находятся за отделенным объемом. Необходимость в
заднике можно понять, взглянув на сцену из окна просмотра камеры – если
в камеру попадает фон сцены, то задник необходим, если фон заслоняет
объект сцены, то задник, как правило, не нужен (если только в целях
экономии времени рендера, так как чем больше объем, тем дольше расчет).
Наглядно необходимые элементы сцены:
На данной сцене визуализируется фотометрический источник света с
эффектом причастных сред. Между ИС и камерой установлена ширма в виде
обычной плоскости. Обратите внимание, что нормали ширмы должны быть
обращены к сцене, а не камере.
Просмотреть направление нормалей и при желании их перевернуть можно путем конвертирования ширмы в мэшь:
Правый клик по выделенному объекту, конвертировать в редактируемую сетку:
Далее войти в редактирование, выделить все полигоны ширмы и активировать пункт отображения нормалей:
Если нормали обращены не в сцену, значит, их нужно перевернуть – спускаемся в свитке, ниже и жмем клавишу Flip:
Источник света от фона сцены отделяет задник (если бы у меня за
источником находилась стена дома, то необходимость в заднике отпала бы).
Материал ширмы:
Для ширмы должен быть назначен полностью прозрачный материал (чтобы не портить вид сцены). Для этого выбираем материал «mental ray» и в слоты Surface и Shadow (тени ширма тоже не должна отбрасывать) назначаем шейдер – Transmat (physics). Данный шейдер не имеет настроек.
В слот Volume назначается шейдер Parti Volume (physics).
Материал для ширмы готов.
Материал задника достаточно сделать только прозрачным, то есть в слот Surface и Shadow назначить Transmat (physics), необходимости в шейдере объема нет.
Поскольку ширма теперь будет всегда перекрывать в окне просмотра вид
из камеры, то это внесет небольшие проблемы к позиционированию объектов
сцены и настройки ракурса, если такая проблема возникла, то отображение
ширмы необходимо сделать в виде габаритного контейнера. Для этого
нажмите правой кнопкой мыши по ширме и выберете пункт настроек объекта
– «object properties», активируете закладку «General», нажмите метку «by Object» и поставьте галку на пункте «Display as Box»
Все настройки по приданию источникам света объема, мы будем проводить в шейдере Parti Volume (physics).
Настройка Scatter color, можно сказать будет самой
востребованной, она определяет рассеивание света и настраивается под
каждую сцену и положение камеры, цвет в слоте выполняет как бы эффект
фильтра - чем темнее цвет, тем темнее на сцене. Как правило,
используются варианты значения серого цвета от 0,5 до 0,01. данный
параметр подбирается практически.
Параметр Extinction – затухание показывает
поглощение света атмосферой. Для имитации источников света в воздухе,
данный параметр менять не нужно. Минимальное значение 0,001 вполне
корректно. Значение 0,002-0,003 оправдывает себя, когда дополнительно
визуализируются фотоны GI, более высокие значения подойдут для имитации
света в воде или сильном тумане.
Итак, сделаем несколько рендеров и настроем параметр Scatter color.
Результат работы сцены на вышеприведенной схеме:
Слева визуализация фотометрического источника света холодного белого цвета (6000к), справа теплого (4000к)
И визуализация ИС с назначенной картой IES:
Далее в настройке шейдера идут параметры характера рассеивания – r, g1, g2.
В разрезе темы урока и визуализации объемного света, данные
параметры можно не редактировать и пользоваться установленными по
умолчанию, или использовать несколько готовых вариантов:
Рассеивание по Релею : R = 0,5 G1 = - 0,46 G2 = 0,46 дает наиболее равномерное рассеивание характерное для чистых газовых атмосфер.
Рассеивание Ми, туманное: R = 0,12 G1 = - 0,50 G2 = 0,70 – рассеивание характерное для атмосфер содержащих взвесь из мелких капель воды - туман
Рассеивание Ми, темное: R = 0,19 G1= -0,65 G2=0,91 – рассеивание для плотного тумана или задымленных сред
Для тех, кто хочет самостоятельно попрактиковать опишу назначение этих параметров поподробнее:
Если рассматривать атмосферу (объем, в котором распространяется
свет) в виде массива частиц (молекулы газа, капли воды, частицы дыма)
то луч света, проходя сквозь этот массив, взаимодействует с этими
частицами и соответственно меняется характер рассеивания света.
Рассеивание в этом случае описывается фазовой функцией Хеньи-Гринштейна
и Шлика. Где параметр g это величина рассеивания в полусферу вокруг
точки паления света. В нашем случае рассматривается рассеивание в обеих
полусферах, поэтому используются два параметра g1 и g2. Отрицательные
значения параметра обозначают рассеивание назад (внутренние),
положительные – вперед (внешнее)
Параметр r показывает степень смешивания g1 и g2 – при r = 0 используется только g2 при r = 1 используется только g1
фазовая функция Хеньи-Гринштейна (XГ):
P(j) = 1 - g2 / ( 4p x ( 1 + g2 - 2g x cos j )1.5)
Отношения для двух полусфер:
ХГ(g1) + (1 – r ) x ХГ(g2)
Значения параметров r, g1, g2 находиться от 0 до 1, неправильно установленные параметры (завышение, несбалансированность) приводят к появлению артефактов или нерабочему эффекту.
Следующий параметр Non Uniform – значение выше нуля
активирует в области распространения света неоднородности: значение от
0 до 1 активирует степень неоднородности, значение более 1 усиливают
эффект свечения ( значение от 1 и выше недокументированно)
Параметр Height ограничивает действие эффекта на определенную высоту сцены, при этом для работы данного параметра необходимо переключить Mode в единицу, при mode = 0 высота не учитывается.
Далее настройки качества Min и Max Step Length –
максимальный и минимальный шаг выборки, для расчета эффекта. Мой совет
– сразу отредактируйте данные параметры, иначе при обсчете сцены метров
20-30 в глубину с установками по умолчанию, Вы окончания рендера не
дождетесь. При такой глубине нормальный результат можно достичь при
Min=0,03 и Max = 0,3 для предварительных рендеров можно использовать и
большие значения. Значение Light Distance определяет на каком расстоянии от источника света работает минимальная или максимальная выборка.
Переключатель Lights позволяет включить учет только
указанных в нижнем окне источников света, и игнорирования остальных.
При неактивном параметре учитываются все источники сцены.
Примеры работы эффекта причастных сред для визуализации прямого света на сценах:
Скачать сцену:
В обоих случаях используется фотометрический свет.
Визуализация непрямого освещения
С помощью эффекта причастных сред, можно сделать видимым не только
прямой свет, эффект глобального освещения и каустики также поддается
визуализации.
В указанном примере три направленных источника света имитируют три
генератора неких энергетических лучей, которые способны отражаться от
зеркальных поверхностей, мы видим визуально работу эффекта каустики.
Давайте разберемся, как это сделать.
Все что требуется для придания видимости фотонам каустики и GI это
наличие эмиттера, который будет генерировать в сцену «помеченные»
фотоны, ну и естественно организация сцены, как было описано в самом
начале статьи.
В моем случае эмиттером каустик фотонов служит линза, установленная на пути луча источника направленного света:
Эмиттер в большинстве случаев не должен иметь объема!!!, исключения составляют варианты, когда эмиттер сам участвует в организации сцены и несет не только вспомогательный характер.
Разберем универсальный вариант организации сцены для визуализации прямого и непрямого освещения одновременно:
Для простоты создадим небольшое помещение у которого будет
металлический пол, на стене прикрепим имитацию фонарика, который светит
в пол.
Одну стену помещения заменим плоскостью ширмой ( как описано в
начале урока) и зададим ей материал, какой назначали выше для сцен с
прямым светом.
Отверстие из которого у нашего фонарика будет выходить свет закроем
плоскостью ( нормали плоскости направлены к источнику света) :
И займемся настройкой материала плоскость:
Назначаем материал mental ray, слоты поверхности и тени (Surface и Shadow) шейдер Transmat (physics) – то есть плоскость должна быть прозрачной и не отбрасывать тень.
Слот Photon – назначаем шейдер Transmat Photon (physics) – то есть плоскость должна быть прозрачна для фотонов источника света.
Слот Photon Volume – шейдер Patri Volume Photon (physics), это генерирование фотонов объема, мы как бы помечаем все фотоны источника света для их отображения при визуализации:
Настройка шейдера Patri Volume Photon (physics), аналогична Patri Volume (physics),
только эффект будет касаться не к распространению света в атмосфере
сцены, а только к распространению объемных фотонов. В данном шейдере
добавлена опция Min Level, которая устанавливает
количество преломлений и отражений после которых фотоны перестанут
визуализироваться, при параметре равным нулю, эффект будет существовать
согласно общим настройкам жизни фотонов.
Материал готов.
Теперь свойства самой плоскости:
Посредством правого клика при выделенной плоскости - эмиттера, зайдите в ее свойства и нажмите закладку mental ray. Проверьте чтобы плоскость участвовала в генерации каустики ( отключено по умолчанию) и Глобального освещения:
Далее переходим на закладку General и отключаем
генерирование тени от плоскости. Если не отключить эту позицию, то
прямой свет будет отсекаться плоскостью, назначение прозрачного
материала недостаточно:
С плоскостью-эмиттером закончили.
Осталась небольшая доводка сцены - не забыть пол который будет
отражать свет, добавить в расчет каустики (в настройках объекта, как и
для плоскости, поставить галку на Generate Caustics). Ну и конечно
включаем расчет каустики при рендере: нажать «F10» и включить сам расчет
Рендерим:
Скачать сцену
Аналогично будет визуализироваться эффект Глобально освещения, достаточно активировать опцию GI в настройках рендера:
И в атмосфере сцены появиться куча светлых шариков.
Для придания более приемлемого результата в таком случае нужно настроить размер объема фотонов:
Нажимаем «F10» и находим раздел Объема:
Maximum Sampling Radius – это размер площадки сбора
фотонов и выше количество для учета фотонов на этой площадке( чем
больше – тем качественнее расчет). Размер площадки должен задаваться
исходя из размеров сцены, в идеале чем меньше тем лучше, но с
уменьшением размера площадки, мы должны увеличивать количество самих
фотонов. Количество фотонов и глубина трассировки задается в этом же
свитке – спускаемся ниже:
Желтым цветом выделены поля для количества фотонов каустики и глобального освещения,
Зеленым цветом – глубина трассировки, то есть количество отражений (Reflection) и преломлений (Refractions) после которого фотоны пропадут и величина Max Depth устанавливает общее максимальное количество преломлений и отражений после которого фотоны в любом случае пропадут.
Необходимо помнить, что здесь устанавливаются настройки для всех
источников света и если на сцене их большое количество, а нужно
увеличить фотоны на каком-то одном, то сделать это можно в настройках
источника света:
Ложка дегтя тут в том, что при визуализации эффекта GI в масштабах
сцены на несколько квадратных метров, размер площадок сбора фотонов
должен быть миллиметровым, а количество GI-фотонов измеряться
несколькими миллионами, что проблематично на машинах с 32-битной
системой по причине нехватки ОЗУ.
Отобразить эффект каустики несколько проще, фотоны в данном случае
собраны в пучки и для их наблюдения ненужно сильно увеличивать
количество.
Примечание:
При отображение эффекта в виде различных лазерных лучей и подобного параметр Decay на конкретном источнике желательно уменьшить, дабы с расстоянием фотоны меньше теряли энергии.
Иногда удобно получать от источника света сразу фотоны непрямой
иллюминации ( в случаях с лучами), тогда в материале эмиттера вместо
шейдера прозрачности для фотонов, нужно установить шейдер, генерирующий
фотоны:
Тут нужно заметить, что в случаях когда на пути каустик фотонов
установлены геометрические, прозрачные (полупрозрачные) предметы и мы
не имеем цель отклонить луч согласно коф. преломления, то
устанавливать этот коф. на шейдере равным 1 нельзя, в этом случае
каустика не сработает, IOR должен быть всегда больше 1.
Перед рендерингом сцены с большим количеством фотонов, не забудьте
сохранить сцену :-)… всякое бывает – при нехватки памяти рендер слетит
вместе с Максом и не факт что будет откат.
Для визуализации непрямого освещения параметр Extinction шейдера Patri Volume Photon (physics), стоит повысить на несколько порядков.
Вот вроде все для имитации объемного света, хотя это конечно один из
маленьких вариантов использования эффекта причастных сред, ведь
заполнять учитываемым при визуализации объемом можно не только сцену, а
и отдельные объемные предметы для имитации, например, облаков
(аналогично атмосферным контейнерам), для имитации жидкостей…
Всем удачи!
С уважением КАА
Kaa936@rambler.ru