Ambient occlusion что это в играх – Ssao — Википедия

Что такое Ambient occlusion (AO) и как его использовать в Vray и 3ds Max?

Привет.

На самом деле все наоборот, амбиент оклюжен (AO) это не метод глобального освещения, напротив, это метод глобального затенения 😁

Суть метода в следующем.

Представим, есть плоскость и на ней стоит кубик.

На поверхности кубика берется точка [1] и вычисляется ее цвет. Номинально цвет ее белый, но в зависимости от геометрии сцены он может затемняться.

Как это происходит?

Из точки испускаются лучи. То же самое происходит и с другими точками на поверхности кубика, точками [2] и [3]. На схеме я условно показал три точки, но на самом деле вся поверхность объектов будет усеяна такими точками.

Итак, лучи исходят из всех точек и летят до столкновения с другими поверхностями, столкновения отмечены красной точкой.

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

В нашем условном примере, только один из трех лучей из точки [1] пересекся с геометрией сцены (с плоскостью). Остальные два луча – нет, что делает вычисляемую точку светло-серой.

Однако, почему только один луч столкнулся с объектом? Логично предположить, что все лучи рано или поздно столкнутся с какой-то геометрией. Тогда точка [1] станет еще темнее?

Нет. Вычисления пресечений лучей выдуться только в определенном радиусе, что очевидно на схеме выше - радиусы показаны желтыми дугами. Это не только исключает путаницу в сложных сценах, где множество объектов, просто удаленных друг от друга, а также предотвращает бесконечные вычисления пересечения для лучей, которые улетают в пространство и никогда ни с чем не пересекаются. Разумеется, величина радиуса просто задается в параметрах ambient occlusion.

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

Ambient occlusion называют глобальным потому что он применятся ко всей сцене и точно так же, как и на кубике, будет вычислен и цвет плоскости. Другими словами, вышеописанными точками будут усеяны все объекты, не только куб.

На практике Ambient occlusion кубика и плоскости будет выглядеть так (элемент A):

Почему AO затенение путают с GI освещением?

Во-первых, потому, что они зачастую используются в аналогичных целях.

По сути роль Ambient occlusion – это дешевая (в плане вычислительных ресурсов) замена Global illumination. Разумеется, AO, который является 100% фейком и близко не приближается к GI, который именно имитирует поведение лучей вторичного освещения. Однако визуально AO все же напоминает GI. Когда в сцене появляются темные углы и «теньки» под объектами (С).

Во-вторых, AO так же как и GI испускает лучи по полусфере из вычисляемой точки. Вспомни главу «Глобальное освещение в компьютерной графике» из урока про оптимальные настройки V-Ray. В частности картинку с зеленым лучом прямого света и красными полусферическими (hemispheric) лучами GI. Однако если GI это вторичные лучи, то есть следствие первичных, испускаемых источниками света, то AO это просто глобальное затенение и все. Современные AO движки уже умеют учитывать источники света, фейково не затеняясь там, куда светит источник и полностью применяя затенение туда, куда прямые лучи источника не попадают. Другими словами использует направление света. Но это все равно очень грубо, особенно учитывая радиусность работы полусферических лучей AO.

Следует понимать, что GI это все-таки вторичное освещение, чего только стоит color bleeding, избыточность которого является паразитным, однако его наличие в сцене просто обязательно, так как это физический процесс происходящий в реальном мире и это добавляет рендерам фотореалистичности. В то время как AO – это просто Ч/Б карта глобального затенения 🙄

В-третьих, AO так же, как и GI является рендер элементом (A), который на стадии финального рендеринга накладывается с остальными элементами (B), в результате образуя изображение с псевдо-GI (C).

Вот собственно и вся теория AO, по крайней мере, в общих чертах.

Несмотря на далекую от реальности суть, Ambient occlusion все же очень клевая штука. При правильном использовании она порой бывает просто незаменима.

Я предлагаю тебе переварить изложенную выше инфу, думаю ты сам догадаешься как можно использовать AO, но в любом случае, в рамках этой темы, мы сможем рассмотреть разные варианты и примеры 😉

ru.renderstuff.com

Подробности графических настроек ПК-игр. Часть 2

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

Анизотропная фильтрация

Объяснение: анизотропная фильтрация(фильтрация текстур) создает текстуры поверхностей, которые видны под углом и делает их более четкими. Чутобы увидеть работу анизтропной фильтрации достаточно просто взглянуть на землю в нескольких метрах от себя, а затем сравнить четкость текстуры земли под собой и на отдалении от персонажа. Чем дальше находится точка, в которую направлен ваш взгляд, тем более размытой становится текстура. С включенной анизтропной фильтрацией поверхности расположеные далеко от вас становяться заметно четче.

Эффект фильтрации текстур становится куда заметнее при движении вашего персонажа вперед в игровом мире. Изменение качества прорисовки текстур при приближении к ним может быть достаточно сильным.

Что на скриншоте: внимание на скриншоте стоит обратить на мостовую Праги из Deus Ex: Mankind Divided. На левом скриншоте вы видите, что чем ближе текстура брусчатки к зданию, тем более размытой она становится. На правом скриншоте текстура брусчатки становится куда четче.

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


Ambient occlusion

Объяснение: Ambient occlusion затемняет места, в которые не должен падать свет. Что мы получаем в результате? Куда более проработанные тени, куда более реалистичное отображение всего окружения. Хотя Ambient occlusion и не занимается прорисовкой теней в реальном времени, эта опция все же требует достаточно много ресурсов. Все дело в том, что при включенном Ambient occlusion игре приходится постоянно просчитывать месторасположение объектов по отношению друг к другу и источникам света, чтобы понять в какие места свет попадать не может. Есть два виде Ambient occlusion:

  • SSAO(Screen space ambient occlusion) был впервые представлен в первом Crysis'e. Данный метод представляет из себя лишь базовое затемнение пикселей, которые находятся вне источников света.
  • HBAO(Horizon-based ambient occlusion) - это SSAO поднятое на новый уровень. HBAO увеличивает количество проб, которые используются при расчете областей, которые должны быть затемнены. В итоге вы получаете куда более реалистичную картинку, правда и вашему компу приходится работать намного больше.

Что на скриншоте: скрин из игры Deus Ex: Mankind Divided. На левом скриншоте Ambient occlusion отключен, на правом включен HBAO. Особое внимание стоит обратить на стену за микроволновкой и объекты на полках. Можно заметить, что тени стали куда реалистичнее и у картинки появилась глубина.

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


Bloom


Объяснение: Bloom увеличивает яркость источников света в игровом мире. В основном это сделано для того, чтобы всевозможные источники выглядели более реалистично — чуть ближе к тому, как мы видим их в реальном мире. Свет будет проникать через окна, создавая серьезный контраст в картинке при перемещении игровой камеры из помещения на улицу.

Во многих играх эффект Bloom'a реализован достаточно плохо, что выливается в искусственное перенасыщение светом. Это становится особенно заметно, если поверхности начинают отражать свет и сиять, когда на самом деле такого происходить не должно.

Что на скриншоте: The Witcher 3: Wild Hunt предлагает игрокам возможность включить Bloom, и в этой игре он реализован просто отлично. Если смотреть на солнце с отключенным Bloom'ом, то похоже, что ты смотришь на большой яркий белый шар. Если же включить Bloom, то все выглядит куда более реалистично, со светом, который каскадом расходится по окружению.

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


Motion Blur

Объяснение: идея Motion Blur достаточно проста: окружение вокруг персонажа будет размываться при повороте камеры, чтобы подчеркнуть чувство движения. При этом текстуры, являющиеся частью игрового персонажа размываться не должны.

Что на скриншоте: оба скриншота сделаны в игре Crysis Warhead во время постоянного дерганья мышки из стороны в сторону. На левом скриншоте motion blur отключен и создается ощущение, что скриншот сделан в состоянии полной неподвижности. Если же включить данную опцию(и установить максимальный эффект размытия), то все кроме оружия персонажа будет неразличимым.

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


Тесселяция

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

Что на скриншоте: в Metro: Last Light есть несколько моментов, в которых можно увидеть то, как меняется картинка при включенной тесселяции. Тесселяция выключена на левом скриншоте и включена на правом. При включении данной опции камни начинают чуть сильнее выпирать из стены, а трещины становятся немного глубже.

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


Depth of field(глубина резкости)

Объяснение: в играх данная опция является симуляцией глубины резкости применяемой в фотографии. Результатом ее использования становится немного размытые задники и четкая прорисовка объектов на переднем плане. Многие игры ограничивают применение глубины резкости до моментов, когда перед камерой находится лишь один объект, или вы используете зум или прицеливание.

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

Что на скриншоте: этот скрин сделан в Dishonored 2, при взгляде через увеличительное стекло Эмили. Как вы можете увидеть на левом скриншоте, капсула является центром внимания, однако все изображение находится в фокусе. При включении глубины резкости на правом скриншоте, капсула становится единственным элементом, остающимся в фокусе, а все задники размываются.

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


Качество текстур

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

Что на скриншоте: этот потертый металлический балкон в Dishonored 2, достаточно наглядно демонстрирует разницу между низким и высоким качеством текстур.

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


Качество теней

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

Что на скриншоте: на картинке мы видим Агента 47, которые наслаждается небольшим отдыхом в тени дерева прежде чем приступить к выполнению контракта. На низких настройках тени выглядят как скопление пятен, а на высоких мы мы можем заметить, как прорисовывается тень от отдельных листьев. В случае с Hitman, в движении тени не ведут себя вполне адекватно независимо от настроек.

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


Дальность прорисовки теней

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

В дни сразу после релиза, Fallout 4 страдал от слишком большой дальности прорисовки теней. Производительность внезапно падала при входе в локации с большим количеством зданий просто потому, что игра отрисовывала тени объектам, находящимся на серьезном расстоянии от игрока. После модификации данной настройки вручную, внезапные падения fps пропадали.

Что на скриншоте: Несмотря на то, что Dishonored 2 не дает вам контроля над тем, на какой дистанции будут прорисовываться тени, данный параметр включен в настройки качества теней. На левом скриншоте вы видите, что тени менее детализированы, но сможете ли вы заметить тот предел, за которым они перестают рендерится?

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

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


Заключение

Одно дело видеть все эти настройки на скриншоте и совсем другое наблюдать их влияние на картинку в движении. Эффекты вроде сглаживания и ambient occlusion куда заметнее в самой игре во время исследования окружения.

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

goodgame.ru

Ambient occlusion — WiKi

У этого термина существуют и другие значения, см. Ambient. Использованы модели (сверху вниз): прямого освещения, Ambient occlusion (AO) и комбинированная модель AO и прямого освещения

Ambient occlusion (AO) — модель затенения, используемая в трёхмерной графике и позволяющая добавить реалистичности изображению за счёт вычисления интенсивности света, доходящего до точки поверхности. В отличие от локальных методов, как например затенение по Фонгу, ambient occlusion является глобальным методом, то есть значение яркости каждой точки объекта зависит от других объектов сцены. В принципе, это достаточно отдалённо напоминает глобальное освещение.

Ambient occlusion чаще всего вычисляется путём построения лучей, исходящих из точки поверхности во всех направлениях, с последующей их проверкой на пересечение с другими объектами. Лучи, достигнувшие фона или «неба», увеличивают яркость поверхности, в то время как лучи, пересекающие другие объекты, не добавляют яркости. В результате точки, окружённые большим количеством геометрии, отрисовываются как более тёмные, а точки с малым количеством геометрии в видимой полусфере — светлыми.

Ambient occlusion относится к методам, основанным на доступности элемента поверхности для различных факторов, таких как грязь, свет и т. д. Он получил популярность благодаря относительной простоте и достаточно высокой эффективности. Часто AO также называют «sky light».

Модель AO способствует лучшему восприятию объёма изображаемых объектов, нежели модель прямого освещения[1].

Затенение Ap{\displaystyle A_{p}} в точке p{\displaystyle p} поверхности с нормалью N{\displaystyle N} может быть посчитано путём интегрирования функции видимости по полусфере Ω{\displaystyle \Omega }:

Ap=1π∫ΩVp,ω(N⋅ω)dω{\displaystyle A_{p}={\frac {1}{\pi }}\int \limits _{\Omega }V_{p,\omega }(N\cdot \omega )\,d\omega }

где Vp,ω{\displaystyle V_{p,\omega }} — значение функции видимости в точке p{\displaystyle p}, равное нулю, если луч из p{\displaystyle p} в направлении ω{\displaystyle \omega } имеет пересечение с объектом, и равное единице в остальных случаях. На практике для взятия этого интеграла используются различные техники: возможно, одним из самых частоиспользуемых является метод Монте-Карло. Другой метод (более полно использующий возможности аппаратного ускорения) — рендеринг сцены из точки p{\displaystyle p} с растеризацией геометрии чисто чёрным цветом на белом фоне. Усреднённое значение яркости полученного кадра и есть примерное значение функции в данной точке. Этот способ — пример собирательного метода (метод изнутри-наружу), в то время, как другие подходы (такие, как depth-map ambient occlusion) используют рассеивание (метод снаружи-внутрь).

Кроме значения затенения часто вычисляют дополнительный вектор Nb{\displaystyle N_{b}} («отклонённая нормаль»), показывающий примерное направление к открытому (незатенённому) пространству. Этот вектор может быть использован для получения освещения из карты окружения. Однако бывают ситуации, когда вектор Nb{\displaystyle N_{b}} показывает отнюдь не в направлении максимального освещения.

ru-wiki.org

Да пребудет с вами Амбиент Окклюжн. Небольшая экскурсия в рендер-пасс AO (ambient occlusion)

Интеграция фотографии в изображение 3D.
Как вставить 3D объекты в фотографию.
Как оживить "плоский рендер"

Хотите соглашайтесь, хотите нет, но порой сама картинка "окклюжна" выглядит так круто, что хочется вообще её взять за основу в дизайне.
Чуть подкрасить и готово!

Начать свой маленький цикл "какэтосделано" (makingof) я хочу с пробега по этой замечательной вещи
и так, знакомьтесь - AMBIENT OCCLUSION.

Условно, все тени в изобразительном мастерстве и во всех вытекающих, например в композитинге, можно раделить на ГЛОБАЛЬНЫЕ И ЛОКАЛЬНЫЕ.
Повторяю - УСЛОВНО!

Если вкратце, то АО - это локальные тени, которые далеко не убегают.
Это тени от соприкосновения деталей, объектов, от прижимающихся, приближающихся поверхностей.

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

***

Пассов (Passes) в 3Д композинге дофига вских разных.

В любом 3Д редакторе есть или должна быть возможность вывести пасс AO (ambient occlusion) на визуализацию (рендер).

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

Зачем вообще это нужно, ведь можно настроить финальную картинку и спокойно нажать кнопку "RENDER"?

***

СКОРОСТЬ и ГИБКОСТЬ!

» Во-первых, на сегодня все графические редакторы яростно отсасывают у фотошопа по всем параметрам.
На сегодня это самый удобный, распространённый, мощный, быстрый инструмент.

» Во-вторых, редактировать картинку ВНЕ фотошопа, скажем прямо в "блэндере" - онанизм. Ну или эксперименты.

» В третьих, оперировать пациента удобнее когда он уже обезболен, нарезан ломтиками и вообще подготовлен к операции.

Фишка не в том, чтобы сделать правильно и долго, а в том, чтобы сделать быстро и красиво.
Если вы будете сутками мудохаться с настройками рендера, то потом вас будет тошнить от вашей картинки, что непременно
скажется на результате - зритель проблюётся синхронно с вами.
Не верите?

Тезис прост - никому нафиг не сдался реализм, если это не "Международное бюро мер и весов" или фотоматериалы уголовного дела.

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

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

Но вернёмся к нашим овцам.

***

Отрендерили вы картинку.
Что с этим делать?

Очень просто. Кидаем картинку с АО верхним слоем над основной картинкой в фотошоп.
И назначаем слою режим наложения MULTIPLY (УМНОЖЕНИЕ? Заклинаю - выкиньте русифицированый фотошоп)
Всё.
Ну или почти все.

Наведите мышку (до и после):

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

***

Как достать АО-Pass из "блэндера":

Нужно включить во вкладке PASSES галочку AO

Отрендерить и сохранить картинку можно из Render layers.
Можно сразу сохранять в файл file output, а можно потом из окна Image Editor переключить на Viewer Node и сохранить оттуда - F3.

Сам по себе пасс АО не является стопроцентно обязательным.
Но он является очень важным, нужным и интересным инструментом в постобработке

"Всё есть контраст!"
В принципе любая информация суть - контраст. Будь то жизненный опыт, световой поток, синусоида, цветовой канал в модели sRGB и тд и тп.
Пасс Ambient Occlusion поможет вам подчеркнуть этот контраст в нужном месте, дать понять глазам зрителя, что вещь на картинке объёмна, жива и реальна... хаха.
"Жи" и "ши" пиши с правильной буквой!

Приятных мыслей в процессе постижения.
© Виталий Сокол для читателей своего блога.

vitaly-sokol.livejournal.com

Ambient Occlusion



Ambient Occlusion<< к оглавлению...

Ambient Occlusion

Ambient Occlusion/AO (дословно: внешнее преграждение, перекрытие окружающей среды) это процесс, который для любой отдельно взятой (освещённой) точки вычисляет, насколько эта точка "перекрывается" окружающими её объектами.
Рендер-системы, такие как Brazil, рассчитывают ambient occlusion как часть собственной системы skylight.
Skylight (небесный, он же верхний или потолочный свет) – свет исходящий из сферы, окружающей всю сцену (как естественный уличный свет в реальном мире). После того, как просчитано значение АО для заданной точки, свет множится на это значение, в результате чего и получается конечная насыщенность света в каком-либо определённом месте. В итоге, получаем равномерно освещённую сцену с мягкими тенями (или затемнениями) в трещинах и щелях и под самими объектами, примерно так, как выглядят тени в пасмурный день.
Обратите внимание, в этом примере плоскость "отсекает" любой свет, идущий из под сферы.

Для того, чтобы создать небесный свет во многих рендер-системах достаточно просто нажать кнопку skylight, но иногда не плохо иметь представление о том, как это всё происходит. И данный урок – лишь небольшое введение в тему "как расчитывается ambient occlusion, и как это зрительно отражается на картинке".

Итак, Skylight осветил всю сцену. Теперь, возьмём точку, которую желаем отрендерить. Назовём её точка А. Затем, "выстреливаем" определённое число лучей из точки А в полусферическом направлении вокруг нормалей плоскости (так как это плоскость имитирует землю/пол, её нормали направлены наверх), и смотрим насколько часто эти лучи перекрываются близлежащими объектами. В этом примере, мы "выстреливаем" 5 лучей (в реальности, при просчёте гораздо больше, чем 5; для простоты возьмём 5). Лучи 1, 2 и 3 не касаются никакого объекта на своём пути (наверх) к полусфере. Лучи 4 и 5 попадают на близлежащий объект (сферу), и таким образом, лучи имеют преграду. Итак, на этой картинке, мы выпустили всего 5 лучей, 2 луча получились с преграждением, так получаем соотношение лучей перекрытых и всех лучей в целом – 2 из 5 (запишем как 2/5).

Теперь, посмотрим на точку В на плоскости, которая ближе к сфере. Снова "выстреливаем" 5 лучей, лучи 1 и 2 – идут без каких-либо препятствий, оставшиеся попадают на сферу (и соответственно, имеют преграду). Для точки В получаем значение 3/5.

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

В нашем 3D пространстве, это даёт нам следующую картину...

Теперь умножим наш небесный свет на обратную величину картинки с AO, и получим изображение с (изученным явлением) Ambient Occlusion.

Теперь, когда вы будете создавать "уличную" сцену, для реалистичности очень рекомендую добавить немного небесного света (не забывая и про другие источники света, такие, как направленный светло-жёлтый свет для солнца).
Конечно, реальные математические расчёты, задействованные в данной технике, гораздо сложнее, и разнятся для каждой системы рендеринга, и данный урок даёт лишь основное начальное представление об ambient occlusion.
Также следует учесть, что системы рендеринга, имеющие skylight, но без ambient occlusion обычно не учитывают величину максимального расстояния в своих расчётах AO, эта величина определяет значение, учитывающее насколько делеко уйдут выпущенные лучи перед тем, как они будут считаться лучами, не имеющими на своём пути препятствий. Это бывает полезно для расчётов ambient occlusion внутри помещений. Но так как небесный свет (skylight) изначально предназначен для имитации неба, а не для более общей цели расчета "перекрытий" света и в большинстве случаев не имеет таких настроек. Создаётся некоторая путаница в том, для чего нужен небесный свет, а для чего – ambient occlusion. Как правило, небесный свет – это свет, в котором рассчитывается ambient occlusion без параметра максимального расстояния, а шейдер ambient occlusion просто создаёт "изображение с перекрытием" без света, и обычно имеет такие настройки как величина максимального расстояния. В идеале, конечно, следует использовать оба метода.


оригинал статьи : http://www.neilblevins.com/cg_education/ambient_occlusion/ambient_occlusion.htm
перевод и адаптация: Александр Ергашов /© 2009-2012/
<< к оглавлению...

www.cgtut.virtualer.info

Ambient occlusion - это... Что такое Ambient occlusion?

Использованы модели (сверху вниз): прямого освещения, Ambient occlusion (AO)и комбинированная модель AO и прямого освещения

Ambient occlusion (AO) — модель затенения, используемая в трёхмерной графике и позволяющая добавить реалистичности изображению за счёт вычисления интенсивности света, доходящего до точки поверхности. В отличие от локальных методов, как например затенение по Фонгу, ambient occlusion является глобальным методом, то есть значение яркости каждой точки объекта зависит от других объектов сцены. В принципе, это достаточно отдалённо напоминает глобальное освещение.

Ambient occlusion чаще всего вычисляется путём построения лучей, исходящих из точки поверхности во всех направлениях, с последующей их проверкой на пересечение с другими объектами. Лучи, достигнувшие фона или «неба», увеличивают яркость поверхности, в то время как лучи, пересекающие другие объекты, не добавляют яркости. В результате точки, окружённые большим количеством геометрии, отрисовываются как более тёмные, а точки с малым количеством геометрии в видимой полусфере — светлыми.

Ambient occlusion относится к методам, основанным на доступности элемента поверхности для различных факторов, таких как грязь, свет и т. д.. Он получил популярность благодаря относительной простоте и достаточно высокой эффективности. Часто AO также называют «sky light».

Модель AO способствует лучшему восприятию объёма изображаемых объектов, нежели модель прямого освещения[1].

Затенение в точке поверхности с нормалью может быть посчитано путём интегрирования функции видимости по полусфере :

где  — значение функции видимости в точке , равное нулю, если луч из в направлении имеет пересечение с объектом, и равное единице в остальных случаях. На практике для взятия этого интеграла используются различные техники: возможно, одним из самых частоиспользуемых является метод Монте-Карло. Другой метод (более полно использующий возможности аппаратного ускорения) — рендеринг сцены из точки с растеризацией геометрии чисто чёрным цветом на белом фоне. Усредненное значение яркости полученного кадра и есть примерное значение функции в данной точке. Этот способ — пример собирательного метода (метод изнутри-наружу), в то время, как другие подходы (такие, как depth-map ambient occlusion) используют рассеивание (метод снаружи-внутрь).

Кроме значения затенения часто вычисляют дополнительный вектор («отклоненная нормаль»), показывающий примерное направление к открытому (незатенённому) пространству. Этот вектор может быть использован для получения освещения из карты окружения. Однако бывают ситуации, когда вектор показывает отнюдь не в направлении максимального освещения.

См. также

Примечания

  1. «Depth discrimination from shading under diffuse lighting», M.S. Langer and H. H. Buelthoff, Perception. 29 (6) 649—660, 2000.

Внешние ссылки

xzsad.academic.ru

Ambient occlusion - это... Что такое Ambient occlusion?

Использованы модели (сверху вниз): прямого освещения, Ambient occlusion (AO)и комбинированная модель AO и прямого освещения

Ambient occlusion (AO) — модель затенения, используемая в трёхмерной графике и позволяющая добавить реалистичности изображению за счёт вычисления интенсивности света, доходящего до точки поверхности. В отличие от локальных методов, как например затенение по Фонгу, ambient occlusion является глобальным методом, то есть значение яркости каждой точки объекта зависит от других объектов сцены. В принципе, это достаточно отдалённо напоминает глобальное освещение.

Ambient occlusion чаще всего вычисляется путём построения лучей, исходящих из точки поверхности во всех направлениях, с последующей их проверкой на пересечение с другими объектами. Лучи, достигнувшие фона или «неба», увеличивают яркость поверхности, в то время как лучи, пересекающие другие объекты, не добавляют яркости. В результате точки, окружённые большим количеством геометрии, отрисовываются как более тёмные, а точки с малым количеством геометрии в видимой полусфере — светлыми.

Ambient occlusion относится к методам, основанным на доступности элемента поверхности для различных факторов, таких как грязь, свет и т. д.. Он получил популярность благодаря относительной простоте и достаточно высокой эффективности. Часто AO также называют «sky light».

Модель AO способствует лучшему восприятию объёма изображаемых объектов, нежели модель прямого освещения[1].

Затенение в точке поверхности с нормалью может быть посчитано путём интегрирования функции видимости по полусфере :

где  — значение функции видимости в точке , равное нулю, если луч из в направлении имеет пересечение с объектом, и равное единице в остальных случаях. На практике для взятия этого интеграла используются различные техники: возможно, одним из самых частоиспользуемых является метод Монте-Карло. Другой метод (более полно использующий возможности аппаратного ускорения) — рендеринг сцены из точки с растеризацией геометрии чисто чёрным цветом на белом фоне. Усредненное значение яркости полученного кадра и есть примерное значение функции в данной точке. Этот способ — пример собирательного метода (метод изнутри-наружу), в то время, как другие подходы (такие, как depth-map ambient occlusion) используют рассеивание (метод снаружи-внутрь).

Кроме значения затенения часто вычисляют дополнительный вектор («отклоненная нормаль»), показывающий примерное направление к открытому (незатенённому) пространству. Этот вектор может быть использован для получения освещения из карты окружения. Однако бывают ситуации, когда вектор показывает отнюдь не в направлении максимального освещения.

См. также

Примечания

  1. «Depth discrimination from shading under diffuse lighting», M.S. Langer and H. H. Buelthoff, Perception. 29 (6) 649—660, 2000.

Внешние ссылки

med.academic.ru

Оставьте первый комментарий

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*