В 3D компьютерной графике , моделировании и анимации , окклюзия окружающего света — это метод затенения и рендеринга, используемый для расчета того, насколько каждая точка сцены подвергается воздействию окружающего освещения . Например, внутренняя часть трубы обычно более закрыта (и, следовательно, темнее), чем открытые внешние поверхности, и становится тем темнее, чем глубже вы погружаетесь в трубу.
Окружающее затенение можно рассматривать как значение доступности, которое рассчитывается для каждой точки поверхности. [1] В сценах с открытым небом это делается путем оценки количества видимого неба для каждой точки, в то время как в помещениях учитываются только объекты в пределах определенного радиуса, а стены считаются источником окружающего света. Результатом является рассеянный , ненаправленный эффект затенения, который не отбрасывает четких теней, но затемняет закрытые и защищенные области и может повлиять на общий тон визуализированного изображения. Он часто используется как эффект постобработки .
В отличие от локальных методов, таких как затенение Фонга , затенение окружающего пространства является глобальным методом, что означает, что освещение в каждой точке является функцией другой геометрии в сцене. Однако это очень грубое приближение к полному глобальному освещению . Внешний вид, достигаемый только затенением окружающего пространства, похож на то, как объект может выглядеть в пасмурный день.
Первый метод, позволяющий моделировать окклюзию окружающего пространства в реальном времени, был разработан отделом исследований и разработок Crytek ( CryEngine 2 ). [2] С выпуском аппаратного обеспечения, способного выполнять трассировку лучей в реальном времени ( серия GeForce 20 ) компанией Nvidia в 2018 году, трассировка лучей окружающего пространства (RTAO) стала возможной в играх и других приложениях реального времени. [3] Эта функция была добавлена в Unreal Engine с версией 4.22. [4]
При отсутствии аппаратной трассировки лучей для затенения окружающего пространства приложения реального времени, такие как компьютерные игры, могут использовать методы экранного пространства для затенения окружающего пространства (SSAO), такие как горизонтальная затенение окружающего пространства , включая HBAO и истинное затенение окружающего пространства (GTAO), в качестве более быстрого приближения к истинному затенению окружающего пространства, используя попиксельную глубину , а не геометрию сцены, для формирования карты затенения окружающего пространства .
Окружающая окклюзия связана с затенением доступности, которое определяет внешний вид на основе того, насколько легко к поверхности прикасаются различные элементы (например, грязь, свет и т. д.). Она была популяризирована в производственной анимации из-за своей относительной простоты и эффективности.
Модель затенения окружающего пространства обеспечивает лучшее восприятие трехмерной формы отображаемых объектов. Это было показано в статье, где авторы сообщают о результатах экспериментов по восприятию, показывающих, что различение глубины при рассеянном равномерном освещении неба превосходит то, что предсказывает модель прямого освещения. [5]
Окклюзию в точке на поверхности с нормалью можно вычислить путем интегрирования функции видимости по полусфере относительно проецируемого телесного угла:
где — функция видимости в , определяемая как ноль, если перекрывается в направлении и единица в противном случае, а — бесконечно малый шаг телесного угла переменной интегрирования . Для аппроксимации этого интеграла на практике используются различные методы: возможно, наиболее простым способом является использование метода Монте-Карло путем отбрасывания лучей из точки и проверки на пересечение с другой геометрией сцены (т. е. отбрасывание лучей ). Другой подход (более подходящий для аппаратного ускорения) — рендеринг вида из путем растеризации черной геометрии на белом фоне и взятия (взвешенного по косинусу) среднего значения растеризованных фрагментов. Этот подход является примером подхода «сбора» или «изнутри-наружу», тогда как другие алгоритмы (такие как окклюзия окружающего пространства с картой глубины) используют методы «рассеивания» или «снаружи-внутрь».
В дополнение к значению окклюзии окружающего пространства часто генерируется вектор «изогнутой нормали» , который указывает в среднем направлении окклюдированных образцов. Изогнутая нормаль может использоваться для поиска падающего излучения из карты окружения для аппроксимации освещения на основе изображения . Однако существуют некоторые ситуации, в которых направление изогнутой нормали является неверным представлением доминирующего направления освещения, например,
В этом примере свет может достигать точки p только с левой или правой стороны, но изогнутая нормаль указывает на среднее значение этих двух источников, которое направлено прямо к препятствию.
В 2010 году Хейден Лэндис, Кен Макго и Хильмар Кох были удостоены премии Научно-технической академии за свою работу по рендерингу окклюзии окружающего пространства. [7]