Cuando proyectamos objetos 3D en una pantalla 2D, necesitamos detectar las caras que están ocultas en 2D.
La detección de cara posterior , también conocida como método de ecuación plana, es un método de espacio de objetos en el que se comparan objetos y partes de objetos para descubrir las superficies visibles. Consideremos una superficie triangular cuya visibilidad se necesita decidir. La idea es comprobar si el triángulo estará de espaldas al espectador o no. Si lo hace, deséchelo para el cuadro actual y pase al siguiente. Cada superficie tiene un vector normal. Si este vector normal apunta en la dirección del centro de proyección, entonces es una cara frontal y el espectador puede verlo. Si este vector normal está apuntando hacia afuera del centro de proyección, entonces es una cara posterior y el espectador no puede verlo.
Algoritmo para sistema zurdo:
1) Compute N for every face of object. 2) If (C.(Z component) > 0) then a back face and don't draw else front face and draw
El método de detección de la cara posterior es muy simple. Para el sistema de mano izquierda, si la componente Z del vector normal es positiva, entonces es una cara posterior. Si la componente Z del vector es negativa, entonces es una cara frontal.
Algoritmo para el sistema diestro:
1) Compute N for every face of object. 2) If (C.(Z component) < 0) then a back face and don't draw else front face and draw
Por lo tanto, para el sistema diestro, si la componente Z del vector normal es negativa, entonces es una cara posterior. Si la componente Z del vector es positiva, entonces es una cara frontal.
La detección de cara posterior puede identificar todas las superficies ocultas en una escena que contienen poliedros convexos que no se superponen.
Recordando la ecuación de la superficie del polígono:
Ax + By + Cz + D < 0
Al determinar si una superficie es la cara posterior o la cara frontal, también considere la dirección de visualización. La normal de la superficie viene dada por:
N = (A, B, C)
Un polígono es una cara posterior si la vista V .N > 0. Pero debe tenerse en cuenta que después de la aplicación de la transformación de visualización, el espectador mira hacia abajo en el eje Z negativo. Por lo tanto, un polígono es cara posterior si:
(0, 0, -1).N > 0 or if C < 0
El espectador tampoco podrá ver la superficie con C = 0, por lo tanto, identificará una superficie poligonal como una cara posterior si: C <= 0.
Considerando (a),
V.N = |V||N|Cos(angle) if 0 <= angle 0 and V.N > 0 Hence, Back-face.
Considerando (b),
V.N = |V||N|Cos(angle) if 90 < angle <= 180, then cos(angle) < 0 and V.N < 0 Hence, Front-face.
Limitaciones:
1) Este método funciona bien para poliedros convexos, pero no necesariamente para poliedros cóncavos.
2) Este método solo se puede utilizar en objetos sólidos modelados como una malla poligonal.
Publicación traducida automáticamente
Artículo escrito por Sahil_Bansall y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA