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 al de las agujas del reloj cuando se proyectan en la pantalla. Si el usuario ha especificado que los polígonos frontales tienen 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 el programa debe dibujar. Por ejemplo, en una escena de una calle de una ciudad, generalmente no es necesario dibujar los polígonos en los lados de los edificios que no miran a la cámara; están completamente ocultos por los lados que miran a la cámara.
En general, se puede suponer que la eliminación de caras posteriores 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 que miran hacia atrás pueden volverse visibles a través del proceso de composición alfa . En la renderización de estructura alámbrica , la eliminación de caras posteriores 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 oclusión culling , que intenta omitir el dibujo de polígonos que están cubiertos desde el punto de vista por otros polígonos visibles.
En representaciones no realistas, se pueden descartar ciertas caras en función de si son visibles o no, en lugar de estar de espaldas a la cámara. El "casco invertido" o la "descarte de caras frontales" se pueden usar para simular contornos o sombreadores de dibujos animados sin efectos de posprocesamiento. [1]
Un método para implementar la eliminación de caras posteriores es descartar todos los triángulos donde el producto escalar de su normal de superficie 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 vectorial de dos vectores que representan los lados del triángulo adyacentes a V 0
Dado que el producto vectorial es anticonmutativo , definir la normal en términos del producto vectorial permite especificar la dirección normal relativa a la superficie del triángulo usando el orden de los vértices (enrollado):
Dado que el orden de los vértices se elige de tal manera que los triángulos frontales tengan un giro en el sentido de las agujas del reloj, N definida como arriba es la normal dirigida hacia afuera del 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 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).
Sea un triángulo unitario en dos dimensiones ( coordenadas homogéneas ) definido como
Luego, para otro triángulo, también en dos dimensiones,
definir una matriz que transforma el triangulo unitario:
de modo que:
Descartar el triángulo si la matriz M contiene un número impar de reflexiones (orientadas en sentido opuesto al triángulo unitario)
El triángulo unitario se utiliza como referencia y la transformación M se utiliza como traza para indicar 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 la reflexión. La reflexión es un ejemplo de función involutiva (con respecto al orden de los vértices), por lo tanto, un número par de reflexiones dejará el triángulo orientado hacia el mismo lado, como si no se aplicaran reflexiones en absoluto. Un número impar de reflexiones dejará el triángulo orientado hacia el otro lado, como si fuera exactamente después de una reflexión. Las transformaciones que contienen un número impar de reflexiones siempre tienen un factor de escala negativo; de la misma manera, el factor de escala es positivo si no hay reflexiones o si hay un número par de ellas. El factor de escala de una transformación se calcula mediante el determinante de su matriz.