En gráficos por computadora, un borde de silueta en un cuerpo 3D proyectado sobre un plano 2D (plano de visualización) es la colección de puntos cuya superficie exterior normal es perpendicular al vector de vista . Debido a las discontinuidades en la superficie normal, un borde de silueta es también un borde que separa una cara que mira hacia el frente de una cara que mira hacia atrás. Sin pérdida de generalidad, este borde se suele elegir para que sea el más cercano a una cara, de modo que en vista paralela este borde se corresponda con el mismo en una vista en perspectiva. Por lo tanto, si hay un borde entre una cara que mira hacia el frente y una cara que mira hacia un lado, y otro borde entre una cara que mira hacia un lado y una cara que mira hacia atrás, se elige la más cercana. El ejemplo fácil es mirar un cubo en la dirección donde la normal de la cara es colineal con el vector de vista.
El primer tipo de borde de silueta a veces es difícil de manejar porque no corresponde necesariamente a un borde físico en el modelo CAD. La razón por la que esto puede ser un problema es que un programador podría corromper el modelo original al introducir el nuevo borde de silueta en el problema. Además, dado que el borde depende en gran medida de la orientación del modelo y del vector de vista, esto puede introducir inestabilidades numéricas en el algoritmo (como cuando se considera un truco como la dilución de la precisión ).
Cálculo
Para determinar el borde de la silueta de un objeto, primero tenemos que conocer la ecuación plana de todas las caras. Luego, examinando el signo de la distancia del plano-punto desde la fuente de luz a cada cara
Con este resultado, podemos determinar si la cara está mirando hacia adelante o hacia atrás.
Los bordes de la silueta consisten en todos los bordes que separan una cara que mira hacia el frente de una cara que mira hacia atrás .
Técnica similar
Una implementación conveniente y práctica de la detección frontal / posterior es usar la unidad normal del avión (que comúnmente se calcula previamente para los efectos de iluminación de todos modos), luego simplemente aplicando el producto escalar de la posición de la luz a la unidad normal del avión y agregando la D componente de la ecuación del plano (un valor escalar):
Donde plane_D se calcula fácilmente como un punto en el producto escalar del plano con la unidad normal del plano:
Nota: Las coordenadas homogéneas , L_wyd, no siempre son necesarias para este cálculo.
Después de hacer este cálculo, puede notar que el indicador es en realidad la distancia firmada desde el avión hasta la posición de la luz. Este indicador de distancia será negativo si está detrás de la cara y positivo si está delante de la cara.
Esta es también la técnica utilizada en el documento SIGGRAPH de 2002 , "Volúmenes de sombras con plantillas prácticos y robustos para el renderizado acelerado por hardware".