# Oclusión ambiental

En gráficos 3D por computadora, modelado y animación, la oclusión ambiental es una técnica de sombreado y renderizado que se utiliza para calcular qué tan expuesto está cada punto de una escena a la iluminación ambiental. Por ejemplo, el interior de un tubo suele estar más ocluido (y, por lo tanto, más oscuro) que las superficies externas expuestas, y se vuelve más oscuro cuanto más profundo se llega en el interior del tubo.
La oclusión ambiental puede verse como un valor de accesibilidad que se calcula para cada punto de la superficie. En escenas con un cielo abierto, esto se hace estimando la cantidad de cielo visible para cada punto, mientras que en ambientes interiores solo se tienen en cuenta los objetos dentro de un radio determinado y se asume que las paredes son el origen de la luz ambiental. El resultado es un efecto de sombreado difuso y no direccional que no proyecta sombras claras, sino que oscurece las áreas cerradas y protegidas y puede afectar el tono general de la imagen renderizada. Se utiliza a menudo como un efecto de postprocesado.
A diferencia de los métodos locales como el sombreado de Phong, la oclusión ambiental es un método global, que significa que la iluminación en cada punto es una función del resto de la geometría en la escena. Sin embargo, es una aproximación muy tosca a la iluminación global completa. La apariencia que se logra solo con la oclusión ambiental es similar a la que podría tener un objeto en un día nublado.
El primer método que permitió simular la oclusión ambiental en tiempo real fue desarrollado por el departamento de investigación y desarrollo de Crytek (CryEngine 2). Con el lanzamiento de hardware capaz de realizar trazado de rayos en tiempo real (serie GeForce 20) por parte de Nvidia en 2018, la oclusión ambiental con trazado de rayos (RTAO) se hizo posible en juegos y otras aplicaciones en tiempo real. Esta función se agregó a Unreal Engine en su versión 4.22.

## Implementación

En la ausencia de la oclusión ambiental trazada por rayos asistida por hardware, las aplicaciones que funcionan en tiempo real como los videojuegos pueden usar técnicas de oclusión ambiental del espacio de pantalla (SSAO), como la oclusión ambiental basada en el horizonte, incluida la HBAO y la oclusión ambiental de verdad fundamental (GTAO) como una aproximación más rápida de la oclusión ambiental real, utilizando la profundidad por píxel, en vez de la geometría de la escena, para formar un mapa de oclusión ambiental.
La oclusión ambiental está relacionada con el sombreado de accesibilidad, que determina la apariencia en función de la facilidad para una superficie de ser afectada por diversos elementos (por ejemplo, la suciedad, la luz, etc.). Se ha popularizado en la animación de producción debido a su relativa simplicidad y eficiencia.
El modelo de sombreado de oclusión ambiental ofrece una mejor percepción de la forma 3D de los objetos en pantalla. Esto se pudo demostrar en un artículo donde los autores informan los resultados de experimentos perceptivos que muestran que la discriminación de profundidad bajo una iluminación difusa y uniforme del cielo es superior a la predicha por un modelo de iluminación directa.
La oclusión $A_{\bar {p}}$ en un punto ${\bar {p}}$ sobre una superficie con el normal ${\hat {n}}$ se puede calcular integrando la función de visibilidad sobre el hemisferio $\Omega$ con respecto al ángulo sólido proyectado:
$A_{\bar {p}}={\frac {1}{\pi }}\int _{\Omega }V_{{\bar {p}},{\hat {\omega }}}({\hat {n}}\cdot {\hat {\omega }})\,\operatorname {d} \omega$
dónde $V_{{\bar {p}},{\hat {\omega }}}$ es la función de visibilidad en ${\bar {p}}$, definido como cero si ${\bar {p}}$ está ocluido en la dirección ${\hat {\omega }}$ y uno en caso contrario, y $\operatorname {d} \omega$ es el paso del ángulo sólido infinitesimal de la variable de integración ${\hat {\omega }}$. En la práctica, se utilizan diversas técnicas para aproximar este integral: quizás la forma más sencilla es utilizar el método de Montecarlo, proyectando rayos desde el punto ${\bar {p}}$ y probar la intersección con otra geometría de la escena (es decir, raycasting). Otra forma (más adecuada para la aceleración del hardware) es renderizar la vista desde ${\bar {p}}$ rasterizando geometría negra sobre un fondo blanco y tomando el promedio (ponderado por coseno) de los fragmentos rasterizados. Este enfoque es un ejemplo de un enfoque de "recolección" o "de adentro hacia afuera", mientras que otros algoritmos (como la oclusión ambiental de mapas de profundidad) emplean técnicas de "dispersión" o "de afuera hacia adentro".
Además del valor de la oclusión ambiental, un vector "normal doblado" ${\hat {n}}_{b}$ se genera a menudo, que apunta en la dirección promedia de las muestras ocluidas. El normal curvado se puede utilizar para buscar laradiancia incidente en un mapa ambiental para aproximar la iluminación basada en imágenes. Sin embargo, hay algunas situaciones en las que la dirección de la normal doblada es una representación errónea de la dirección dominante de la iluminación, por ejemplo:
En este ejemplo, la luz puede llegar al punto p sólo desde el lado izquierdo o derecho, pero el normal curvado apunta al promedio de esas dos fuentes, que está directamente hacia la obstrucción.

### Variantes

* Oclusión ambiental del espacio de pantalla (SSAO)
* Oclusión direccional del espacio de pantalla (SSDO)
* Oclusión ambiental con trazado de rayos (RTAO)
* Oclusión ambiental de alta definición (HDAO)
* Oclusión ambiental basada en el horizonte+ (HBAO)
* Oclusión ambiental de alquimia (AAO)
* Oclusión ambiental basada en ángulos (ABAO)
* Oclusión ambiental precocida (PBAO)
* Oclusión ambiental acelerada por vóxeles (VXAO)
* Oclusión ambiental basada en la verdad fundamental (GTAO)

## Reconocimiento

En 2010, Hayden Landis, Ken McGaugh y Hilmar Koch recibieron un Premio de la Academia Científica y Técnica por su contribución en la renderización de la oclusión ambiental.