stringtranslate.com

Determinación de superficies ocultas

En gráficos por computadora en 3D , la determinación de la superficie oculta (también conocida como determinación de la superficie mostrada , eliminación de la superficie oculta ( HSR ), selección de oclusión ( OC ) o determinación de la superficie visible ( VSD )) es el proceso de identificar qué superficies y partes de Las superficies se pueden ver desde un ángulo de visión particular. Un algoritmo de determinación de superficie oculta es una solución al problema de la visibilidad , que fue uno de los primeros problemas importantes en el campo de los gráficos por computadora en 3D [ cita requerida ] . El proceso de determinación de la superficie oculta a veces se denomina ocultación , y dicho algoritmo a veces se denomina ocultador [ cita necesaria ] . Cuando se hace referencia a la representación de líneas, se la conoce como eliminación de líneas ocultas [ cita necesaria ] . La determinación de la superficie oculta es necesaria para representar una escena correctamente, de modo que no se puedan ver las características ocultas detrás del modelo en sí, permitiendo que solo sea visible la parte del gráfico que se puede ver de forma natural.

Fondo

La determinación de superficies ocultas es un proceso mediante el cual se evita que se representen superficies que no deberían ser 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, todavía se necesitan algoritmos de renderizado avanzados . La responsabilidad de un motor de renderizado es permitir grandes espacios mundiales y, a medida que el tamaño del mundo se acerca al infinito, el motor no debe reducir la velocidad sino permanecer a una velocidad constante. Optimizar este proceso pasa por poder asegurar el despliegue de la menor cantidad de recursos posible para el renderizado de superficies que no acabarán mostrándose al usuario.

Existen muchas técnicas para la determinación de superficies ocultas. Son fundamentalmente un ejercicio de clasificación y generalmente varían en el orden en que se realiza la clasificación y en cómo se subdivide el problema. La clasificación de grandes cantidades de primitivos gráficos generalmente se realiza mediante divide y vencerás .

Algoritmos

Teniendo en cuenta el proceso de renderizado , los pasos de proyección , recorte y rasterización se manejan de manera diferente mediante los siguientes algoritmos:

almacenamiento en búfer Z
Durante la rasterización, el valor de profundidad/Z de cada píxel (o muestra en el caso de suavizado, 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 hardware de gráficos. Este es el estándar actual. El costo de utilizar el búfer Z es que utiliza hasta 4 bytes por píxel y que el algoritmo de rasterización necesita comparar cada muestra rasterizada con el búfer Z. El Z-buffer también puede sufrir artefactos debido a errores de precisión (también conocido como Z-fighting ).
Colchones de cobertura (C-buffer ) y buffer de superficie ( S-buffer )
Más rápido que los Z-buffers y comúnmente utilizado en juegos de la era Quake I. En lugar de almacenar el valor Z por píxel, almacenan una lista de segmentos ya mostrados por línea de la pantalla. Luego, los nuevos polígonos se cortan contra 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 desde el más cercano al más lejano. Debido a que la técnica del C-buffer no requiere dibujar un píxel más de una vez, el proceso es un poco más rápido. Esto se usaba comúnmente con árboles de partición de espacio binario (BSP), que proporcionarían clasificación para los polígonos.
Lista de bordes activos ordenados
Usado en Quake 1, almacenaba una lista de los bordes de los polígonos ya mostrados (consulte la representación de la línea de exploración ). Los polígonos se muestran desde el más cercano al más lejano. Los nuevos polígonos se recortan contra los bordes de los polígonos ya mostrados, creando nuevos polígonos para mostrar y luego almacenando los bordes adicionales. Es mucho más difícil de implementar que los buffers S/C/Z, pero escala mucho mejor con aumentos en la resolución.
algoritmo del pintor
Ordena los polígonos por su baricentro y los dibuja de atrás hacia adelante. Esto produce pocos artefactos cuando se aplica a escenas con polígonos de tamaño similar formando mallas suaves y con la selección de la cara posterior activada. El costo aquí es el paso de clasificación y el hecho de que pueden ocurrir artefactos visuales. Este algoritmo está roto por diseño para escenas generales, ya que no puede manejar polígonos en varias configuraciones comunes, como superficies que se cruzan entre sí.
Partición de espacio binario (BSP)
Divide una escena a lo largo de planos correspondientes a límites de polígonos. La subdivisión se construye de tal manera que proporcione un orden de profundidad inequívoco desde cualquier punto de la escena cuando se atraviesa el árbol BSP. La desventaja aquí es que el árbol BSP se crea con un proceso previo costoso. Esto significa que es menos adecuado para escenas que consisten en geometría dinámica. La ventaja es que los datos están preclasificados y libres de errores, listos para los algoritmos mencionados anteriormente. Tenga en cuenta que el BSP no es una solución para la ISS, sólo una ayuda.
trazado de rayos
Intenta modelar la trayectoria de los rayos de luz hasta un punto de vista trazando los rayos desde el punto de vista hasta la escena. Aunque no es un algoritmo de eliminación de superficies ocultas como tal, implícitamente resuelve el problema de eliminación de superficies ocultas al encontrar la superficie más cercana a lo largo de cada rayo de visión. Efectivamente, esto equivale a ordenar toda la geometría por píxel.
El algoritmo de Warnock
Divide la pantalla en áreas más pequeñas y ordena triángulos dentro de ellas. Si hay ambigüedad (es decir, los polígonos se superponen en profundidad dentro de estas áreas), entonces se produce una mayor subdivisión. En el límite, la subdivisión puede ocurrir hasta el nivel de píxel.

Selección selectiva y determinación de la superficie visible.

Un área relacionada con la determinación de la superficie visible (VSD) es la selección , que generalmente ocurre antes que la VSD en una tubería de renderizado. Las primitivas o lotes de primitivas se pueden rechazar en su totalidad, lo que normalmente reduce la carga en un sistema bien diseñado.

La ventaja de realizar la selección en las primeras etapas del proceso es que no es necesario buscar, transformar, rasterizar ni sombrear objetos completos que son invisibles. Los tipos de algoritmos de selección incluyen:

Visualización-sacrificio fructum

El tronco de visualización es una representación geométrica del volumen visible para la cámara virtual . Naturalmente, los objetos fuera de este volumen no serán visibles en la imagen final, por lo que se descartan. A menudo, los objetos se encuentran en el límite del tronco de observación. Estos objetos se cortan en pedazos a lo largo de este límite en un proceso llamado recorte , y los pedazos que se encuentran fuera del tronco se descartan porque no hay lugar para dibujarlos.

Eliminación de la cara posterior

Con los objetos 3D, parte de la superficie del objeto mira hacia la cámara y el resto mira en dirección opuesta a la cámara, es decir, está en la parte posterior del objeto, obstaculizada por la parte frontal. Si el objeto es completamente opaco, nunca será necesario dibujar esas superficies. Están determinados por el orden de enrollamiento de los vértices: si el triángulo dibujado tiene sus vértices en el sentido de las agujas del reloj en el plano de proyección cuando está frente a la cámara, cambian al orden contrario a las agujas del reloj cuando la superficie se aleja de la cámara.

Por cierto, esto también hace que los objetos sean completamente transparentes cuando la cámara de visión se encuentra dentro de ellos, porque entonces todas las superficies del objeto están de espaldas a la cámara y son seleccionadas por el renderizador. Para evitar esto, el objeto debe configurarse como de doble cara (es decir, no se elimina la cara posterior) o tener superficies interiores separadas.

Selección de contribuciones

A menudo, los objetos están tan lejos que no contribuyen significativamente a la imagen final. Estos objetos se desechan si su proyección en pantalla es demasiado pequeña. Consulte Plano de recorte .

Eliminación de oclusión

Los objetos que están completamente detrás de otros objetos opacos pueden ser eliminados. Este es un mecanismo muy popular para acelerar la renderización de escenas grandes que tienen una complejidad de profundidad de moderada a alta. Existen varios tipos de enfoques de selección de oclusión:

La disertación de Hansong Zhang "Elección eficaz de oclusiones para la visualización interactiva de modelos arbitrarios" [1] describe un enfoque de selección de oclusiones.

Divide y conquistaras

Un tema popular en la literatura sobre VSD es divide y vencerás . El algoritmo de Warnock fue pionero en dividir la pantalla. El trazado de rayos es un enfoque de trazado de rayos que divide los volúmenes visibles en haces. Varios enfoques de subdivisión del espacio de la pantalla reducen el número de primitivas consideradas por región, por ejemplo, mosaico o recorte BSP del espacio de la pantalla. El mosaico se puede utilizar como proceso previo a otras técnicas. El hardware del búfer Z normalmente puede incluir un "hi-Z" aproximado, contra el cual las primitivas pueden rechazarse temprano sin rasterización; esta es una forma de selección de oclusión.

Las jerarquías de volumen delimitador (BVH) se utilizan a menudo para subdividir el espacio de la escena (ejemplos son el árbol BSP , el octree y el kd-tree ). Esto permite que la determinación de la visibilidad se realice de forma jerárquica: efectivamente, si un nodo en el árbol se considera invisible , entonces todos sus nodos secundarios también son invisibles y no es necesario ningún procesamiento adicional (el renderizador puede rechazarlos todos). Si un nodo se considera visible , entonces es necesario evaluar cada uno de sus hijos. Este recorrido es efectivamente un paseo por un árbol, donde la invisibilidad/oclusión o llegar a un nodo de hoja determina si detenerse o recurrir, respectivamente.

Ver también

Fuentes

  1. ^ "Elección de oclusión con mapas de oclusión jerárquicos". www.cs.unc.edu .