Este artículo tiene varios problemas. Ayude a mejorarlo o discuta estos problemas en la página de discusión . ( Obtenga información sobre cómo y cuándo eliminar estos mensajes de plantilla )
|
Gráficos por computadora tridimensionales (3D) |
---|
Fundamentos |
Usos primarios |
Temas relacionados |
En gráficos por computadora en 3D , la determinación de superficie oculta (también conocida como determinación de superficie mostrada , eliminación de superficie oculta ( HSR ), eliminación de oclusión ( OC ) o determinación de 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 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 este algoritmo a veces se denomina ocultador [ cita requerida ] . Cuando se hace referencia a la representación de líneas, se conoce como eliminación de líneas ocultas [ cita requerida ] . 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í, lo que permite que solo la parte del gráfico que se puede ver naturalmente sea visible.
La determinación de superficies ocultas es un proceso mediante el cual se evita que se rendericen 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 debería reducir la velocidad, sino permanecer a una velocidad constante. La optimización de este proceso se basa en poder asegurar el despliegue de la menor cantidad de recursos posible hacia 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 primitivas gráficas generalmente se realiza dividiendo y conquistando .
Teniendo en cuenta la canalización de renderizado , la proyección , el recorte y los pasos de rasterización se manejan de manera diferente mediante los siguientes algoritmos:
Un área relacionada con la determinación de la superficie visible (VSD) es el sacrificio , que generalmente ocurre antes de VSD en una tubería de renderizado. Las primitivas o los lotes de primitivas se pueden rechazar en su totalidad, lo que generalmente reduce la carga en un sistema bien diseñado.
La ventaja de realizar la selección al principio de la canalización es que los objetos completos que son invisibles no tienen que ser recuperados, transformados, rasterizados o sombreados. A continuación, se muestran algunos tipos de algoritmos de selección:
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 frustum de visualización. Estos objetos se cortan en pedazos a lo largo de este límite en un proceso llamado recorte , y las piezas que se encuentran fuera del frustum se descartan porque no hay lugar para dibujarlas.
Con los objetos 3D, una parte de la superficie del objeto está orientada hacia la cámara y el resto está orientada 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 es 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 mira hacia la cámara, cambian al orden en sentido 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 del punto de vista está ubicada dentro de ellos, porque entonces todas las superficies del objeto están de espaldas a la cámara y son eliminadas por el renderizador. Para evitar esto, el objeto debe configurarse como de doble cara (es decir, no se realiza ningún desecho de la cara posterior) o tener superficies internas independientes.
A menudo, los objetos están tan lejos que no contribuyen significativamente a la imagen final. Estos objetos se desechan si la proyección de su pantalla es demasiado pequeña. Consulte Plano de recorte .
Los objetos que están completamente detrás de otros objetos opacos pueden ser eliminados. Este es un mecanismo muy popular para acelerar el renderizado de escenas grandes que tienen una complejidad de profundidad moderada a alta . Hay varios tipos de enfoques de eliminación de oclusiones:
La disertación de Hansong Zhang "Eliminación de oclusión eficaz para la visualización interactiva de modelos arbitrarios" [1] describe un enfoque de eliminación de oclusión.
Un tema popular en la literatura de VSD es divide y vencerás . El algoritmo Warnock fue pionero en dividir la pantalla. El trazado de haces es un método de trazado de rayos que divide los volúmenes visibles en haces. Varios enfoques de subdivisión de espacio de pantalla reducen el número de primitivas consideradas por región, por ejemplo, mosaico o recorte BSP de espacio de pantalla. El mosaico se puede utilizar como un proceso previo a otras técnicas. El hardware del búfer Z normalmente puede incluir un "hi-Z" burdo, contra el cual las primitivas pueden rechazarse temprano sin rasterización, esta es una forma de eliminació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 octárbol y el árbol kd ). Esto permite que la determinación de la visibilidad se realice jerárquicamente: 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 (todos pueden ser rechazados por el renderizador). Si un nodo se considera visible , entonces cada uno de sus hijos debe ser evaluado. Este recorrido es efectivamente una caminata de árbol, donde la invisibilidad / oclusión o alcanzar un nodo de hoja determina si detenerse o recurrir respectivamente.