stringtranslate.com

Eliminación de la cara posterior

A la izquierda un modelo sin BFC; a la derecha el mismo modelo con BFC: se eliminan las caras posteriores.

En gráficos por computadora , la selección de la cara posterior determina si se dibuja un polígono . Es un paso en el proceso gráfico que prueba si los puntos del polígono aparecen en el sentido de las agujas del reloj o en el sentido contrario a las agujas del reloj cuando se proyectan en la pantalla. Si el usuario ha especificado que los polígonos frontales tengan un giro en el sentido de las agujas del reloj, pero el polígono proyectado en la pantalla tiene un giro en el sentido contrario a las agujas del reloj, entonces se ha girado para que quede alejado de la cámara y no se dibujará.

El proceso hace que la representación de objetos sea más rápida y eficiente al reducir la cantidad de polígonos que debe dibujar el programa. Por ejemplo, en una escena callejera de una ciudad, generalmente no es necesario dibujar los polígonos en los lados de los edificios que miran hacia afuera de la cámara; están completamente ocluidos por los lados que miran hacia la cámara.

En general, se puede suponer que la selección de la cara posterior no produce ningún artefacto visible en una escena renderizada si solo contiene geometría cerrada y opaca. En escenas que contienen polígonos transparentes, los polígonos orientados hacia atrás pueden volverse visibles mediante el proceso de composición alfa . En la renderización de estructura de alambre , la selección de la cara posterior se puede utilizar para abordar parcialmente el problema de la eliminación de líneas ocultas , pero solo para geometría convexa cerrada.

Una técnica relacionada es el recorte , que determina si los polígonos están dentro del campo de visión de la cámara.

Otra técnica similar es el Z-culling, también conocido como occlusion culling , que intenta omitir el dibujo de polígonos que están cubiertos desde el punto de vista por otros polígonos visibles.

En renderizados no realistas, ciertas caras se pueden seleccionar según si son visibles o no, en lugar de mirar hacia afuera de la cámara. Se puede utilizar "casco invertido" o "eliminación de la cara frontal" para simular contornos o sombreadores de dibujos animados sin efectos de posprocesamiento. [1]

Implementación

Un método para implementar la selección de la cara posterior es descartar todos los triángulos donde el producto escalar de su superficie normal y el vector de cámara a triángulo sea mayor o igual a cero:

donde P es el punto de vista, V 0 es el primer vértice de un triángulo y N es su normal, definida como un producto cruzado de dos vectores que representan los lados del triángulo adyacente a V 0

Dado que el producto cruzado es anticonmutativo , definir la normal en términos de producto cruzado permite especificar la dirección normal relativa a la superficie del triángulo usando el orden de los vértices (bobinado):

Dado que el orden de los vértices se elige de manera que los triángulos frontales tengan un giro en el sentido de las agujas del reloj, N definido como arriba es la normal dirigida hacia afuera desde el objeto.

Si los puntos ya están en el espacio de visión, se puede suponer que P es ( 0 , 0 , 0 ) , el origen, simplificando la desigualdad anterior:

También es posible utilizar este método en el espacio de proyección representando la desigualdad anterior como un determinante de una matriz y aplicándole la matriz de proyección. [2]

Existe otro método basado en la paridad de reflexión, que es más apropiado para dos dimensiones donde no se puede calcular la normal de la superficie (también conocido como verificación CCW).

Definamos un triángulo unitario en dos dimensiones ( coordenadas homogéneas ) como

Luego, para algún otro triángulo, también en dos dimensiones,

defina una matriz que transforme el triángulo unitario:

de modo que:

Descarta el triángulo si la matriz M contenía un número impar de reflexiones (en dirección opuesta al triángulo unitario)

El triángulo unitario se usa como referencia y la transformación M se usa como traza para saber si el orden de los vértices es diferente entre dos triángulos. La única forma en que el orden de los vértices puede cambiar en dos dimensiones es mediante reflexión. La reflexión es un ejemplo de función involutoria (con respecto al orden de los vértices), por lo tanto, un número par de reflexiones dejarán el triángulo mirando hacia el mismo lado, como si no se aplicara ninguna reflexión. Un número impar de reflejos dejará el triángulo mirando hacia el otro lado, como exactamente después de un reflejo. Las transformaciones que contienen un número impar de reflexiones siempre tienen un factor de escala negativo, asimismo, el factor de escala es positivo si no hay reflexiones o hay un número par de ellas. El factor de escala de una transformación se calcula mediante el determinante de su matriz.

Referencias

  1. ^ Hoeven, van der, Jorick. "No fotorrealismo en sistemas de renderizado interactivo" (PDF) . Archivado desde el original (PDF) el 2 de noviembre de 2021 . Consultado el 10 de agosto de 2023 .
  2. ^ David H. Eberly (2006). Diseño de motores de juegos 3D: un enfoque práctico para los gráficos por computadora en tiempo real , p. 69. Editores Morgan Kaufmann, Estados Unidos. ISBN 0122290631