Уроки: 3ds Max

Погружение в ментал (освещение часть последняя GI)

Заключительный урок по освещению в mental ray

Несмотря на то, что концепция Глобального освещения (GI) очень проста, правильное освещение сцен с использованием этого алгоритма вызывает некоторые трудности.

Как правило, возникает парадокс – mental ray довольно быстро обсчитывает сцены, но при включении GI мы видим ухудшение качества и пытаемся это исправить увеличением количества фотонов и уменьшением их радиуса (последнее определение не верно, но подробности в уроке) тем самым время расчетов увеличивается до бесконечности, а результата не видно. В уроке будет на примерах показаны проблемы обсчета и пути их решения.

Первая часть урока, короткая и теоретическая, для тех, кто первый раз столкнулся с алгоритмом глобального освещения, вторая часть практическая и подразумевает, что изучающие уже практически пользуются mental ray либо изучили все мои предыдущие уроки по освещению на www.render.ru

Выполняться будет в 3ds Max 2009.

В уроке я использую сокращения:

GI – Global Illumination - глобальное освещение

FG - Final Gather – финальная сборка (алгоритм непрямого освещения – подробнее Погружение в ментал (Освещение часть 1 - FG))

ИС – Источники света (подробнее Погружение в ментал (освещение часть 3 - источники))

Во второй части я показываю решение некоторых проблем, но не претендую на 100% правильности методов, все они следуют из индивидуальной практики.

Итак, приступим:

Часть первая – теория

Глобальное освещение (далее GI) это алгоритм непрямого освещения, основан на генерировании источником света (далее ИС) GI-фотонов, которые встречаясь с объектом изменяются с учетом его материала и отразившись освещают рядом стоящие объекты. Наглядно я этот эффект изобразил на простом рисунке:

там, где включен GI, свет отобразился от сферы, принял ее красный цвет и осветил коробку изнутри.

Применение GI выводит освещение сцен на более совершенный уровень, тем более что в mental ray есть источники света, которые не генерируют прямое освещение, а только фотоны GI.

Включается алгоритм GI для всей сцены в настройках рендера (Render Setup <F10>) закладка Indirect Illumination (непрямое освещение) – галка Enable (включить):

Настройки GI:

Multiplier – общий множитель яркости эффекта и цвет фильтра.

Maximum Num Photons per Sample – качественная характеристика - количество фотонов для подсчета в семпле – уменьшение ведет к появлению шума.

Maximum Sampling Radius – радиус площадки сбора фотонов , очень часто путают с радиусом фотона – в mental ray фотоны не имеют радиуса, параметр от которого напрямую зависит качество освещение, изменение настройки только этого показателя,  как правило не приводит к прямому улучшению качества (подробности в практической части)

Merge Nearby Photons - качественная характеристика – алгоритм объединения фотонов – задается расстояние, на котором происходит объединение нескольких фотонов в один – включение параметра может привести к ухудшению качества, но экономии памяти – актуально включать, когда мы увеличением количества фотонов пытаемся поднять качество картинки в одной проблемной области, а при этом остальные области не нуждаются в таком количестве.

Optimize for Final Gather – при использовании GI совместно с Final Gather (далее FG) оптимизирует вычисление совместно освещенных участков. Работает как дополнительный алгоритм и занимает немного больше времени при рендере.

Поле – Light Properties:

Average GI Photon per Light – количество фотонов, излучаемое источником света. Как правило, изменение этого параметра без изменения радиуса семпла к ощутимым положительным результатам не приводит (подробности в практической части).

Decay - параметр затухания фотонов, физически корректное значение = 2 (согласно квадрату расстояния) если вы используете физически корректное освещение, не меняйте значение, для художественных целей интересно уменьшать значение совместно с уменьшением энергии ИС.

Параметры в Trace Depth указывают количество отражений и преломлении, которые произойдут с фотоном, прежде чем он пропадет, желательно максимальную глубину установить на 5, а не 10 по умолчанию – это сэкономит время, а результат практически не измениться.

Итак, это все что нам надо знать по теоретической части  по GI.

Давайте смоделируем помещение и будем настраивать (а иногда и бороться) с глобальным освещением.

 

Часть вторая – практика

Итак, у нас есть сцена, которую мы хотим осветить. Я сделал небольшое помещение:

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

Включаю солнце, настраиваю экспозицию и сразу вижу первую проблему GI.

Все помещение в бежевых тонах! Почему?

Солнечный свет (прямой) осветил пятно на полу, который у меня покрыт материалом A&D (под полированное дерево) коричневых тонов, фотоны непрямой иллюминации приняли оттенок материала и полетели освещать внутренности помещения, окрашивая все в бежевое. В принципе на этой картинке еще все более менее терпимо, но покроем пол синей плиткой (тоже A&D):

скажите жуть? Нет, это тоже еще терпимо, а вот, возьмем материал из набора ProMaterials – Пластик, тоже синий:

вот это уже ближе к жути!

Моделил я в метрической системе, теоретически расчет GI и FG должен проходить корректно. Может я не прав, но в реальном мире нет такого сильного переноса цвета от ярких поверхностей, если Солнце освещает красный ковер в моей комнате (и такое бывает в нашем хмуром городе Питере), то комната не погружается в багровые тона.

Что-то тут разработчики упустили, либо считают, что мы сами должны позаботиться об этом эффекте.

Давайте позаботимся и исправим данное недоразумение. Я опишу три способа – два частных случая и один кардинальный.

Вернемся к помещению с деревянным полом (рис № 2)

Первый способ состоит в подборе фильтра на GI ну и соответственно поставим его же на FG.

Чтобы компенсировать желто-бежевый цвет нужен светло-голубой фильтр, его и поставим (правда на GI и FG пришлось поставить немного разные фильтры, но кто сказал что будет легко):

делаем рендеринг:

явно с бежевым цветом справились. В чем два минуса этого способа?

Первое это подбор цвета фильтра (тем более что их два) и второе это то, что так мы можем компенсировать всего один цвет. Что делать если у меня половина пола красная, а вторая зеленая? В этом случае фильтр не поможет.

Второй способ. Давайте подумаем, почему происходит такая сильная окраска фотонов. Может я ошибаюсь, но по-моему, диффузный цвет из шейдера поверхности без изменений переноситься в шейдер фотонов, либо недостаточно ослабляется (это конечно касается предустановленных материалов, при работе с материалом mental ray, мы сами настраиваем этот шейдер). Давайте сменим шейдер. Открываем закладку «mental ray Connection» в свойствах материала и снимаем блокировку (замочек) с шейдера фотонов:

далее нажимаем кнопку шейдера и выбираем Photon Basic (base):

и диффузную составляющую цвета настаиваем по своему желанию:

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

Изменяем и рендерим:

У этого свойства тоже есть пара недостатков. Первое это то, что алгоритм FG все равно сделает свое черное дело (или бежевое в нашем случае), а втрое это то, что у предустановленных  материалов группы ProMaterials невозможно сменить шейдер фотонов.

Итак, третий способ.

Он основан на работе с картами фотонов, а заодно и с картой FG.

Сохраняем наш проект (на всякий случай, хотя можно потом обойтись и функцией отмены действия ctr+Z)

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

Обратите внимание, я активировал опцию Ambient Occlusion, пока просто там ставим галку, подробности будут ниже.

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

Сцена приобрела следующий вид:

серо, хмуро, но нам так нужно.

Теперь заходим в настройки непрямой иллюминации

Для начало сохраним карту FG. Раздел Final Gather Map, включаем галку – «Read/Write File», потом жмем по кнопке с точками и указываем имя и место, куда сохраниться карта:

после чего жмем кнопку «Generate FG Map File Now» и ждем процесс генерации.

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

Аналогично делаем для GI:

 

ставим галку, указываем имя файла и жмем на генерацию.

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

Опять ставим галки в Read/Write File на обоих алгоритмах (или проверяем, что они стоят если отменяли действие)

Проверяем, что указан наш сохраненный файл  и в алгоритме для FG «замораживаем» карту нажав на «замочек»:

теперь смело жмем кнопку РЕНДЕР, замечаем что нет процесса генерирования фотонов и FG:

и наблюдаем приемлемый результат переноса цвета фотонами.

Многие сейчас могут возмутиться:

«А как же сама концепция переноса цвета материала фотонами !!! мы ее убили на корню !!! а люди писали алгоритмы, работали!!!»

Во-первых - ничего и не убили, кто мешает назначать всем материалам один серый/белый цвет, а  пол можно сделать немного желтоватым :-)

А во-вторых, давайте обратимся к физике, как происходит процесс передачи цвета, точнее отражения спектра.

В mental ray подразумевается, что он сразу смешивается (либо полностью либо в ослабленном виде – точно не знаю это нужно изучать программу шейдера)

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

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

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

Теперь присмотримся ко второй проблеме.

На рисунке номер 7 стена и колонны как бы сливаются, точнее на них теряется объем – картинка замылена. Корень проблемы в некачественном освещении фотонами GI. Прямой свет от ИС дает ярко выраженные тени, подчеркивая объем элементов сцены. С фотонами немного сложнее – они не дают теней, тени получаются на тех местах, где меньше всего попало фотонов, соответственно, чем меньше фотонов (и больше площадки приема фотонов – семплы) тем меньше контрастность.

Возьмем, например помещение, которое освещается только непрямой иллюминацией  и в нем установлена конструкция с неровными поверхностями, я сделал что-то вроде лестниц:

и сделаем рендер, включив GI, но не меняя количества фотонов:

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

Сидят вечером три работника в сфере CG, и обсуждают свои проекты.

Первый говорит:

-   Сегодня закончил сцену, осталось обсчитать с 10 млн. фотонов, дня через три закончу.

Второй отвечает:

-   Тоже все закончил, но не хватает мощности компа, доставлю память и закончу проект.

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

-   А ты чего молчишь? как ты борешься со сложными обсчетами?

-   А я использую Ambient Occlusion! Все сдал и завтра в отпуск.

Давайте и мы не будем решать проблему экстенсивно, а воспользуемся имитацией глобального освещения на материале.

Если используются материалы группы ProMaterials, то в них есть опция Special Effects, в которой и можно включить Ambient Occlusion

Параметр samples это качество просчета – чем больше, тем лучше.

Параметр Max Distance один из основных – это дистанция, с которой происходит учет рядом стоящей геометрии для формирования эффекта глобального освещения (со всех сторон).  Если мы хотим показать эффект явно, то тут нужно установить расстояние до соседнего объекта, а если просто хотим подчеркнуть геометрию объектов (как в нашем случае) достаточно от 10см до полуметра. Ниже параметры смешивания и размытия, нам сейчас они не очень нужны, так как функция АО второстепенна.

Если используется материал не из группы ProMaterials, то придется диффузный цвет смешивать с шейдером АО, желательно по карте Falloff. А в некоторых материалах и материальных шейдерах есть слот Ambient, в который и нужно установить шейдер Ambient/Reflective Occlusion и настроить дистанцию:

ни в коем случае не оставляете дистанцию по умолчанию (равна 0) для закрытых помещений, если параметр нулевой, то просчет материала происходит с максимального расстояния (с фона сцены) и с учетом стен помещения вы получите полностью затемненный материал. Параметр Samples, аналогично – качество. Остальные параметры в настройке для нашего случая не нуждаются.

Итак, добавляем Ambient Occlusion, который работает очень быстро и не трогаем количество фотонов:

согласитесь есть разница! Учитывая, что рендериг по времени почти не увеличился.

Перейдем к третей и четвертой проблеме, они взаимосвязаны.

Присмотритесь к рисунку (№ 8) у верхнего отверстия на потолке, если присмотреться есть круглое светлое пятно.

Для выявления этого эффекта я прорублю два окна и немного испорчу потолок у помещения:

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

На одну из колонн у окна я поставил материал Raytrace. Вообще-то mental ray поддерживает визуализацию стандартных материалов 3D Max, настраивая поверхность этого материала я не трогал шейдер фотонов, а он оказывается настроен не корректно! Поэтому от колонны отразился несбалансированный поток фотонов, который и принялся семплом, создав площадку, ярче фона.

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

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

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

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

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

Оптимальный расчет можно сделать так:

X = размер сцены разделенное на 10 (например  1,2 метра)

Y = размер объекта который вызывает проблему, разделенное на 2 (например 0,03 м)

Размер семпла (Maximum Sampling Radius) = Y

Количество фотонов (Average GI Photons per Lihgt)  = начальное значение умноженное на X деленное на Y (у меня это 20000*40 = 800000)

Выше параметры ставить бесполезно – это ничего не даст – только время потратим.

(любители геометрии сейчас могут возмутиться -  почему мы делим на 40, а не на 2 в 40-ой степени? Ведь площадь уменьшается согласно квадрату!!!  Все правильно мы делаем, ведь семплы ставятся пересекаясь и накладываясь! А не рядышком и воздействие каждого фотона уменьшается на корень из 2) 

в моей сцене получилось 400000 фотонов, плюс еще некоторая настройка окружения:

 

В итоге время рендера вместе с генерацией карт освещения на процессоре 2х2Ггц -  4 минуты 31 секунда (148 тыс полигонов – деревце за окном прибавило)

Согласитесь это лучше чем генерировать часами миллионы фотонов и получать минимальные результаты.

В конце урока оговорюсь опять – все это результаты собственного опыта и расчетов и я не претендую на сто процентную правильность.

На этом уроки по освещению заканчиваю, но это не значит, что не будет уроков по другим темам.

С уважением, КАА

kaa936@rambler.ru

57592 Автор:
Актуальность: 751
Качество: 723
Суммарный балл: 1474
Выбор Публики
Голосов: 98 оценки

Отзывы посетителей:

2 | След.
аватар
 
Light Effect 5 0
А у меня такой вопросик возник.... при непрямом освещении интерьер плохо освещается, даже если на окна ставить Skylight, я знаю есть такая проблема в Ментале.. как с этим боротся?
аватар
 
Vertex 13 0
Хотел бы уточнить: Алекс, Вы уверены, что просчет Global Illumination следует делать после Final Gather, как это описано под рисунком №6?
аватар
 
sereginarik 2 0
Урок прекрасный.
Уважаемые участники форума!
Конечно данный урок и имеет малые неточности, но как говорится все приходит с сравнением. Поэтому не стоит так резко критиковать. Сколько людей - столько и мнений и вариантов чтобы добиться лучшего результата. Поэтому у кого вышло намного лучше, опубликуйте свой вариант достижения данной цели.
Так будет намного интереснее.

"В споре рождается истина" как гласит пословица.
аватар
 
solovjoff 22 0
весьма опрометчиво: "Параметр samples это качество просчета – чем больше, тем лучше"
поставьте в максе нормальное, чистовое значение samples per pixel, где-то 4 / 64 и даже без изменения, при 16 семплах картинка будет выглядеть много лучше, поэтому больше 32 ставить нет смысла, тормоза получим бессмысленные, и таких косясков в статье хватает, будьте внимательны
аватар
 
Дмитрий Гра4енок 2 0
Автору огромное спасибо за все уроки по менталу!!!
аватар
 
RUSTIK_HDR 11 0
Цитирую wouscan:
насчет окружения...
обьясните кто-нить
сохранил картинку в 16 бит... корректирую експозицию в Photoshop, "окружение" расстворяется - точнеее говоря, чем темнее тем картинка темнеет, но когда меняю на 32 бита, "окружение" отчетливей видно...
попробывал еще так... сфоткал ночью луну, фото перевел в 32 бита, корректирую експозицию - ярче... небо становится почти как днем!, видно отчетливо деревья, дома...
... но потом!!!......взял, по моему мнению, неудавшиеся "ночные" фото отдыха с друзьями... все классно видно...
вопрос: почему в 16 бит этого не видно?
извините, может на форуме писать надо было... но вопрос возник при прохождении этого урока...


8 бит - модель используеться для печати и визе.
16 бит - для печати не используетьс /полиграфия и принт/ - а используться для перевода картинки из канале LAB, RGB - в канал CMYK/
32 бит - HDR канал, используеться в основном для корректировки темных участков в битовой решетки. Если говорить о визуализации - то в 32 битном режиме делаються карты освещения.
аватар
 
Leonidych 87 0
Косяков просто море!
аватар
 
Leonidych 87 0
Цитирую BorisK:
Ув. Алекс! При всем уважении к вашему упорству, у Вас столько косяков во всем цикле статей, что просто диву даешься аплодисментам зрителей! :) Жаль, что этого не видел Puppet...

Согласен. Павел Ледин ещё успеет на это посмотреть.
Жаль, что нет с нами Игоря Сивакова. Вот его статьи следует прочитать всем. И в частности, автору этого сериала под названием Погужение в Ментал.
аватар
 
DPER 1 0
Спасибо за урок. С нетерпением жду ваших уроков. 5 5
аватар
 
wouscan 1 0
Цитирую:плюс еще некоторая настройка окружения

насчет окружения...
обьясните кто-нить
сохранил картинку в 16 бит... корректирую експозицию в Photoshop, "окружение" расстворяется - точнеее говоря, чем темнее тем картинка темнеет, но когда меняю на 32 бита, "окружение" отчетливей видно...
попробывал еще так... сфоткал ночью луну, фото перевел в 32 бита, корректирую експозицию - ярче... небо становится почти как днем!, видно отчетливо деревья, дома...
... но потом!!!......взял, по моему мнению, неудавшиеся "ночные" фото отдыха с друзьями... все классно видно...
вопрос: почему в 16 бит этого не видно?
извините, может на форуме писать надо было... но вопрос возник при прохождении этого урока...
аватар
 
Man-In-Go 66 0
А вот пятна на стенах можно убрать за счёт ужесточеня параметра noise filtering , и sampling radius на 3 метра ставлю - тогда очень симпатичненько получется ))) хотя по сути и не правильно )))
аватар
 
Xform2006 2 0
Взял и зажёг бы по СА , раз уж такой спец, или допустим про анимацию. А, в обще ментал один из самых физически правильных рендеров.
аватар
 
Иван Баркарь 2 0
BorisK, о ну тогда прошу прощения. Если встречу книжку, обязательно приобрету, показалась полезной
аватар
 
firetwister 161 0
BorisK
Цитирую:про GI: Saturation в врее - на самом деле, в врее есть значительно более гибкое решение, аналогичное менталовскому, VrayOverride Material, дающее, к тому же, возможность побороть ряд других проблем, например, затемнение возле больших зеркал.

VOM использую для других целей, но не спорю :), ибо вы правы :)
аватар
 
wouscan 1 0
Снкз за познание. Внимательно изучая изложеный курс по освещению в ментале встречал парочку фраз, что мол зачем просчитывать то да это - в шопе можна поправить... в шопе поправите... только 2D картинку. А вот что если в 3D... немного порасскинув мозгами - добавил... ролик сделать надобно..? тогда помоему и в ж...пе не поправиш... УЧИТЕСЬ правильно, а не халтурно... мол..."а-а-а, пройдет"... и Люди к Вам потянутся. Еще раз снкз.
а что на очереди после освещения? ждемс
аватар
 
igni 27 0
5\5
Спасибо, полезный урок. И коменты отличные))) ну как и всегда - одно без другого неинтересно, а вместе - втройне познавательно)))
аватар
 
BorisK 22 0
2 hrwraith - про GI: Saturation в врее - на самом деле, в врее есть значительно более гибкое решение, аналогичное менталовскому, VrayOverride Material, дающее, к тому же, возможность побороть ряд других проблем, например, затемнение возле больших зеркал. В 3ds Max 2009 есть и более эффектное и эффективное решение, нежели старый фотонный шейдер - два шейдера Raytype Switcher и Raytype Switcher (Advanced). Кстати, АО теперь не только встроен в mia_material, но и в сам ментал. А также там новый метод расчета ги (импортоны+иррад.партиклы), делающий все наши знания бесполезными, к сожалению :( Добраться можно через шейдеры ctrl.GhostSettings У майщиков должны быть уже в основном интерфейсе
аватар
 
BorisK 22 0
Иван Баркарь - дык, написал уже :) http://www.books.ru/shop/books/582068
аватар
 
Иван Баркарь 2 0
Так возьмите и напишите все правильно, какие проблемы?

Автору огромное спасибо за труды. Очень помогает.

Хочу статью о материалах!
аватар
 
BorisK 22 0
Сфоткайте не бумажку, ессно, а белую стену :)
2 | След.
Зарегистрируйтесь, чтобы добавить комментарий.
Эту страницу просмотрели: 963 уникальных посетителей