Портал
О нас
Поиск
Галерея
Вход
Регистрация
Форум CG художников
»
Форум
»
Уроки
»
Статьи
»
Доступно, об AMBIENT OCCLUSION
Добро пожаловать на форум!
Поиск
Расширенный поиск
Профиль
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Не получили
письмо с кодом активации
?
25 Апреля 2024 в 06:36
Реклама
Discord группа
Пульс
Warframe не отображается ...
от
Dunkan
[14 Марта 2021 в 22:34]
Общий вопрос об Option Bo...
от
Саша Падалюк
[12 Января 2021 в 19:15]
Проблема с Curve Warp
от
Dunkan
[03 Декабря 2020 в 17:02]
Работа в процессе. Игрово...
от
cyro
[28 Ноября 2020 в 00:20]
Запекание текстур. Работа...
от
Igrom Gamer
[06 Июля 2020 в 18:18]
Charly Projects
от
artofcharly
[28 Июня 2020 в 19:37]
Монитор для 3D художника
от
madsax
[21 Июня 2020 в 13:27]
Улучшаем форум. Предложен...
от
AeRo
[19 Июня 2020 в 14:47]
Создание мультяшного мира...
от
Vesta
[11 Июня 2020 в 15:09]
Посоветуйте кресло для ра...
от
Vesta
[10 Июня 2020 в 16:11]
« предыдущая тема
следующая тема »
Печать
Страницы: [
1
]
Вниз
Доступно, об AMBIENT OCCLUSION (Прочитано 4221 раз)
0 Пользователей и 1 Гость просматривают эту тему.
Vesta
Автор: Михаэль Мацкевич
Немного истории
В стародавние времена, когда мониторы больше походили на баллистические орудия и расстреливали экраны своих владельцев электронами, а процессоры работали на частоте современных телефонов, просчет ambient occlusion был невозможен. Для того чтобы модели не казались совсем уж плоскими и для придания хоть какого-то визуального объема приходилось ограничиваться в основном точечными источниками света, а также старыми локальными методами тонирования, либо использовать заранее подготовленные карты теней и градиента.
Удивительно, но если говорить об истоках технологии, то она имеет частично российское происхождение. Изначально концепция модели фонового освещения, основанная на затенении, была изложена в статье, написанной доцентом кафедры прикладной математики СПб ГПУ Жуковым Сергеем Юрьевичем со своими коллегами - Андреем Ионесом и Григорием Крониным, которая была опубликована при поддержке европейской ассоциации компьютерной графики в Вене, Австрия в 1998 году. [1]
Идеи, сформулированные в статье, были положительно восприняты рендер-сообществом и легли в основу метода под названием Ambient Occlusion, который был представлен участникам конференции SIGGRAPH в 2002 году Хейденом Лендисом и его коллегами из Industrial Light & Magic [2]
С этого момента он начинает использоваться многими крупными студиями по всему миру и, в конце концов, становится стандартным инструментом, который в некоторых случаях является хорошей альтернативой полноценному глобальному освещению и позволяет в сжатые сроки значительно увеличить реалистичность изображения.
На сегодняшний день нет ни одного человека, который профессионально занимается компьютерной графикой и не знает о существовании ambient occlusion.
Между тем прогресс не стоит на месте, и технология продолжает развиваться. В настоящее время уже разработан и активно применяется целый ряд алгоритмов (таких как SSAO, HBAO, HDAO), позволяющих проводить расчет ambient occlusion в режиме реального времени.
Итак, что же такое Ambient Occlusion?
Если совсем коротко - это имитация освещенности объекта, с помощью его затенения. Более того, вы можете иногда встретить упоминание о данном методе, под таким названием как – «
затенение фонового освещени
я». Под словом «фоновое», имеется в виду непрямое освещение – рассеянное или отраженное от других предметов. Иногда используется термин «
sky light
».
Почему имитация?
Потому-что дешево. С точки зрения вычислительных ресурсов и времени, необходимых для просчета реального распространения света это выгодно.
Что означает сам термин?
Вы будете удивлены, но в переводе - это всего лишь, препятствия в окружающем пространстве.
Здесь название говорит само за себя и раскрывает суть метода, чуть более чем полностью. Но об этом
немного позже.
Где и для чего применяется?
1) В качестве фильтров маскѝрования затененных участков поверхностей в некоторых программах лепки скульптурных объектов и текстурирования.
2) Как основа для создания других текстурных карт. В виде шейдера для архитектурной визуализации лепнины, объектов из гипса, а также прочих декоративных элементов.
3) В материалах - для создания эффектов воронения и травления металлов. Для имитации искусственного патинирования, когда плоские части предмета имеют один цвет, а мелкие детали усеяны грязью и медным окислом. Визуализация расплавленного свинца и капель ртути (при использовании Reflection Occlusion pass + Environment Map + Cone Angle ≈10°). А при бо льших значениях Cone Angle + pre-blurred Environment Map + Reflection Occlusion pass, можно даже получить серебро и платину. В общем, сплошная алхимия!
4) Ну и основная область применения это, конечно же, работа с тенями. Часто используется визуализаторами для того, чтобы придать объектам определенный визуальный объем. И компоновщиками для того, чтобы при вставке объектов в уже существующую сцену они не казались там инородными предметами. Несмотря на то, что в этом случае, затенение все равно будет фальшивым – это обеспечит некоторую правдоподобность, которой может оказаться вполне достаточно.
Здесь также стоит сказать, что результатами просчетов можно воспользоваться по-разному. Например, их можно использовать для
постобработки рендера
.
Что имеется в виду?
Основное изображение и ambient occlusion рендерятся раздельно. Для рендера ambient occlusion создается специальный материал, который назначается на объекты сцены. В определенный слот этого материала устанавливается АО-шейдер. Затем производится компоновка и оба изображения, размещенные в разных слоях, при помощи Photoshop сводятся в одно посредством некоторого из режимов смешивания, например Multiply.
До некоторой степени весь этот процесс можно ускорить. Во-первых, рендер основного изображения и ambient occlusion можно выполнить в один прием, используя рендер-слои. Для этого нужно просто открыть Channel Box редактора и во вкладке с рендер-слоями, отметить пункт Render All Layers в меню Options. Во-вторых, материал с АО-шейдером можно назначить сразу на все объекты данного слоя, путем глобальной подмены текущего материала (RMB по рендер-слою, Overrides – Assign Existing Material Override), вместо того чтобы делать это в индивидуальном порядке и сбивать уже настроенные материалы. Но даже если у вас его нет, вы можете воспользоваться предварительно заданным материалом и его настройками, выбрав пункт Occlusion с помощью кнопки Presets, которую можно найти в Attribute Editor, во вкладке с названием слоя (RMB по рендер-слою, пункт Attributes).
В случае если и этого не достаточно, использование multi-render passes позволяет добиться почти полной автоматизации в этом вопросе. А поскольку все рендер-проходы рассчитываются практически одновременно (в отличие от рендер-слоев, каждый из которых рендерится поочередно), то появляется возможность значительно сократить общее время рендера. В каком-то смысле, эти два подхода являются противоположностью друг друга. Применение рендер-слоев предполагает сборку из них финального изображения, а извлечение из кадрового буфера отдельного рендер-прохода, наоборот позволяет разобрать это изображение на составные части. Вместе с тем, при использовании mental ray следует обратить внимание на опцию Ambient Occlusion (вкладки Indirect Lighting или Features в Render Settings). Просчет ambient occlusion render pass требует, чтобы она была включена.
Кроме всего прочего результаты просчетов ambient occlusion, точно также как и другие эффекты тонирования и освещения, можно выводить в текстуру объектов. Этот процесс называется запеканием (batch bake в Maya) или рендером в текстуру (render to texture в 3ds Max).
Наиболее оправдан такой подход для статических объектов. А делается это для того, чтобы не производить вычисления каждый раз, когда в этом нет никакого смысла. Либо когда вычислительных ресурсов просто не достаточно для того, чтобы сделать это в режиме реального времени, при адекватных затратах ресурсов системы, качестве и частоте обновления.
В чем отличительные особенности данной модели?
Ambient Occlusion является глобальным методом затенения, то есть значение яркости каждой точки объекта зависит от других объектов сцены. В локальных моделях Blinn-Phong, Gouraud, Lambert, Oren–Nayar, Cook-Torrance, Perona–Malik и.т.д. не все объекты сцены оказывают влияние на яркость заданной точки. Впрочем, даже несмотря на то, что затенение носит глобальный характер, модель является довольно грубым приближением к полноценному глобальному освещению. Мнимое освещение картинки, полученное с помощью чистого АО, похоже на свет пасмурного дня.
Почему глобальное затенение, часто путают с глобальным освещением (AO vs GI)?
Во-первых, потому-что в некотором приближении, они визуально похожи друг на друга и используются в аналогичных целях. Что касается открытых сцен (экстерьеров), Ambient Occlusion является достойной альтернативой полноценному глобальному освещению (Global Illumination), наряду с этим в закрытых сценах (интерьерах), добиться с его помощью реалистичного результата будет уже проблематично.
Однако физическая корректность освещения в компьютерной графике не всегда является первостепенной задачей, чаще достаточно просто правдоподобности освещения. В этом случае, алгоритм АО вполне способен обеспечить такую правдоподобность, показав убедительное и гладкое «псевдо-глобальное» освещение, причем время расчета будет гораздо меньше по сравнению со временем расчета методом FG + Photon Map.
Во-вторых, алгоритмы имеют небольшое сходство в методике расчета. В обоих случаях из вычисляемой точки испускаются лучи по полусфере. Однако, если GI - это отраженные от поверхности лучи, которые являются следствием лучей от источников света, то АО - это просто глобальное затенение и все. Кроме того, есть и другие существенные различия, которые важно понимать.
Глобальное освещение – это, прежде всего
вторичное освещение
, которое не затеняет объекты там, где они должны быть освещены. При расчетах также учитываются «color bleeding» и такие явления, как затухание света с расстоянием, потеря световой энергии лучами, при переотражениях между объектами. В то время как Ambient Occlusion – это просто черно белая карта глобального затенения.
В-третьих, оба алгоритма являются рендер-элементами, которые на стадии финального рендера объединяются с другими элементами, формируя окончательное изображение.
Принцип
работы Ambient Occlusion?
Суть метода в следующем. Для каждой точки поверхности, видимой в камеру, строится полусфера относительно ее нормали. Изначально цвет точек затеняемой поверхности белый, но в зависимости от геометрии сцены он может меняться. Далее через эту полусферу из каждой точки, в сцену испускается некоторое количество лучей. Все эти лучи, либо столкнутся с препятствиями в виде поверхностей других объектов и текущей геометрии или же, не встретив никаких преград на своем пути, выйдут за пределы заданного максимального расстояния. В первом случае они будут считаться «заблокированными» (occluded) и отмечены на рисунке красным линиями. Во втором случае они будут считаться «свободными» (unoccluded) и отмечены синим. В конечном счете, степень затенения каждой точки будет определяться как соотношение заблокированных лучей к свободным. Например, если все лучи пересекутся с препятствиями окружающего пространства и окажутся заблокированными, затенение отдельной точки будет 100%, а ее цвет - соответственно черным. Процесс вычисления продолжается до тех пор, пока не будут определены цвета всех точек, попадающих в текущий кадр, после чего производится аппроксимация.
Для того чтобы объяснить концепцию и назначение параметров более наглядным образом, мы будем использовать метафору. Название ряда параметров может различаться, в зависимости от используемой вами программы, но суть от этого не меняется.
Итак, на изображении выше полусфера представлена в виде ежика, а ее лучи можно мыслить как иголки, которыми он ощупывает окружающее его пространство, для того чтобы определить насколько темной или светлой будет точка, которая находится под ним. В нашем условном примере таких точек ровно пять, а двигаться наш еж будет по кругу против часовой стрелки. Перед запуском ежика в поход для поиска пропитания, его можно настроить.
Длину иголок можно указать с помощью параметра max distance, если он равен нулю, то их протяженность будет ограничена лишь границами сцены. При любых других значениях, отличных от нуля, становится возможным кроме длины игл задавать еще и их форму. Для этого используется параметр falloff. По умолчанию он равен 1.0, что означает прямолинейное уменьшение диаметра иглы от основания к вершине и задает ее форму в виде тонкого конуса. Значение меньше единицы делает иглы острее, а значение больше единицы - наоборот позволяет несколько затупить их концы. Колючий еж при затенении точек под ним, будет слабо учитывать влияние удаленных препятствий, находящихся на краях иголок по сравнению с теми, которые находятся у их основания. Количество иголок будет зависеть от параметра samples. Чем их больше, тем точнее результат. Также мы можем задать размах щетины. Площадь покрытия иглами можно определять посредством разных терминов. Например, значение параметра spread может изменяться от 0.0 до 1.0, что соответствует диапазону cone angle от 0° до 180° градусов. Другими словами, при значении spread равном единице - еж покроется иголками от носа до хвоста и сможет собрать максимальное количество съестных припасов у себя на спине. В тоже время не стоит ошибочно полагать, что при нулевом значении еж станет голым и пушистым, просто все его иголки соберутся в один луч, который будет ориентирован в том же направлении, что и вектор нормали.
После настройки, еж начинает двигаться по точкам затеняемой поверхности. Первая и третья точка затеняется лишь частично, поскольку в этих случаях только один луч сталкивается с препятствиями. Тем не менее, именно там ему удается найти вкусную добычу. Вторая точка затеняется полностью, поскольку все лучи сталкиваются с преградой в виде дерева. А четвертая и пятая точка остаются не затененными, поскольку лучи так и не встретили никаких препятствий на своем пути.
Вследствие того что Ambient occlusion является глобальным методом, он применятся ко всей сцене и точно так же, как и цвет для точек затеняемой окружности, будет вычислен цвет для точек яблока, дерева и гриба.
В заключение хотелось бы сказать, что метод в определенном смысле основан на доступности поверхностей к воздействию внешних факторов, таких как свет, снег, грязь и.т.д.
А теперь давайте отпустим нашего замечательного ежа прогуляться по трехмерным объектам реального мира, пусть он всегда помогает вам в ваших работах!
Originally presented @ cgforum.ru
Автор: Михаэль Мацкевич
Права на публикацию: Светлана Узких
Список источников
[1] S. Zhukov, A. Iones, G. Kronin - Ambient Light Illumination Model (Proceedings of Eurographics Rendering Workshop’98), Vienna, Austria 1998
[2] Hayden Landis, Production-Ready Global Illumination, «RenderMan in Production» SIGGRAPH Course Notes, 2002
Вопрос задан
30 Мая 2014 в 10:43
mxmxma
Хорошая статья) Прям даже литературная немного) В Мише живет писатель..)
Ответ написан
30 Мая 2014 в 22:13
ghostdom
Классная статья)
Ответ написан
30 Мая 2014 в 22:44
Vesta
Немного об АО опубликовали на 3d папе --
http://3dpapa.ru/ambient-occlusion/
Ответ написан
06 Июля 2014 в 14:44
Печать
Страницы: [
1
]
Вверх
« предыдущая тема
следующая тема »
Форум CG художников
»
Форум
»
Уроки
»
Статьи
»
Доступно, об AMBIENT OCCLUSION
Реклама
Сейчас на сайте
30 Гостей, 0 Пользователей
TinyPortal 1.6.6
©
2005-2020