Главная » Обсуждения » Вопросы по 3ds Max » Что такое Ambient occlusion (AO) и как его использовать в Vray и 3ds Max?
Что такое Ambient occlusion (AO) и как его использовать в Vray и 3ds Max?
Антон (RenderStuff) #1552, 279 дней назад
Привет.
На самом деле все наоборот, амбиент оклюжен (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, но в любом случае, в рамках этой темы, мы сможем рассмотреть разные варианты и примеры
На самом деле все наоборот, амбиент оклюжен (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, но в любом случае, в рамках этой темы, мы сможем рассмотреть разные варианты и примеры

ASRockus #1558, 278 дней назад
Привет Антон!
Благодарю за написаную статью и пояснения. Всё очень доступно пояснил, но если честно, то я пока не догадался как можно это использовать(знаний маловато). Однако в инет-сети, видел уроки где эта штука используется для рендеринга в текстуру, уверен что это не единственное её применение и назначение.И ещё думаю на финальный рендер можно в фотошоп наложить картинку АО в каком нибудь из режимов(если не прав, то поправь).Было бы здорово, если ты подсказал где конкретно (простенький пример) это можно использовать, а я уже поэкспериментировал бы и со скринами запостил для обсуждения. Многим думаю в дальнейшем пригодится эта тема! Спасибо заранее.
Благодарю за написаную статью и пояснения. Всё очень доступно пояснил, но если честно, то я пока не догадался как можно это использовать(знаний маловато). Однако в инет-сети, видел уроки где эта штука используется для рендеринга в текстуру, уверен что это не единственное её применение и назначение.И ещё думаю на финальный рендер можно в фотошоп наложить картинку АО в каком нибудь из режимов(если не прав, то поправь).Было бы здорово, если ты подсказал где конкретно (простенький пример) это можно использовать, а я уже поэкспериментировал бы и со скринами запостил для обсуждения. Многим думаю в дальнейшем пригодится эта тема! Спасибо заранее.

RenderStuff #1565, 278 дней назад
Начнем с ого, что современные рендер-движки, в том или ином виде используют AO в своей работе, то есть он встроен в некоторые их инструменты.
В частности, последние версии V-Ray, умеют подмешивать AO фейк в Indirect illumination. В одноименном свитке Indirect illumination (GI) даже есть отдельный раздел Ambient occlusion.
Кроме того, у V-Ray есть специализированная карта Ambient occlusion, она называется VRayDirt.
VRayDirt – это параметрическая карта, буквально являющаяся Ambient occlusion затенением, которое можно применять непосредственно в шейдерах (материалах) V-Ray.
Там есть два слота, которые определяют цвета точек, полусферические лучи из которых встречаются с преградой (Occluded color), и наоборот, лучи из которых не встречаются с преградой (Unoccluded color), а так же остальные функции управления алгоритмом Ambient occlusion затенения.
Мы полностью согласны с разработчиками V-Ray по поводу названия этой карты, которое в переводится как Вирей Грязь
Если ты посмотришь на последнюю картинку с кубиком на плоскости, то будет сложно не согласиться с тем, что AO скорее напоминает грязь в месте соприкосновения нижней части кубика и плоскости, налипшую там за долгие годы, нежели тень от GI
Хотя бы потому, что тень не может быть равномерной вокруг предмета, она может падать только лишь в неосвещенной стороне, в том время, как при глобальном освещении, то есть когда свет бьет отовсюду, темная зона может быть ТОЛЬКО лишь ПОД кубиком, но никак не сов всех его сторон.
Тем не менее, эту грязь можно прекрасно использовать в материалах. Например, в материалах классической мебели для имитации патирования, когда плоские части предмета имеют один цвет, а мелкие детали, в основном в углах, усеяны грязью или медным окислом или просто искусственной патиной, имитирующей старину.
Вот погляди на материал 3d модели стола для руководителя. Несложно заметить характерные для такой мебели почернения на мелких деталях отделки. В частности, по периметру филенки фасадов. Эти почернения - не растровая текстура. Это все сделано шейдером, а именно Ambient occlusion затенением с помощью карты VRayDirt.
Также, ты верно подметил, что Ambient occlusion можно использовать для постобработки рендера. Для этого необходимо сделать некое подобие так называемого Ambient occlusion pass.
Делается он элементарно.
Создается VRayLightMtl. В его основной слот Color – вкладывается карта VRayDirt.
Затем, этот материал помещается в Override mtl слот свитка V-Ray: Global switches. А также выключаются остальные эффекты в нем же, чтобы рендер шел максимально быстро.
Этот трюк попросту подменяет все материалы сцены на созданный нами VRayLightMtl с AO – картой VRayDirt.
После чего сцена рендерится и на выходе мы получаем черно-белую карту затенения Ambient occlusion всей сцены.
Теперь можно приступать к компоузингу.
Финальный рендер и Ambient occlusion pass закидываешь в Photoshop и там, на финал накладываешь AO пас с помощью одного из режимов наложения слоев, например, Multiply.
Вот собственно и все. Так у тебя появляются больше деталей на изображении, но опять же, далеко не всегда это красиво и тем более реалистично.
Возвращаясь к упомянутому в начале свитку Indirect illumination (GI), то он делает совершенно то же самое, только автоматически. То есть он просто на финальный рендер накладывает Ambient occlusion pass, таким образом пытаясь скомпенсировать недостаточную детализацию при низких настройках вторичного освещения.
Вот в общих чертах, так и используют Ambient occlusion в V-Ray и, в принципе, в любых других рендерерах, работающих с этой моделью затенения
В частности, последние версии V-Ray, умеют подмешивать AO фейк в Indirect illumination. В одноименном свитке Indirect illumination (GI) даже есть отдельный раздел Ambient occlusion.
Кроме того, у V-Ray есть специализированная карта Ambient occlusion, она называется VRayDirt.
VRayDirt – это параметрическая карта, буквально являющаяся Ambient occlusion затенением, которое можно применять непосредственно в шейдерах (материалах) V-Ray.
Там есть два слота, которые определяют цвета точек, полусферические лучи из которых встречаются с преградой (Occluded color), и наоборот, лучи из которых не встречаются с преградой (Unoccluded color), а так же остальные функции управления алгоритмом Ambient occlusion затенения.
Мы полностью согласны с разработчиками V-Ray по поводу названия этой карты, которое в переводится как Вирей Грязь
Если ты посмотришь на последнюю картинку с кубиком на плоскости, то будет сложно не согласиться с тем, что AO скорее напоминает грязь в месте соприкосновения нижней части кубика и плоскости, налипшую там за долгие годы, нежели тень от GI
Хотя бы потому, что тень не может быть равномерной вокруг предмета, она может падать только лишь в неосвещенной стороне, в том время, как при глобальном освещении, то есть когда свет бьет отовсюду, темная зона может быть ТОЛЬКО лишь ПОД кубиком, но никак не сов всех его сторон.
Тем не менее, эту грязь можно прекрасно использовать в материалах. Например, в материалах классической мебели для имитации патирования, когда плоские части предмета имеют один цвет, а мелкие детали, в основном в углах, усеяны грязью или медным окислом или просто искусственной патиной, имитирующей старину.
Вот погляди на материал 3d модели стола для руководителя. Несложно заметить характерные для такой мебели почернения на мелких деталях отделки. В частности, по периметру филенки фасадов. Эти почернения - не растровая текстура. Это все сделано шейдером, а именно Ambient occlusion затенением с помощью карты VRayDirt.
Также, ты верно подметил, что Ambient occlusion можно использовать для постобработки рендера. Для этого необходимо сделать некое подобие так называемого Ambient occlusion pass.
Делается он элементарно.
Создается VRayLightMtl. В его основной слот Color – вкладывается карта VRayDirt.
Затем, этот материал помещается в Override mtl слот свитка V-Ray: Global switches. А также выключаются остальные эффекты в нем же, чтобы рендер шел максимально быстро.
Этот трюк попросту подменяет все материалы сцены на созданный нами VRayLightMtl с AO – картой VRayDirt.
После чего сцена рендерится и на выходе мы получаем черно-белую карту затенения Ambient occlusion всей сцены.
Теперь можно приступать к компоузингу.
Финальный рендер и Ambient occlusion pass закидываешь в Photoshop и там, на финал накладываешь AO пас с помощью одного из режимов наложения слоев, например, Multiply.
Вот собственно и все. Так у тебя появляются больше деталей на изображении, но опять же, далеко не всегда это красиво и тем более реалистично.
Возвращаясь к упомянутому в начале свитку Indirect illumination (GI), то он делает совершенно то же самое, только автоматически. То есть он просто на финальный рендер накладывает Ambient occlusion pass, таким образом пытаясь скомпенсировать недостаточную детализацию при низких настройках вторичного освещения.
Вот в общих чертах, так и используют Ambient occlusion в V-Ray и, в принципе, в любых других рендерерах, работающих с этой моделью затенения

ASRockus #1574, 278 дней назад
Премного благодарен! Буду экспериментировать, ну а если что, то вернёмся к обсуждению
Спасибо.
Спасибо.SERDGIUS #2519, 148 дней назад
Присоединяюсь ко всем постам с благодарностями к данному ресурсу, второй день не могу оторваться, про АО более понятного описания не встречал, хоть и читал о нем достаточно на просторах интернета, разжевали ОГРОМНЕЙШЕЕ СПАСИБО и по остальным темам тоже прямо просветление какое то наступило. Я сам моделиногом и визом занимаюсь порядка трех лет, понемногу по чуть чуть продвигаюсь сквозь дебри 3D непонятностей и прочих сложностей с этим связанных.
Не много не по теме, но большая просьба по мере возможности расширить раздел материаловедения (это моя самая больная тема, редко когда получается добиться удовлетворяющего меня результата), вот хотелось бы именно ваше описание изучить создания шейдеров металлов, стекла и т.д. ну и пообщатся по этому поводу соответственно.
Не много не по теме, но большая просьба по мере возможности расширить раздел материаловедения (это моя самая больная тема, редко когда получается добиться удовлетворяющего меня результата), вот хотелось бы именно ваше описание изучить создания шейдеров металлов, стекла и т.д. ну и пообщатся по этому поводу соответственно.
Антон (RenderStuff) #2520, 148 дней назад
Привет!
Все в твоих руках.
Создавай новую тему в обсуждениях по интересующему тебя вопросу, предположим, по тому, как создать тот или иной материал и будем общаться
Вот типичный пример про то, как создать материал анизотропной стали:
http://ru.renderstuff.com/svobodnoe-3d-obsuzhdenie-53-sozdanie-materiala-anizotropnoi-nerjaveyuschei-stali-v-vray/
И таких тем, по матам достаточно, так что не стесняйся
Все в твоих руках.
Создавай новую тему в обсуждениях по интересующему тебя вопросу, предположим, по тому, как создать тот или иной материал и будем общаться
Вот типичный пример про то, как создать материал анизотропной стали:
http://ru.renderstuff.com/svobodnoe-3d-obsuzhdenie-53-sozdanie-materiala-anizotropnoi-nerjaveyuschei-stali-v-vray/
И таких тем, по матам достаточно, так что не стесняйся

Подписаться на комментарии этого обсуждения
Оставить комментарий
Использование Премиум 3D моделей RenderStuff – отличительная черта профессионалов, которые ценят свой труд и не растрачивают свое терпение на то, что уже было сделано для них:
Используя содержимое этого сайта, Вы соглашаетесь с данными условиями:
ПЕРСОНАЛЬНОЕ ИСПОЛЬЗОВАНИЕ
Вы можете свободно использовать скачиваемый контент, а также информацию из статей (уроков) и 3d рендеры (изображения) в своих личных проектах и сценах. Работая с материалами сайта, Вы можете изменять их на Ваше усмотрение при условии, что это делается исключительно для личных проектов.ПРОДАЖА
Вы НЕ можете продавать какой-либо контент в измененной или неизмененной форме, как самостоятельный продукт или в сборе коллекций, если обратное не указано в описании. Использование 3d моделей RenderStuff как основы для создания производных 3d моделей и их дальнейшей продажи запрещено.КОММЕРЧЕСКОЕ ИСПОЛЬЗОВАНИЕ
Запрещено использование бесплатных 3d моделей и любых файлов из скачиваемых архивов (*.zip) в коммерческих целях. Не используйте бесплатные 3d модели в коммерческих (оплачиваемых) проектах в модифицированной или исходной формах, если обратное не указано в описании. Вы можете свободно использовать 3d рендеры (изображения) с этого сайта в коммерческих проектах.РЕПУБЛИКАЦИЯ
Вы можете размещать статьи (уроки) и 3d рендеры (изображения) с данного сайта ТОЛЬКО при условии наличия видимой dofollow гиперссылки на ru.renderstuff.com как автора. Републикация, обмен и распространение бесплатных 3d моделей запрещено. Вы не можете распространять каким-либо образом производные 3d модели, сделанные с использованием любой 3d модели RenderStuff как основы.Все логотипы и торговые марки принадлежат их владельцам и используются только в идентификационных целях.

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