Algoritmos de sombreado.doc

Algoritmos de sombreado y |
ocultamiento de líneas visibles

1. MÉTODO DE LA CARA POSTERIOR

Un método rápido y sencillo de objeto-espacio para identificar las caras traseras de un poliedro se basa en las pruebas “interna y externa”. Un punto (x,y,z) está “adentro” de la superficie de un polígono con los planos A, B, C y D si,

Ax + By + Cz + D < 0 Cuando un puntointerior está a lo largo de la vista de la superficie, el polígono debe ser una cara posterior (estamos en el interior de esa cara y no podemos ver el frente de la misma desde nuestra posición de vista).
Podemos simplificar esta prueba al considerar el vector normal N, para una superficie de polígono, que tiene los componentes cartesianos (A, B, C). En general, si V es un vector en ladirección de vista desde la posición del observador (o de la “cámara”), entonces este polígono es una cara posterior si,

V . N > 0

Además, si se han convertido las descripciones del objeto a coordenadas de proyección y nuestra dirección de vista es paralela al eje de vista de Zv, entonces V = (0, 0, Vz) y

V . N = Vz C

de modo que sólo debemos de considerar el signo deC, el componente de z del vector normal N.
En un sistema de vista de lado derecho, con dirección de vista a lo largo del eje negativo de Zv, el polígono es una cara posterior si C = 0, dado que nuestra posición de vista toca ese polígono. Por tanto, en general, podemos designar cualquier polígono como una cara posterior si su vector normal tiene un valor del componente de z:

Cprofundidad(x,y) = z, enfriamiento(x, y) = Isurf(x, y)

donde Ibackgnd es el valor para cada intensidad de fondo y Isurf (x, y) es el valor de intesidad proyectada para la superficie en la posición del píxel (x, y). Una vez que se procesan todas las superficies, el buffer con profundidad contiene valores de profundidad para las superficies visibles y el buffer de enfriamiento losvalores de intensidad correspondientes para estas superficies.

Los valores de profundidad para una posición de superficie (x, y) se calculan a partir de la ecuación del plano para cada superficie:

[pic]

Pára cada linea de rastreo, las posiciones horizontales adyacentes a lo largo de la línea difieren por 1 y un alor de la vertical de y en una línea de rastreo adyacente difiere por 1. Si sedeterminó como z la profundidad en la posición de (x, y), entonces la profundidad de z’ de la posición siguiente (x + 1, y) a lo largo de la linea de rastreo se obtiene con base en la ecuación como:

[pic]

o
[pic]

La razón –A/C es constante para cada superficie, de modo que los valores de profundidad subsecuentes a lo largo de una línea de rastreo se obtienen a partir delos valores previos con una sola adición.
En cada línea de rastreo, iniciamos por calcular la profundidad en una arista izquierda del polígono que intersecta esa línea de rastreo. De esa manera se calculan por medio de la ecuación anterior todos los valores de profundidad en cada posición relativa a lo largo de la línea de rastreo.
Como se puede apreciar, primero determinamos laextensión de la coordenada de y de cada polígono y procesamos la superficie desde la línea de rastreo superior hasta la línea de rastreo inferior. Al iniciar en un vértice superior, podemos calcular en forma recursiva las posiciones de x por debajo de una arista izquierda del polígono como x’= x – 1 /m , donde m es la pendiente de la arista. Los valores por debajo de la arista se obtienen entonces demanera recursiva como

[pic]

Si procesamos por debajo de una arista vertical, la pendiente es infinita y los cálculos recursivos se reducen a

[pic]

Un planteamiento alternativo es consiste en utilizar un método del punto medio o un algoritmo del tipo bresenham para determinar los valores de x en las aristas izquierdas para cada línea de rastreo. Asimismo, es…