En gráficos 3D por computadora , la determinación de superficies ocultas (también conocida como determinación de superficies visibles , eliminación de superficies ocultas ( HSR ), eliminación de oclusión ( OC ) o determinación de superficies visibles ( VSD )) es el proceso de identificar qué superficies y partes de superficies se pueden ver desde un ángulo de visión particular. Un algoritmo de determinación de superficies ocultas es una solución al problema de visibilidad , que fue uno de los primeros problemas importantes en el campo de los gráficos 3D por computadora. El proceso de determinación de superficies ocultas a veces se denomina ocultamiento , y dicho algoritmo a veces se denomina ocultador . Cuando se hace referencia a la renderización de líneas, se conoce como eliminación de líneas ocultas . La determinación de superficies ocultas es necesaria para renderizar una escena correctamente, de modo que no se puedan ver elementos ocultos detrás del propio modelo, permitiendo que solo sea visible la parte naturalmente visible del gráfico.
Fondo
La determinación de superficies ocultas es un proceso que identifica qué superficies no son visibles para el usuario (por ejemplo, porque se encuentran detrás de objetos opacos como paredes). A pesar de los avances en la capacidad del hardware, los algoritmos de renderizado requieren importantes recursos computacionales. Al decidir que ciertas superficies no necesitan renderizarse porque no son visibles, los motores de renderizado pueden mejorar la eficiencia, lo que permite renderizar grandes espacios virtuales.
Existen numerosas técnicas para determinar superficies ocultas, pero generalmente se basan en ordenarlas según su distancia al observador. Ordenar grandes cantidades de primitivas gráficas puede resultar computacionalmente costoso y suele realizarse mediante la estrategia de divide y vencerás . Las distintas técnicas para determinar superficies ocultas difieren, en parte, en la forma en que se divide el espacio antes de ordenarlo.
Algoritmos
Un proceso de renderizado generalmente incluye los siguientes pasos: proyección , recorte y rasterización .
Algunos algoritmos utilizados en la renderización incluyen:
- Almacenamiento en búfer Z
- Durante la rasterización, la profundidad (valor Z) de cada píxel (o muestra en el caso del suavizado de bordes, pero sin pérdida de generalidad se utiliza el término píxel ) se compara con un valor de profundidad existente. Si el píxel actual está detrás del píxel en el búfer Z, el píxel se rechaza; de lo contrario, se sombrea y su valor de profundidad reemplaza al del búfer Z. El almacenamiento en búfer Z admite escenas dinámicas fácilmente y actualmente se implementa de manera eficiente en el hardware gráfico. Este enfoque es el estándar actual. El almacenamiento en búfer Z requiere hasta 4 bytes por píxel y puede tener un costo computacional considerable, ya que el algoritmo de rasterización necesita comparar cada muestra rasterizada con el búfer Z. El algoritmo del búfer Z puede sufrir artefactos debido a errores de precisión (también conocido como Z-fighting ).
- Zonas de cobertura (tampón C ) y tampón de superficie ( tampón S )
- Más rápidos que el búfer Z y comúnmente utilizados en juegos como Quake I , estos métodos almacenan información sobre los segmentos ya mostrados para cada línea de la pantalla (a diferencia del búfer Z, que almacena cada píxel). Los nuevos polígonos se recortan contra los segmentos ya mostrados que los ocultarían. Un búfer S puede mostrar polígonos sin ordenar, mientras que un búfer C requiere que los polígonos se muestren del más cercano al más lejano. Debido a que la técnica del búfer C no requiere que un píxel se dibuje más de una vez, el proceso es ligeramente más rápido. Este método se utilizaba comúnmente con árboles de partición binaria del espacio (BSP).
- Lista de bordes activos ordenados
- Utilizada en Quake I , esta técnica almacena una lista de los bordes de los polígonos ya mostrados (véase renderizado por líneas de exploración ). Los polígonos se muestran del más cercano al más lejano. Los nuevos polígonos se recortan según los bordes de los polígonos ya mostrados, creando así nuevos polígonos para su visualización, y luego se almacenan los bordes adicionales. Este enfoque es más complejo de implementar que los búferes S/C/Z, pero su rendimiento mejora considerablemente con el aumento de la resolución de la imagen.
- Algoritmo del pintor
- Este algoritmo ordena los polígonos según su baricentro y los dibuja de atrás hacia adelante. Este método produce pocos artefactos cuando se aplica a escenas con polígonos de tamaño similar que forman mallas suaves y con la eliminación de caras posteriores activada. Las desventajas son el coste computacional del paso de ordenación y la posible aparición de artefactos visuales. Este algoritmo puede fallar en escenas generales, ya que no puede manejar polígonos en diversas configuraciones comunes, como superficies que se intersecan.
- Particionamiento binario del espacio (BSP)
- Esta técnica divide una escena a lo largo de planos que corresponden a los límites de los polígonos. La subdivisión se construye de tal manera que proporciona un orden de profundidad inequívoco desde cualquier punto de la escena al recorrer el árbol BSP. La principal desventaja de la técnica es el alto costo computacional de la construcción del árbol BSP. Por lo tanto, este enfoque es menos adecuado para escenas con geometría dinámica. La ventaja de BSP es que los datos están preordenados y libres de errores, y pueden usarse como entrada para los algoritmos mencionados anteriormente. Cabe señalar que BSP no es una solución para la eliminación de superficies ocultas, sino solo una herramienta de apoyo.
- trazado de rayos
- El trazado de rayos intenta modelar la trayectoria de los rayos de luz hacia un punto de vista trazando rayos desde dicho punto hacia la escena. Si bien no es un algoritmo de eliminación de superficies ocultas propiamente dicho, resuelve implícitamente este problema al encontrar la superficie más cercana a lo largo de cada rayo de visión. En la práctica, este enfoque equivale a ordenar toda la geometría píxel a píxel.
- El algoritmo de Warnock
- Este algoritmo divide la pantalla en áreas más pequeñas y ordena los triángulos dentro de ellas. Si existe ambigüedad (es decir, si los polígonos se superponen en profundidad dentro de estas áreas), se produce una subdivisión adicional. En el caso extremo, la subdivisión puede llegar hasta el nivel de píxel.
Determinación de la selección y de la superficie visible
Un área relacionada con la determinación de superficies visibles es el descarte , que generalmente ocurre antes de dicha determinación en una canalización de renderizado. Las primitivas o lotes de primitivas pueden descartarse por completo, lo que suele reducir la carga computacional en un sistema de renderizado. Los tipos de algoritmos de descarte incluyen:
Eliminación por frustum de visualización
El tronco de visión es una representación geométrica del volumen visible para la cámara virtual . Naturalmente, los objetos que se encuentran fuera de este volumen no serán visibles en la imagen final, por lo que se descartan. A menudo, los objetos se sitúan en el límite del tronco de visión. Estos objetos se dividen en fragmentos a lo largo de dicho límite mediante un proceso llamado recorte , y los fragmentos que quedan fuera del tronco se descartan, ya que no hay espacio para dibujarlos.
Eliminación de caras posteriores
En los objetos 3D, parte de la superficie del objeto está orientada hacia la cámara, mientras que el resto se encuentra en la parte posterior, oculta por la parte frontal. Si el objeto es completamente opaco, estas superficies no necesitan dibujarse. El orden de los vértices determina estas superficies: si el triángulo dibujado tiene sus vértices orientados en sentido horario en el plano de proyección cuando está orientado hacia la cámara, estos cambian a sentido antihorario cuando la superficie se aleja de la cámara.
Por cierto, este método también hace que los objetos sean completamente transparentes cuando la cámara se encuentra dentro de ellos, ya que todas las superficies del objeto quedan orientadas en dirección opuesta a la cámara y el motor de renderizado las descarta. Para evitar este problema, el objeto debe configurarse como de doble cara (es decir, sin descarte de caras posteriores) o tener superficies internas separadas.
Selección de contribuciones
A menudo, los objetos están tan lejos que no contribuyen significativamente a la imagen final. Estos objetos se descartan si su proyección en pantalla es demasiado pequeña. Véase Recorte .
eliminación de oclusiones
Los objetos que se encuentran completamente detrás de otros objetos opacos pueden ser descartados. Este es un mecanismo muy popular para acelerar la renderización de escenas grandes con una complejidad de profundidad de moderada a alta . Existen varios tipos de métodos de descarte por oclusión:
- La representación mediante conjuntos potencialmente visibles ( PVS , por sus siglas en inglés) divide una escena en regiones y precalcula la visibilidad de cada una. Estos conjuntos de visibilidad se indexan en tiempo de ejecución para obtener rápidamente conjuntos de visibilidad de alta calidad (que tienen en cuenta las complejas interacciones de los oclusores).
- La representación por portales divide una escena en celdas/sectores (habitaciones) y portales (puertas), y calcula qué sectores son visibles recortándolos contra los portales.
- Los mapas de oclusión jerárquicos (HOM) representan la proyección acumulativa de los oclusores en múltiples resoluciones y realizan pruebas de superposición jerárquicamente a través de esa pirámide; el método fue diseñado para el hardware gráfico actual, almacena la opacidad por separado de la profundidad y puede admitir el descarte de visibilidad aproximada. [ 1 ] [ 2 ]
Divide y vencerás
Un tema recurrente en la literatura sobre determinación de superficies visibles es la estrategia de dividir y conquistar . El algoritmo de Warnock fue pionero en la división de la pantalla. El trazado de haces es un método que divide los volúmenes visibles en haces. Diversos métodos de subdivisión del espacio de la pantalla reducen el número de primitivas consideradas por región, como el teselado o el recorte BSP del espacio de la pantalla. El teselado puede utilizarse como preprocesamiento para otras técnicas. El hardware del búfer Z suele incluir un "hi-Z" grueso, contra el cual se pueden descartar primitivas prematuramente sin rasterización. Este método constituye una forma de eliminación de oclusiones.
Las jerarquías de volúmenes delimitadores (BVH) se utilizan a menudo para subdividir el espacio de la escena (ejemplos: el árbol BSP , el octree y el árbol kd ). Este enfoque permite determinar la visibilidad de forma jerárquica: si un nodo del árbol se considera invisible , todos sus nodos hijos también lo son, y no es necesario ningún procesamiento adicional (el renderizador puede rechazarlos todos). Si un nodo se considera visible , se debe evaluar a cada uno de sus hijos. Este recorrido es, en efecto, un paseo por el árbol, donde la invisibilidad/oclusión o el alcance de un nodo hoja determina si se debe detener el proceso o si se debe repetir la operación, respectivamente.
Véase también
Fuentes
- Determinación de superficies ocultas
- Caracterización de diez algoritmos de superficie oculta ( copia de Wayback Machine )
- Renderizado 3D
- Algoritmos de gráficos por computadora