ambient occlusion что это в 3d max

Что такое Ambient Occlusion (AO)

Ambient occlusion – метод глобального фонового или непрямого затенения объектов.

Мягкие тени, создаваемые за счет Ambient Occlusion в различных трещинах и углублениях 3D-объектов, освещаемых в сцене непрямым освещением, визуально разделяют объекты, добавляя дополнительного реализма на рендере.

ambient occlusion что это в 3d max. Смотреть фото ambient occlusion что это в 3d max. Смотреть картинку ambient occlusion что это в 3d max. Картинка про ambient occlusion что это в 3d max. Фото ambient occlusion что это в 3d max

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

ambient occlusion что это в 3d max. Смотреть фото ambient occlusion что это в 3d max. Смотреть картинку ambient occlusion что это в 3d max. Картинка про ambient occlusion что это в 3d max. Фото ambient occlusion что это в 3d max

Если эти лучи взаимодействуют с другой поверхностью, этот участок становится темнее. Если нет – светлее. В большинстве 3D-приложений АО рассчитывается с помощью специального шейдера, который назначается на геометрию. После рендера АО-пас добавляется к изображению в редакторе для композитинга, например в Photoshop, где он дополнительно редактируется и улучшается.

ambient occlusion что это в 3d max. Смотреть фото ambient occlusion что это в 3d max. Смотреть картинку ambient occlusion что это в 3d max. Картинка про ambient occlusion что это в 3d max. Фото ambient occlusion что это в 3d max

Учитывая, что АО имитируется тогда, когда поверхность объекта «испускает» свет, любой объект с назначенной картой прозрачности не будет просчитываться автоматически. При этом кажется, что АО не рассчитывается, но это не так, поскольку на самом деле лучи света проходят сквозь прозрачную геометрию.

Ambient Occlusion идеально подходит для смягчения всех теней в сцене, если они чрезмерно резкие, а также для их затемнения, если светлые. При этом необходимости в создании дополнительного источника света нет, поскольку АО работает не так, как, например, Final Gather, для которого нужен источник света, испускающий лучи. Для Ambient Occlusion также характерна некоторая вариативность цвета, благодаря которой наши глаза лучше различают детали, которые в противном случае остались бы незамеченными или размытыми. Кроме того, АО идеально подходит для визуализации незатекстуренных моделей.

Советы по настройке Ambient Occlusion
При просчете Ambient Occlusion время рендера можно также сократить, если запечь АО в отдельный слой. Это особенно важно при рендере анимации, поскольку при рендере каждого компьютер будет заново рассчитывать AO, что значительно замедляет время рендера.

ambient occlusion что это в 3d max. Смотреть фото ambient occlusion что это в 3d max. Смотреть картинку ambient occlusion что это в 3d max. Картинка про ambient occlusion что это в 3d max. Фото ambient occlusion что это в 3d max

Если при рендере на АО-пасе возникают непонятные артефакты, например, излишне насыщенные или слабые тени и пр., нужно подкрутить параметр Max distance в настройках АО. Этот параметр отвечает за то, какое расстояние должны преодолеть лучи света на пути к поверхности геометрии. Чем больше расстояние, тем шире и насыщенней будут тени. Увеличение расстояния также увеличит количество отбрасываемых теней. При уменьшении этого расстояния лучи проделают меньший путь, поэтому тени появятся только там, где геометрия будет расположена близко к поверхности. Экспериментальный подход – залог того, что вы достигнете желаемого результата.

ambient occlusion что это в 3d max. Смотреть фото ambient occlusion что это в 3d max. Смотреть картинку ambient occlusion что это в 3d max. Картинка про ambient occlusion что это в 3d max. Фото ambient occlusion что это в 3d max

Для дополнительного реализма на рендере можно также использовать непосредственно АО-пас, который можно найти в настройках рендера. Это позволит с помощью направленного источника света добавить Ambient Occlusion дополнительной направленности, а также уменьшит его зависимость от окружающей геометрии.

В некоторых случаях необходимости в рендере отдельного АО-паса нет, поскольку в некоторых материалах он встроен. В таких 3D-редакторах, как 3ds Max или Maya, АО можно найти в настройках архитектурных или дизайнерских материалов. Поэтому перед тем, как настроить отдельный АО-пас, проверьте, не встроен ли он в настройки материала.

Источник

Ambient Occlusion Volumes для прожженных самоваров

Скитаясь по интернету в поисках алгоритмом освещения, которые бы удовлетворили мои потребности, я наткнулся на весьма новый алгоритм, разработанный компанией NVIDIA, название которого AOV (Ambient Occlusion Volumes). Имея в своём распоряжении тёмные осенние ночи и несколько чашек горячего кофе, я решился изучить данный алгоритм, следствием чего является данная статья. Прежде чем я начну, хотелось бы отметить своё удивление по поводу того, что данный алгоритм имеет незаслуженно малую популярность в кругах разработчиков игр, в отличии от всеми знакомого нам SSAO. Содержание данной статьи будет, по большей мере, состоять из теории.

Введение

В июне 2010 года Morgan McGuire, исследователь и разработчик компании NVIDIA, разработал алгоритм освещения, который носит название Ambient Occlusion Volumes. При разработке данного алгоритма, M. McGuire, ставил себе в цель добиться более высокой производительности и качества освещения. Производительность алгоритма, по словам разработчика, во многом независима от сложности моделей, а по качеству освещения не уступает Ray Tracing’у.

Немного об Ambient Occlusion

ambient occlusion что это в 3d max. Смотреть фото ambient occlusion что это в 3d max. Смотреть картинку ambient occlusion что это в 3d max. Картинка про ambient occlusion что это в 3d max. Фото ambient occlusion что это в 3d max

Но при расчете таким алгоритмом возникают некие трудности. Через некоторое время на замену старому алгоритму пришёл SSAO(Screen Space Ambient Occlusion) от разработчиков компании Crytek. Сам алгоритм работал по такому принципу, что определяется некая сфера и в диапазоне этой сферы случайно отбираются точки после чего идёт проверка глубин(прежде записанных в буффер глубин) этих точек с той, для которой мы вычисляем затенение. Если глубина последней больше за глубину случайной точки, то она — затенена, а иначе, соответственно, освещена. Выполняется несколько таких проверок, после чего их результаты суммируются и вычисляется коэффициент затенения. Выглядит оно, примерно, так:

ambient occlusion что это в 3d max. Смотреть фото ambient occlusion что это в 3d max. Смотреть картинку ambient occlusion что это в 3d max. Картинка про ambient occlusion что это в 3d max. Фото ambient occlusion что это в 3d max

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

Далее мне бы хотелось рассмотреть еще одну немаловажную тему перед тем как будет описан AOV метод.

Radiosity

Многие из тех, кто знаком с названым методом нахмурились бы услышав данный метод в контексте Ambient Occlsuion. В действительности, эти методы тесно связаны друг с другом.

Если вы уверенны в своих знаниях, у вас есть возможность пропустить данный раздел и перейти к следующему. Между тем, мне бы хотелось коротко пройти по этой теме.

Метод radiosity, так же известный как метод излучательности, является одним из методов GI, который опирается на расчёт форм-факторов(form-factors), которые, в свою очередь, описывают обмен энергией между парами плоскостей в окружающей среде.

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

ambient occlusion что это в 3d max. Смотреть фото ambient occlusion что это в 3d max. Смотреть картинку ambient occlusion что это в 3d max. Картинка про ambient occlusion что это в 3d max. Фото ambient occlusion что это в 3d max

Вычисляется форм-фактор таким образом:

ambient occlusion что это в 3d max. Смотреть фото ambient occlusion что это в 3d max. Смотреть картинку ambient occlusion что это в 3d max. Картинка про ambient occlusion что это в 3d max. Фото ambient occlusion что это в 3d max

где θi,j — угол между нормалью плоскости и Ri,j,, dA1,2 — дифференциальная область плоскости, Ri,j — вектор расстояния между dA1,2. В данном уравнении HID равно единице, если dA1,2 видимы друг для друга и ноль, если наоборот.

На расцвете данного метода использовались два подхода: Full Matrix Radiosity и Progressive Refinement Radiosity.

Full Matrix Radiosity

Суть данного подхода заключается в том, что окружающая среда дискретизирована в маленькие плоскости. Для каждой пары плоскостей вычисляется форм-факторы. После, форм-факторы используют для создания системы уравнений, которая устанавливает связь между плоскостями в окружающей среде. Решив эту системы, мы получаем интенсивность света, которую излучает плоскость. Однажды просчитав интенсивность, окружение может быть представлено в любом положении без дополнительных расчётов освещения.

Интенсивность света, который излучает плоскость вычисляем таким способом:

ambient occlusion что это в 3d max. Смотреть фото ambient occlusion что это в 3d max. Смотреть картинку ambient occlusion что это в 3d max. Картинка про ambient occlusion что это в 3d max. Фото ambient occlusion что это в 3d max

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

Форм-фактор от патча к патчу вычисляется так:

ambient occlusion что это в 3d max. Смотреть фото ambient occlusion что это в 3d max. Смотреть картинку ambient occlusion что это в 3d max. Картинка про ambient occlusion что это в 3d max. Фото ambient occlusion что это в 3d max

где Ei — количество элементов в патче, Fej — форм-фактор от элемента e к патчу j, Ai,e — области патча и элемента.

Progressive Refinement Radiosity

Данный подход основан на предыдущем. Особенность данного подхода состоит в том, что после каждой итерации происходит перерасчёт, а именно инкремент значения излучательности плоскости. Рассчитывается оно таким образом:

ambient occlusion что это в 3d max. Смотреть фото ambient occlusion что это в 3d max. Смотреть картинку ambient occlusion что это в 3d max. Картинка про ambient occlusion что это в 3d max. Фото ambient occlusion что это в 3d max

где Ii — уже просчитанное значение излучательности.

Проблемой данных подходов является сложность расчётов даже при простых формах объектов. Чтобы вычислить форм-фактор плоскости нам нужно произвести два раза интегрирование, не говоря уже об лишних расчётах. На решение этой проблемы пришёл Hemi-Cube Radiosity.

Hemi-Cube Radiosity

HC имеет схожесть с алгоритмом Nussalt Analog. Суть его была в том, что вокруг точки на плоскости размещается так называемая проекционная полусфера с единичным радиусом. Другая плоскость проецируется на эту полусферу и размещается на базе полусферы. Таким образом форм-фактор будет равен отношению области спроецированной плоскости в базе полусферы к области самой базы полусферы. Алгоритм HC в своей реализации использует, как вы уже могли догадаться, полукуб.

Стороны полукуба разбиваются на набор небольших дискретизированных плоскостей(hemi-cube pixels), каждая из которых имеет свой предрассчитанный форм-фактор. Когда вторая плоскость проецируется на полукуб, сумма форм-факторов дискретных областей на которых была спроецированна плоскость будет равна значению форм-фактора от точки на первой плоскости до второй плоскости.

ambient occlusion что это в 3d max. Смотреть фото ambient occlusion что это в 3d max. Смотреть картинку ambient occlusion что это в 3d max. Картинка про ambient occlusion что это в 3d max. Фото ambient occlusion что это в 3d max

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

Ambient Occlusion Volume

Во время разработки метода radiosity, Baum D.R. предложил такой метод вычисления форм-фактора:

ambient occlusion что это в 3d max. Смотреть фото ambient occlusion что это в 3d max. Смотреть картинку ambient occlusion что это в 3d max. Картинка про ambient occlusion что это в 3d max. Фото ambient occlusion что это в 3d max

где Gi — набор граней плоскости, Nj — нормаль дифференциальной плоскости j, Гg — величина равная углу гамма и направлению полученного при векторном произведении Rg и R(g+1), как показано на рисунку снизу:

ambient occlusion что это в 3d max. Смотреть фото ambient occlusion что это в 3d max. Смотреть картинку ambient occlusion что это в 3d max. Картинка про ambient occlusion что это в 3d max. Фото ambient occlusion что это в 3d max

M. McGuire вдохновился данным подходом и на основе последнего придумал AO алгоритм. Описывал он его так:

Пусть X будет очень маленьким патчем гладкого многообразия. Центроид X будет в точке, которая является началом нормали n. Полигоном P будет полигон с вершинами , который полностью расположен на позитивной части плоскости, при условии p*n > 0. Таким образом, преграждение лучей света, создаваемое полигоном P, будет равно форм-фактору излучательной способности между P и X.

ambient occlusion что это в 3d max. Смотреть фото ambient occlusion что это в 3d max. Смотреть картинку ambient occlusion что это в 3d max. Картинка про ambient occlusion что это в 3d max. Фото ambient occlusion что это в 3d max

Реализация AOV’s

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

Рассмотрим выпуклый полигон P с вершинами , которые при любой комбинации из 3-х вершин не создают коллинеарности. Сперва, нам нужно рассчитать затухающую функцию, которая нам понадобиться чтобы добиться плавности при переходах от near- к far-field освещению. Вычисляется она таким образом:

Источник

Mental ray 3.3 для 3ds max. Часть 2.

В седьмой версии 3ds max, благодаря mental ray 3.3, появился новый шейдер Ambient/Reflective Occlusion. Это шейдер обладает рядом интереснейших возможностей, позволяющих использовать его для решения широкого спектра задач визуализации и рендеринга, включая имитацию GI. Рассмотрением его свойств и возможностей практического применения и посвящено данное небольшое исследование.

Начну немного издалека. Построение изображений (рендеринг) в трехмерной компьютерной графике опирается на расчет трех основных компонент цвета поверхности – окружающего освещения (ambient color), диффузного освещения от прямых источников света (diffuse color), а также – зеркальных и specular отражений/преломлений. Ambient освещение в стандартной модели затенения в 3ds max не предполагает наличия источников света и основывается на простом, #34;одноцветном», фоновом цвете, который просто добавляется к диффузному и specular освещению поверхности. Последнее вовсе не означает, что для ambient-компоненты материала нельзя задавать карту цвета, например – растровую или процедурную карту.

Предлагаемая шейдером ambient/reflection occlusion схема расчета состоит в определении степени, или меры «затенения», или блокирования, точек поверхности окружающей геометрией в сцене.

Величина степени затенения рассчитывается по следующему правилу.

Для каждой точки поверхности, видимой в камеру, строится полусфера относительно ее нормали. Затем, через сферу, в сцену испускается в случайных направлениях некоторое количество лучей. Для испущенных лучей возможны только два варианта развития событий – либо они столкнутся с поверхностями других объектов и будут считаться «затененными» (occluded), либо они беспрепятственно выйдут за пределы сцены (или за пределы расстояния указываемого в настройках шейдера) и будут считаться «свободными», незаблокированными. В результате, степень затенения точки будет определяться как отношение числа заблокированных к общему числу испущенных лучей. Например, если всего испущено 10 лучей, только 5 из которых пересеклись в пределах сцены с другими объектами, то цвет точки будет иметь значение 50% серого, поскольку 50% лучей заблокировано другой геометрией. Как видим, все довольно просто.

Поскольку шейдер ambient/reflection occlusion (далее в тексте – АО) рассчитывает фоновое освещение, вполне логично сравнить возможности его алгоритма с расчетом полного глобального освещения методом final gathering + photon map. По сравнению с Final Gathering, АО не рассчитывает освещенность в точке пересечения с другой геометрией и не учитывает затухание света с расстоянием. А по сравнению с фотонными картами, АО не учитывает вторичных переотражений света между объектами. В силу указанных различий АО шейдер является корректной альтернативой расчета GI только в случае открытых сцен (экстерьеров) и дает неправильные результаты для закрытых сцен (интерьеров). Однако физическая корректность освещения в компьютерной графике не всегда является первостепенной задачей, чаще достаточно просто правдоподобности освещения. Такую правдоподобность АО вполне способен обеспечить. Допустимо также использовать АО совместно с фотонными картами, вместо FG. Хотя такой результат также будет далек от физической корректности, он может давать вполне убедительное и гладкое «псевдо-глобальное» освещение, причем время расчета будет гораздо меньше по сравнению с временем расчета методом FG + Photon Map.

Рассмотрим назначение параметров шейдера АО.

Прежде всего, я приведу спецификацию шейдера, как ее дает mental images:

color «mib_amb_occlusion» (
integer «samples» default 16,
color «bright» default 1 1 1 1,
color «dark» default 0 0 0 0,
scalar «spread» default 0.8,
scalar «max_distance» default 0,
boolean «reflective» default off,
integer «output_mode» default 0,
boolean «occlusion_in_alpha» default off
)
version 2
apply texture

Отсюда вытекает способ использования АО в сочетании с другими шейдерами для создания материала со сложными свойствами – mental ray phenomena или материалов 3ds max.

АО в результате вычислений может возвращать величину «color», т. е. цвет, и может принимать цвет от других шейдеров в качестве параметра для вычислений (параметры «bright» и «dark»). Результат вычислений шейдера ambient occlusion также может быть передан внешней функции-обработчику, например, для комбинирования результатов вычислений нескольких шейдеров в один общий результат.

АО может быть успешно использован для определения ambient-свойств материалов 3ds max. В этом случае результат вычислений АО будет сочетаться с диффузными, отражающими и преломляющими свойствами материала, по правилам, стандартным для материалов 3ds max.. Таков один из возможных способов реализации основной функции шейдера – «ambient occlusion», то есть затенение фонового освещения.

Еще один вариант использования АО – соединять его с другими шейдерами посредством «комбинирующих» материалов 3ds max, например – Shellac, Fallof, Mix и других. В этом случае АО может быть использован для определения любых свойств материала. Именно так реализуется функция reflect occlusion – для определения отражающих/преломляющих свойства материала используется сочетание АО, материала типа Raytrace и растровой карты для отражений.

Вполне возможно и одновременное использование обоих этих методов, в этом случае будет выполняться «полное» затенение, то есть и «ambient occlusion» и «reflective occlusion».

Наконец, третий способ использования шейдера АО – для целей компоузинга во внешних программах и пост-обработки изображений.

Интерфейсе шейдера АО в 3ds max выглядят следующим образом:

Параметр Samples определяет число лучей, «выстреливаемых» из точки через поверхность сферического сегмента в окружающую сцену. Чем больше лучей, тем более гладким будет результат. На гладкость результата оказывают также влияние настройки антиалиасинга и величина параметра Spread (угол сферического сегмента, через который посылаются лучи).

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

Параметр Spread определяет угловую величину сферического сегмента точки поверхности, через который посылаются сэмплирующие лучи. Изменяется в пределах от 0.0 до 1.0. Значение «0» определяет только одно направление испускания (один луч) – вдоль нормали к точке или вдоль направления отражения, что используется для reflective occlusion. Значение «1» определяет полусферу (угловая величина 180 градусов). Чем больше угловая величина сферического сегмента, тем больше потребуется лучей для получения гладкого результата. С другой стороны, чем уже конус лучей, тем более резко очерченными будут теневые переходы и наоборот. Использование целой полусферы дает интересный эффект самозатенения поверхностей, что с успехом может быть использовано для «проявления» рельефа поверхности или оттенения деталей поверхностей, содержащих многочисленные мелкие элементы – травы, волос и т.п.

Параметр Max distance указывает максимальную длину сэмплирующего луча и тем самым – максимальное расстояние в пределах которого проверяется наличие геометрии. Если его значение равно 0, границы области проверки определяются размерами сцены. Таким образом, явное указание Max distance может быть использовано для ускорения расчетов ambient occlusion.

Включение/выключение флага Reflective определяет направление, относительно которого строится сферический сегмент для испускания лучей. Если флаг установлен (Reflective on) сфера строится относительно направления отражения света, определяемого свойствами материала и геометрии поверхности. Используется для расчета reflective occlusion. Если флаг отключен (Reflective off), сфера строится относительно нормали в точке поверхности, шейдер рассчитывает ambient occlusion.

Если параметр Return occlusion in alpha установлен в положение «on», создается растровая черно-белая карта значений ambient occlusion, которая помещается в альфа-канал изображения. Результат расчетов будет зависеть от установленного режима работы шейдера (значения параметра Type).

Теперь попробуем применить все это на практике. Рассмотрим вот такую сцену:

Сцена содержит плоскость с установленным на нее автомобилем и освещена двумя точечными источниками света, всем объектам сцены заданы материалы типа Standard.

А вот что мы увидим, если зададим для свойств поверхности шейдер ambient occlusion:

Все детали получили дополнительные мягкие тени в результате самозатенения, делающие их вид более объемным. Поскольку «небо» над автомобилем совершенно чистое, светлые участки обеих сцен почти идентичны. Во втором случае цвет поверхностей изменился по той причине, что параметр bright и dark шейдера АО имеют значения по умолчанию – белый и черный соответственно. Основной диффузный цвет материала значения не имеет, поскольку в расчетах не учитывается.

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

Использование АО для определения диффузных характеристик поверхности не является использованием шейдера по прямому назначению, скорее – способом получения спецэффектов. Например, он хорошо подходит для реализации reflective occlusion. Кроме того, сочетание АО c другими материалами требует определенных усилий. Обусловлено это тем, что назначение «в лоб» карт и материалов для параметров «bright» или «dark» редко дает приемлемый результат. Здесь требуется комбинирование АО и материалов, например при помощи «оборачивающего» материала, такого как Shellac или Fallof.

Использование АО по прямому назначению предполагает определение с его помощью ambient – характеристик материалов. Для этого отключаются замки, блокирующие ambient и diffuse свойства материалов:

Если в сцене установить хотя бы один источник света, диффузные характеристики поверхностей «вступают в игру» наряду с ambient occlusion. Как хорошо видно на последнем рисунке, там где поверхность хорошо освещена источником (в данном случае он сверху) превалирует диффузный цвет, а в областях слабо освещенных – тень, рассчитанная АО. Таким образом, очевидно, что необходимо приводить в соответствие цвета «dark» и «bright» шейдера АО и диффузный цвет.

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

Существует еще один способ использования ambient occlusion, наиболее удобный из всех – шейдер АО можно назначить источнику света. В этом случае необходимость специально редактировать материалы почти полностью отпадает.

Для случая точечного источника этот метод состоит в следующем. Создаем и помещаем в удобном месте сцены источник света. В свойствах источника Advanced effects включаем Ambient Only, при этом Diffuse и Specular свойства становятся недоступны и рассчитываться не будут – мы превращаем обычный источник света в чисто амбиентный (фоновый) источник. Далее отключаем освещение у источника вообще – в Light Type убираем галочку из бокса «On» и идем к свитку свойств mental ray Light Shader. Здесь щелкаем на кнопке с надписью Light Shader и в появившемся списке выбираем Ambient/Reflective occlusion. Включаем галочку в боксе «Enable» (разрешаем его использование) и перетаскиваем кнопку Ambient/Reflective Occlusion c кнопки Light Shader в свободный слот редактора материалов. Это нужно для того, чтобы иметь возможность редактировать параметры шейдера. Результат:

Как видим, такой способ позволяет правильно сочетать результат расчетов ambient occlusion и свойства материалов и освещения, к тому же прост и универсален – достаточно всего лишь поместить в сцену один ambient – источник.

Теперь посмотрим, как влияют параметры АО на результат.

Spread = 1, сэмплирующие лучи испускаются через полусферу над точкой. Такой способ дает наиболее размытые тени с плавными переходами и самозатенением. Для достижения качественного результата требует большого количества сэмплов и потому самый медленный.

Spread = 0.5, сэмплирующие лучи испускаются через конус углом в 90 градусов:

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

Для того, чтобы АО шейдер мог правильно строить отражения, необходимо использовать его в сочетании с картой типа Raytrace. Комбинация шейдера и такой карты может быть выполнена разными способами. Например, при помощи «оборачивающего» материала типа Mix, диаграмма материала поверхности может выглядеть так:

В качестве одной карты материала Mix выступает HDR изображение, которое используется для незаблокированных точек поверхности. Второй материал – mental ray Reflect, используется для расчета освещения заблокированных точек. Смешивание карт выполняет ambient occlusion, параметры которого настроены как в предыдущем случае.

Результат применения такого материала:

Теперь поверхность автомобиля правильно отражает окружение.

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

Приведенная диаграмма материала для reflective occlusion не единственна. Вот еще один пример на основе материала Fallof и Mix:

Можно придумать и другие, здесь поле для творчества ограничивается только фантазией и мерой необходимости.

Такие же комбинированные с шейдером ambient occlusion материалы можно создавать и для диффузных характеристик поверхностей.

Теперь сравним результаты и время расчета сцены с источником света SkyLight и реальными материалами, выполненный при помощи Final Gather, и расчет сцены с использованием ambient occlusion.

Для настройки освещения с помощью ambient occlusion нужно «ловить» соотношение интенсивности прямого освещения и ambient – освещения. Для этого удобно воспользоваться возможностью Material Override прямо из рендера и настраивать параметры шейдера ambient occlusion. Для данной сцены интенсивность точечного источника, дающего прямое освещение составила 0.2, для параметров шейдера АО выбраны следующие значения: Spread = 0.8, Samples = 32, mode = 1 (сэмплируется Environment), Max distance = 150 см.

При таких настройках «чистый» ambient occlusion выглядит так:

Такие настройки были выбраны из-за особенностей материала кузова автомобиля – он относительно темный. Для более светлого материала настройки шейдера АО могут быть другими, с более насыщенными тенями.

Теперь выполним полный рендер сцены, с текстурами:

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

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

Дальнейшим развитием этой техники рендеринга является использование тройной связки «фотонная карта + FG + ambient occlusion». В этом случае мы имеем альтернативу Exposure control – управления освещением при помощи экспозиции. При этом на ambient occlusion возлагается роль постоянного константного освещения, которое можно просто добавить к глобальному освещению, рассчитанному фотонными картами и Final Gathering. Таким образом можно избавиться от засветов в ярко освещенных областях сцены (возле окон) и одновременно добиться того, что темные области сцены будут достаточно хорошо освещены. Можно считать, что в данном случае ambient occlusion позволяет имитировать способность человеческого зрения приспосабливаться к освещению в широком диапазоне интенсивностей.

На практике следует рассчитывать глобальное освещение и ambient occlusion за два отдельных прохода и затем комбинировать их в программе обработки растровых изображений, поскольку расчет освещения методом фотонная карта + FG + ambient occlusion за один проход выполняется очень долго.

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

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *