Documentos de Académico
Documentos de Profesional
Documentos de Cultura
RADIOSITY
Algoritmos de Iluminación Global
Uady – FMAT
ad
Radiosity, Un Modelo de Iluminación Global
Índice General
Capítulo 1
Introducción 1
1.1 Algoritmos de Iluminación Global . . . . . . . . . . . . . . . . . 2
Capítulo 2
Determinación de la superficie visible 7
2.1 Técnicas para mejorar la eficiencia de los algoritmos . . . . . . . . 9
Capítulo 3
Iluminación y sombreado 24
3.1 Modelos de iluminación . . . . . . . . . . . . . . . . . . . . . . . 25
. .
3.11 Renderización . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Capítulo 4
Algoritmos de radiosidad 44
4.1 Métodos de radiosidad . . . . . . . . . . . . . . . . . . . . . . 44
Conclusiones 53
Glosario 54
Bibliografía 55
Capítulo 1
Introducción
Durante los últimos 30 años las gráficas por computadora han evolucionado y han
pasado de ser una disciplina compleja y desconocida a formar parte de la mayoría de las
aplicaciones informáticas que requieren interacción con el usuario.
Este auge de las gráficas por computadora se ha visto impulsado por su utilidad en la
representación de imágenes, especialmente imágenes realistas, que por diversos motivos, son
difíciles de obtener mediante métodos tradicionales (fotografía y pintura, por ejemplo). En
este sentido podemos distinguir las principales aplicaciones de dicho campo:
• Diseño asistido por computadora (CAD) se usa como una herramienta en el
diseño de objetos (automóviles, puentes, chips, etc) proporcionándonos una herramienta
interactiva, una interfaz de simulación y análisis para el ingeniero.
• Bellas artes: el artista puede utilizar la pantalla computadora como un medio para
crear imágenes de impresionante belleza, efectos cinematográficos especiales, animar
historietas y anuncios de televisión.
• Visualización científica: un acontecimiento de simulación científica (tal como el
nacimiento de una estrella o el desarrollo de un tornado) puede ser exhibido
pictóricamente y en movimiento para proporcionar más información que simples tablas
de números.
• Interfaces entre las computadoras y sus usuarios, proporcionando un método más
intuitivo de manejo.
superficie. Estos cálculos solamente se ejecutan una vez, pues es posible posicionar y
orientar los objetos del ambiente con estos El método radiosity (radiosidad), por lo tanto, es
visualmente independiente
Los métodos visualmente dependientes discretizan el plano visual para determinar
los puntos en los cuales se debe evaluar la ecuación de iluminación, dada la dirección del
observador. En contraste, los métodos visualmente independientes discretizan el ambiente, y
lo procesan en orden para evaluar la ecuación de iluminación a cualquier punto y desde
cualquier dirección.
En resumen, podríamos considerar a ray tracing y radiosity como enfoques
complementarios de sintetización de imágenes. Los investigadores aún están refinando los
algoritmos existentes y desarrollando nuevos. En la actualidad, contamos con un enfoque
híbrido que combina las mejores características de ambos métodos para reflexiones difusas y
Ray Tracing para luces especulares) [ASHD94].
Durante este trabajo se manejaran los términos radiosity y radiosidad por igual, es
decir, significaran lo mismo.
Ray Tracing aplicado a las gráficas por computadora fue desarrollado primero por
Appel y por Goldstein y Nagel. Appel uso una rejilla dispersa de rayos para determinar
sombras incluyendo si un punto estaba dentro de la sombra. Goldstein y Nagel originalmente
usaron su algoritmo para simular las trayectorias de proyectiles balísticos y partículas
nucleares; sólo después lo aplicaron a las gráficas. Appel fue el primero en trazar sombras,
mientras Goldstein y Nagel fueron los pioneros en usar ray tracing para evaluar conjuntos de
operaciones booleanas. Whitted y Kay extendieron ray trac¡ng para manejar reflexión
especular y refracción [FOLE96].
Ray Tracing, también conocido como ray casting, determina la visibilidad de las
superficies trazando rayos de luz imaginarios desde el ojo del observador a los objetos de la
escena. Un centro de proyección (el ojo del observador) y una ventana sobre un plano de
vista arbitrario son seleccionados. La ventana puede ser imaginada como una malla cuyos
elementos corresponden a los pixeles en la resolución deseada. Así, para cada pixel en la
ventana un rayo del ojo es lanzado desde el centro de la proyección al centro del pixel en la
escena. Las intersecciones de los rayos con los objetos deben notarse, como en el mundo real.
Si los rayos pasan sin intersectar un objeto al fondo del pixel se le asigna un color,
regularmente negro. Cuando las intersecciones tocan las superficies del objeto, la intensidad
de las fuentes de luz en la superficie es calculada y al pixel se le asigna una combinación de
color de estas fuentes de luz, menos algunos colores que son absorbidos por la superficie. Si
la superficie es reflejada, el ángulo de incidencia de los rayos contra la superficie y el rayo
reflejado es trazado hasta la intersección de la segunda superficie. Si la segunda superficie es
también reflejada, el proceso se repite. Como a cada pixel se le asigna un color, el mapa de
bits es creado y desplegado cada vez en el monitor o en el archivo de salida del disco
(usualmente en ambos) [PAT99].
El trazo de rayos no es más que un arreglo de definición de estructuras de objetos.
Estas definiciones pueden llamar a diferentes clases de objetos dentro de un contador.
Algunos objetos son construcciones de polígonos, mientras que otros se construyen con base
en esferas o superficies curvas. La definición de objetos podría identificar el tipo de objeto y
sus parámetros. El polígono tendría una lista de vértices; la esfera, el diámetro, etc.; se
pueden definir también sus propiedades (reflexión, color, suavidad, etc.).
Para cada rayo que es trazado se podría calcular el ángulo de intersección de los
objetos. Por cada objeto se realiza un cálculo diferente. Para determinar las intersecciones de
las superficies de polígonos y de esfera podrían usarse las ecuaciones de la recta y las
ecuaciones de la curva. Una vez identificada cada intersección, el color del pixel es
determinado. Este proceso es simple y lento [VILL97].
Toda la energía emitida o reflejada por cada superficie es tomada en cuenta por la
reflexión o absorción en las otras superficies. La velocidad a la cual la energía deja una
superficie, llamada su radiosity, es la suma de las velocidades a las cuales la superficie emite
energía y la refleja o transmite hacia otras superficies. En consecuencia, los enfoques que
calculan por computadora estas “radiositys” de las superficies en un ambiente han sido
llamados método radiosity. Diferente de los algoritmos convencionales de renderizado, el
método radiosity primero determina todas las interacciones de luz en el ambiente de manera
visualmente independiente. Luego, una o más vistas son renderizadas, sólo con la
determinación aérea de la superficie visible e interpolación de sombras [ASHD94].
En el capítulo 4 se estudiará con mayor detalle este algoritmo, que es el objetivo
primordial de este trabajo.
Una vez explicados los algoritmos ray tracing y los radiosity, podemos decir que, los
algoritmos ray tracing combinan la determinación de superficies visibles y el sombreado
para representar sombras, reflexión y refracción; mientras que los métodos radiosity separan
totalmente la determinación de superficies visibles y el sombreado, modelando todas las
interacciones del ambiente con las fuentes luminosas, primero en una etapa independiente de
la vista, para después calcular una o mas imágenes para los puntos de observación deseados
usando algoritmos convencionales de superficies visibles y sombreado.
Los algoritmos de determinación de superficies visibles y de sombreado
(Iluminación) serán estudiados más adelante en los capítulos 2 y 3 respectivamente.
Capítulo 2
Otra diferencia entre ambas aproximaciones reside en el hecho de que los algoritmos de
precisión a la imagen son ejecutados directamente a la resolución del dispositivo de salida
(pantalla, impresora, etc.), mientras que en los otros se realiza el cálculo de modo
independiente, pero es necesario un paso posterior de “traducción” a la resolución deseada.
Debemos añadir que esta división de los algoritmos no es excluyente, ya que existen
algoritmos que combinan cálculos de ambos grupos.
Antes de pasar directamente a tratar los algoritmos es necesario puntualizar
brevemente algunos conceptos sobre la visualización en 3D que serán empleados más
adelante.
Visualización en 3D
Coherencia
Coherencia de arista. La visibilidad o no de una arista cambia sólo si se cruza con un objeto
visible.
Coherencia de arista implícita. No es necesario calcular todos los puntos de la recta que se
forma cuando dos planos se cruzan, solo son necesarios dos.
Coherencia de línea de barrido (scan-line). Los objetos definidos en el espacio deben ser
llevados a la pantalla en forma de píxeles (scan-conversion), esto se hace por medio de
líneas que barren la imagen (Scan-line). Pues bien, la coherencia reside en el hecho de
que la variación de una línea a otra es pequeña, lo cual se puede tener en cuenta para
simplificar las computaciones.
Coherencia de cara. Las propiedades de las caras de los objetos varían suavemente, lo que
permite hacer los cálculos de modo incremental sin tener que hacer esfuerzos
innecesarios.
De forma similar a esta última se definen otros tipos de coherencia como la de área y
la de profundidad.
Se pueden definir unos polígonos que rodean a las proyecciones, llamados rectángulos ex-
tendidos (extents). No es necesario comprobar que dos proyecciones no se solapan si no los
hacen sus extendidos, como en el ejemplo de la figura 2.2.
Si los extendidos tienen contacto, se pueden dar dos casos, que las proyecciones
solapen o no. En ambos se deben realizar los cálculos, que resultan inútiles si los objetos no
se solapan.
Asumamos que un objeto está compuesto por polígonos de modo que las normales de
los planos en el que están contenidos apuntan hacia el exterior del objeto. Aquellas caras del
objeto que están ocultas desde el punto de vista del observador pueden ser eliminadas para
los cálculos posteriores.
El modo de determinar si una cara es visible, es a través del producto escalar de la
normal del plano en el que está contenida y la dirección de proyección. Si dicho producto es
positivo o cero se trata de un plano oculto (o “de canto”). Usualmente las proyecciones son
ejecutadas de modo que la dirección de proyección sea (0, 0, -1), así, sólo debemos buscar las
superficies con la tercera componente negativa para eliminarías.
La eliminación de caras ocultas es una técnica de precisión al objeto y tiene un
tiempo de computación que crece linealmente con el número de objetos.
Presentaremos dos algoritmos de precisión al objeto, que producen como salida una
lista de los segmentos visibles.
Algoritmo de Roberts
Algoritmo de Appel
Este ya es un algoritmo más general pues sólo requiere que las líneas sean aristas de
polígonos y no de poliedros. Trabaja con aristas de polígonos visibles.
Appel define lo que llama invisibilidad cuantitativa de un punto en una línea como el
número de polígonos visibles que oscurecen al punto. También define una línea de contorno
(línea AB en la figura 2.3) como aquella compartida por una cara visible y otra oculta. Si una
línea se cruza con una línea de contorno cambia su invisibilidad cuantitativa. Cuando pasa
por detrás de un polígono se le suma -1, si después reaparece se le suma 1. Sólo son
dibujados los tramos con invisibilidad cuantitativa 0.
Luego, aprovechando la coherencia de arista propaga este valor por las líneas que
emanan del vértice hasta que llega al punto final donde se vuelve a propagar el valor que
tenga allí. Pero es necesario hacer una corrección con los vértices pertenecientes a líneas de
contorno donde la propagación del valor no siempre es cierta.
En la figura 2.3 se calcula directamente que el vértice C tiene una invisibilidad cuan-
titativa de 0. Empleando la coherencia de arista podemos decir que todas las líneas que
emanan de él también tienen la misma invisibilidad cuantitativa. En cambio, para el vértice A
no ocurre lo mismo, se trata de un vértice perteneciente a una línea de contorno para el cual la
coherencia de arista no es aplicable pues una de las aristas que emanan de él no es visible.
Algoritmo z—buffer
Originalmente implementado por Catmull, es uno de los más usados y fáciles de
implementar, se trata además de un algoritmo de precisión a la imagen. A la hora de
representar la salida se dispone de un buffer, llamado frame buffer (F), en el que se almacena
el color de cada píxel. Pues bien, cuando se ejecuta el algoritmo se dispone de otro buffer
llamado Z-buffer (Z), con igual número de entradas donde se almacena el valor de la coordenada Z
correspondiente al punto que se representa en cada píxel.
El algoritmo comienza inicializando F al color de fondo (background) y Z al valor de
la coordenada Z del plano de corte posterior del volumen de visualización canónico. Si
durante la transformación a píxeles de un objeto en un punto (x, y) este se halla más cerca del
observador que el objeto almacenado en Z, se cambia la información almacenada en los
buffers por la actual. Al final del proceso, los buffers contienen la información asociada a los
objetos más cercanos al observador. Se trata de comparar el conjunto de puntos de los objetos
que son candidatos a “colorear” un determinado píxel buscando aquel punto más cercano al
centro de proyección.
Este algoritmo se puede aplicar a cualquier tipo de objeto si se conoce (o se puede
determinar) su color y su coordenada Z. Precisamente para el caso de los polígonos, que se
definen por la ecuación del plano en el que se encuentran, se puede calcular Z para cada punto
(x, y) de un modo simplificado echando mano del concepto de coherencia en profundidad. Lo
que se haría normalmente es resolver la ecuación del plano para cada par (x, y).
Estos algoritmos determinan un orden de visibilidad de forma que se asegura que ren-
derizando los objetos en ese orden el resultado será el correcto. Son híbridos en cuanto
combinan operaciones de precisión al objeto (comparaciones en profundidad y división de
objetos) y operaciones de precisión a la imagen (scan-conversion, sobrescribir los píxeles
dibujados por otros más cercanos).
Los distintos algoritmos de esta clase difieren entre sí en el modo de determinar el
tipo de ordenamiento, además de en la manera de establecer cuándo y qué objeto será
dividido primero.
ordena de modo ascendente según la coordenada x del menor vértice de la arista. De este
modo, cada entrada de la tabla contiene:
Por último se usa una tabla de aristas activas (TAA) —ordenada en x creciente— que
contiene a las aristas que son intersecadas por la línea de barrido actual.
• Modificar el algoritmo para que lo “pinte” cuando todos los indicadores booleanos
sean falsos.
Sobre la idea principal de los algoritmos de barrido de línea han surgido una multitud
de variaciones, pero este fue el algoritmo básico..
• Algoritmo de Warnock
Warnock, en cada ciclo, divide al área de interés en cuatro partes, a
continuación examina las relaciones que puede tener la proyección del polígono con
dicha área:
• Algoritmo de Weiler-Atherton
Se trata de un algoritmo posterior al de Warnock que emplea otra
estrategia distinta. Aquí el área se divide según las fronteras de los polígonos en vez de
recortarse en cuatro partes independientemente de su contenido. Por ello es necesario
un potente algoritmo de recorte de polígonos (clipping).
El primer paso, no obligatorio pero útil, es ordenar los polígonos según
la coordenada Z. El polígono más cercano se usa para clasificar al resto en dos grupos:
los polígonos (o fragmentos de tales) interiores y exteriores al primero. Aquellos
polígonos interiores pero más lejanos que el patrón son borrados de la lista, puesto que
no son visibles y no es necesario representarlos. Si existe alguna pieza de un polígono
por delante del patrón es porque el ordenamiento inicial no dio un orden de prioridad
correcto de modo que este se debe procesar iterativamente. Cuando esta división
termina,se representa el grupo de los interiores. Por último se continúa con el grupo de
los polígonos exteriores.
→
los octantes y sus caras visibles determinadas por el signo de las coordenadas de VPN
x = x 0 + t ⋅ ∆x ∆x = (x 1 - x 0 )
y = y 0 + t ⋅ ∆y con ∆y = (y1 - y 0 )
z = z 0 + t ⋅ ∆z ∆z = (z 1 - z 0 )
( x − a ) 2 + ( y − b) 2 + ( z − c ) 2 = r 2
(∆x 2 + ∆y 2 + ∆z 2 )t 2 + 2( ∆x( x 0 − a ) + ∆y ( y 0 − b) + ∆z ( z 0 − c) ) +
( x 0 − a ) 2 + ( y 0 − b) 2 + ( z 0 − c ) 2 − r 2 = 0
( x − a ) ( y − b) ( z − c )
, ,
r r r
Ax + By + Cz +D = O
Ax 0 + By 0 + Cz 0 + D
t=−
A∆x + B∆y + C∆z + D
Si el denominador es nulo es porque el rayo y el plano son paralelos y no tienen
ningún punto en común. Para realizar el segundo paso, comprobar si el punto de intersección
cae dentro del polígono, se puede aplicar alguno de los distintos algoritmos existentes para tal
fin.
Capítulo 3
Iluminación y sombreado
En este capítulo trataremos de explicar como se sombrean las superficies de los
objetos basándonos en sus características, así como en las de las fuentes de luz existentes en
el entorno.
Mientras que los modelos de iluminación son empleados para asignar un color a cada
punto de la superficie de un objeto, los modelos de sombreado forman parte de un marco más
amplio donde tienen cabida los primeros como “funciones” que son llamadas cuando se
precisa. Los modelos de sombreado emplean los cálculos de la intensidad dados por los
modelos de iluminación para todos los píxeles de una escena.
Muchos de los modelos empleados no tienen ninguna base física, son modelos que,
simplemente, funcionan bien en la práctica. A continuación, empezaremos hablando de
algunas de estas técnicas sin base física muy fuerte, y que sin embargo, sirven para modelar
efectos muy diversos como iluminaciones, pequeños detalles de las superficies, zonas
ensombrecidas, transparencias y reflexiones entre objetos. Después, nos centraremos en
modelos con un desarrollo teórico más cuidado para describir fuentes de luz extendidas,
efectos producidos por las cámaras reales y modelos de iluminación más complejos, como el
de radiosity.
I = ki
Reflexión difusa
Consideramos ahora un tipo de reflexión causada por una fuente de luz puntual cuyos
rayos emanan en todas direcciones de modo uniforme. Se trata de una buena aproximación
para aquellas fuentes cuyo tamaño sea pequeño comparado con el del resto de los objetos del
entorno.
• Reflexión Lambertiana
Este tipo de reflexión la exhiben superficies opacas y mates como la de
la tiza. Estas superficies aparecen igualmente brillantes desde todos los puntos de vista
porque reflejan la luz con igual intensidad en todas direcciones. Para empezar con el
modelado, digamos que el brillo en un punto (figura 3.1) depende sólo del ángulo θ
→
entre la dirección L de la fuente de luz y la normal a la superficie en ese punto.
I = I p k d cosθ
I = I a k a + f att I p k p cosθ
Existen diferentes elecciones para este factor. Una de ellas es que sea
la inversa del cuadrado de la distancia a la fuente de luz por el hecho de que la energía
cae con esa razón:
1
f att =
d L2
Sin embargo, esta elección no funciona muy bien ya que tiene una
velocidad de cambio muy lenta para largas distancias y muy rápida para cortas. El
factor que se suele emplear siempre es:
1
f att = min ,1
c1 + c 2 d L + c3 d L
2
donde los factores cj son característicos de cada fuente de luz. El 1 se coloca para
asegurar que el factor siempre atenúe.
Atenuación atmosférica
Reflexión especular
Se trata de un efecto muy conocido como es, por ejemplo, el del brillo de una
manzana. Se trata de la total o casi total reflexión de la luz incidente en un región
concentrada. Comentemos algunas cosas acerca de este efecto. En primer lugar es de un color
distinto al de la manzana y en segundo lugar si cambiamos nuestro punto de vista dicho brillo
también se mueve. Ambos efectos tienen una fácil explicación: el color del brillo será aquel
propio de la fuente de luz, mientras que el movimiento se explica por el hecho de que la
superficie refleja de modo distinto la luz en diferentes direcciones.
→
3.3), este efecto sólo se ve cuando la dirección del observador (V ) y de la luz reflejada
→
coinciden (R ) , es decir, cuando α = 0. Es decir, los objetos que no son reflectores ideales
→ → → →
I λ = I aλ k a Odλ + f att I pλ k d Odλ ( N ⋅ L) + W (θ )( R⋅ V ) n
Para superficies opacas W(θ) es constante para cualquier ángulo de incidencia por lo
que se suele cambiar por un factor llamado coeficiente de reflexión especular (Ks) que
se selecciona para producir los resultados deseados. También se puede introducir una
dependencia del brillo con el material del objeto a través del factor de color especular
del objeto (Os):
→ → → →
I λ = I aλ k a Odλ + f att I pλ k d Odλ ( N ⋅ L) + k s Osλ ( R⋅ V ) n
→ → → →
I λ = I aλ k a Odλ + ∑
1≤i ≤ m
f atti I pλi k d Odλ ( N ⋅ Li ) + k s Osλ ( Ri ⋅ V ) n
Puede darse el caso de que el valor de la intensidad de un pixel así calculado supere
lo representable, lo que se entenderla como un overflow. Se puede evitar con una buena
elección de los coeficientes y del factor de atenuación de la fuente (fatt).
Aunque alguna de las dos primeras condiciones falle se puede seguir aplicando este
→ →
modelo con un valor constante de L⋅V , aunque, por supuesto, no se van a obtener los
mismos resultados.
Sombreado interpolado
Wylie, Romney, Evans y Erdahí fueron los primeros en aplicar esta técnica que
consiste en interpolar linealmente la información de sombreado de la tripleta de valores de
los vértices de un triángulo. Más tarde Gouraud generalizó el método para polígonos
arbitrarios.
A la hora de aplicar un método de sombreado a una red de polígonos que simulan una
superficie curva, pensaríamos hacerlo de modo individual, polígono a polígono, pero esto no
proporcionaría los resultados esperados. El empleo de una red más fina empeoraría la
situación porque exageraría los cambios de intensidad en las discontinuidades debido al
llamado efecto de banda de Mach que consiste en la inhibición lateral de los receptores del
ojo humano. Para evitarlo, se adquiere información de los polígonos adyacentes para simular
una superficie suavizada.
Las estaciones de trabajo 3D actuales llevan implementadas en su hardware y
firmware algunos de estos modelos.
Sombreado de Gouraud
Sombreado de Phong
Polígonos de detalle
Mapeado de texturas
Si los detalles son más finos y complicados que una puerta o una ventana es mejor
mapear una imagen, ya sea digitalizada o sintetizada sobre la superficie. Dicha imagen recibe
el nombre de texture map y sus componentes individuales texels.
El proceso tiene dos pasos. Primero, las cuatro esquinas de un pixel con coordenadas
(x, y) se mapean a la superficie del objeto en cuestión con coordenadas (s, t). Luego, estas
mismas son llevadas al sistema de la textura, llamado mapa de textura con coordenadas (u,
v). El valor del color que recibe el pixel se determina promediando el valor correspondiente a
los texels que caen dentro del rectángulo que se forma con las cuatro esquinas mapeadas.
Bump Mapping
un array de desplazamientos, cada uno de los cuales puede ser empleado para simular un
pequeño desplazamiento de un punto sobre una superficie.
→ → → →
n
I λ = I aλ k a Odλ + ∑
1≤i ≤ m
S f I
i atti pλi
k O
d dλ ( N ⋅ Li ) + k O
s sλ ( Ri ⋅V )
donde:
0 si la luz no llega a este punto
Si =
1 si la luz llega a este punto
Indicar aquí que la luz ambiental llega a todos los puntos, como se ve en la ecuación
anterior. Diremos también que es posible hacer una aproximación proyectando los objetos
desde la fuente de luz en el plano del suelo.
A continuación, describimos algunos de los algoritmos más recurridos a la hora de
implementar las sombras.
Este algoritmo fue desarrollado por Atherton, Weiler y Greenberg. Recibe este
nombre debido a que se aplica el mismo algoritmo dos veces, una desde el punto donde se
halla el observador y otra desde la fuente de luz. De esta forma, se combinan los resultados
para determinar qué superficies visibles son iluminadas. Los cálculos para la determinación
de las sombras se realizan una sola vez, independientemente del número de puntos de vista
que se tomen de la escena.
de superficies original, creándose así una base de datos independiente del observador. A
continuación se vuelve a aplicar el algoritmo de Weiler-Atherton desde el punto donde se
halle el observador. Para finalizar, aquellos polígonos visibles para el observador y que están
cubiertos con un polígono detalle se renderizan como iluminados mientras aquellos otros que
no lo están se tratan como sombras. Esta renderización se realiza mediante un algoritmo de
barrido.
Fue Williams quien desarrolló esta técnica que aplica dos veces el algoritmo z-
buffer. En primer lugar lo hace desde la fuente de luz, para a continuación aplicarlo desde el
observador con una modificación. Cuando un pixel es visible se llevan sus coordenadas
ellas y compararla con z 0′ Si z L está más cercano a la luz que z 0′ entonces hay algo que
.
Ángulo sólido. Es el ángulo en el vértice de un cono que se mide en términos del área
interceptada por este. Su unidad de medida es el estereorradián (sr) que es el ángulo
sólido del cono tal que intercepta un área de esfera igual al cuadrado de su radio.
Trataremos de hallar una relación entre la luz incidente y la reflejada. Para ello consi-
deremos la figura 3.7. Vemos que la densidad de flujo incidente es:
→ →
Ei = I i ( N ⋅ L)dω i
Ir
ρ=
Ei
→ →
I r = ρI i ( N ⋅ L)dω i
ρ = kd ρd + ks ρs
→ →
Ir = ρa Ia + ∑ I j ( N ⋅ L j )dω j (k d ρ d + k s ρ s )
1≤ j ≤ m
Hasta el momento siempre se han supuesto las fuentes de luz como puntuales por su
mayor sencillez a la hora de modelarlas. Sin embargo, estas fuentes no se encuentran
normalmente en las escenas que se quieren reproducir por lo que se han desarrollado modos
de imple-mentar fuentes de luz extendidas o distribuidas. Estas van a crear dos tipos de
fenómenos: la sombra y la penumbra, como se puede ver en la figura 3.8. La parte del
espacio parcialmente bloqueada de la luz es la penumbra. Estas fuentes se pueden modelar
como una sucesión de fuentes puntuales, pero esto es costoso computacionalmente.
Trataremos de introducir los efectos que producen las lentes (incluidos los ojos)
cuando captan una imagen:
Profundidad de campo
Produce que los objetos parezcan más o menos focalizados según su
distancia a la lente. La distancia a la cual una lente focaliza perfectamente un objeto
se llama distancia focal F. Potmesil y Chakravarty desarrollaron un procesado para la
simulación de este efecto. Primero se renderiza normalmente la imagen pero
almacenando la coordenada z de cada punto. A continuación se muestrea una serie de
puntos cuyo entorno se “desenfoca” según el valor de z y de la apertura de lente
deseada. La imagen final se calcula como una media pesada de las contribuciones de
los píxeles desenfocados.
Desenfoque por movimiento
Para simular este efecto es necesario resolver el problema de la
determinación de la superficie visible en el tiempo y en el espacio. Korein y Badíer
emplearon dos aproximaciones: un algoritmo analítico que empleaba funciones
continuas para modelar el movimiento de los objetos a lo largo del tiempo y un
sobremuestreado temporal mediante la renderización de imágenes separadas.
Potmesil y Chakravarty también mejoraron su modelo para incluir este efecto.
La iluminación global de un punto está constituida por toda la luz que le llega de las
fuentes (iluminación local) más aquella que viene reflejada de otras superficies.
Se emplean dos clases distintas de algoritmos para modelar la iluminación
global. Por una parte algoritmos que, al mismo tiempo, realizan la determinación de
la superficie visible y calculan el sombreado, como es el caso del algoritmo de
trazado de rayos, que a su vez es dependiente del punto de vista de la escena. Por otra
parte, algoritmos como el de radiosity son independientes del observador y realizan
de forma separada los cálculos de sombreado y visibilidad.
(
I ( x, x ′) = g ( x, x ′) ∈ ( x, x ′) + ∫ ρ (( x, x ′, x ′′) I ( x ′, x ′′))dx ′′
s
)
Donde:
g(x, x’) es el término geométrico que es 0 si los puntos están ocultos entre sí y vale
1/d2 cuando no existen obstáculos entre ellos (d es la distancia que los separa) .
Vamos ampliar el algoritmo de ray tracing explicado para que también simule
sombras, reflexiones y refracciones mediante cualquiera de los modelos de iluminación de los
que hemos hablado.
Para calcular las sombras, se traza un rayo desde el punto que se está evaluando hasta
la fuente de luz puntual. Si dicho rayo no interseca con ningún objeto entonces dicho punto
no estará en sombra.
Whitted y Kay desarrollaron un modelo que incluía los efectos de reflexión especular
y transparencia refractiva. Cuando un rayo lanzado desde el observador choca con un punto
el algoritmo lanza a su vez tres rayos: uno para determinar si el punto está ensombrecido, otro
en la dirección de reflexión y otro en la dirección de transmisión si tiene lugar la refracción.
Son los llamados rayos secundarios. A los dos últimos se les aplica recursivamente el
algoritmo hasta que no haya más intersecciones o se alcance algún máximo de profundidad.
Se forma así un árbol de rayos.
La ecuación de iluminación que emplea Whitted es:
→ → → →
I λ = I aλ k a Odλ + ∑S
1≤i ≤ m
i f atti I pλi k d Odλ ( N ⋅ Li ) + k s ( N ⋅ H i ) n + k s I rλ + k t I rλ
donde se añade la contribución del rayo reflejado ( k s I rλ ) y del rayo transmitido ( k t I rλ ) Para .
3.11 Renderización
este paso, se suele aplicar alguna transformación sobre las coordenadas de entrada. En
nuestro caso no es así, pero se aprovecha para crear un árbol binario de distribución espacial
(BSP). A continuación, se aplica el algoritmo concreto de radiosidad para calcular la
intensidad de los vértices de los polígonos. Con ello, se obtiene una nueva base de datos, que
en este caso será independiente del observador. Posteriormente, se eliminan los polígonos que
caen totalmente fuera de la ventana de visualización y se efectúa la eliminación de caras
posteriores. Como último paso, se deben aplicar una serie de transformaciones para llevar las
coordenadas 3D (las empleadas en el algoritmo) a las coordenadas 2D del dispositivo de
salida. Estas tranformaciones ya las hemos descrito antes y se muestran en la figura 3.9.
Capítulo 4
Algoritmos de radiosidad
La ecuación de radiosidad
Bi = Ei + ρ i ∫ B j F j −i (4.1)
donde B1 y B, son las radiosidades de las áreas i y j medidas en W/m2, E1 es la razón a la cual
se emite la luz desde i, y ρi es la reflectividad y es adimensional. Fj-i, también adimensional,
es el factor de forma y especifica la fracción de energía que abandona j y llega a i teniendo
en cuenta sus formas y orientación relativa además de posibles obstáculos.
Para llevar a cabo los cálculos, el entorno se divide en n zonas discretas o patches de
área A, para los cuales se asume una radiosidad constante. La integral sobre el entorno se
transforma así en un sumatorio sobre los patches:
Bi Ai = E i Ai + ρ i ∑A B F
1≤ j ≤ n
j j j −i (4.2)
donde Hij es 1 o 0 dependiendo si dAj es visible desde dAi o no. Para calcular el factor de
forma desde el diferencial de área dAi al área finita Aj integramos:
cosθ i cosθ j
Fdi − j = ∫
Aj πr 2
H ij dA j
Asumiendo que el punto central de la zona representa a toda esta, Fi-j puede ser
aproximada por Fdi-j calculada en el centro de la zona. Si no el valor correcto será:
1 cosθ i cosθ j
Fi − j =
Ai ∫ ∫
Ai Aj πr 2
H ij dA j dAi
Hemos de añadir que para entornos cerrados, donde toda la energía que abandona una
superficie llega a otra, los factores de forma suman la unidad:
∑F
1≤i ≤ n
i− j = ∑ F j −i = 1
1≤ j ≤ n
factores de forma. Nusselt demostró que calcular Fdi − j es equivalente a proyectar aquellas
partes de Aj que son visibles desde dAi sobre un hemisferio unidad centrado en dAi, proyectar
nuevamente esta área sobre el cfrculo unidad creado y dividirla por el área del circulo. Estas
operaciones se pueden observar con más claridad en la figura 4.2.
Cohen y Greenberg [CG85] modificaron este algoritmo para realizar las proyecciones
sobre medio cubo dividido en pixeles y centrado en dAj, como se ve en la figura 4.3. Cada
píxel en el hemicubo almacena información sobre la visibilidad de los objetos cuya
proyección caiga sobre el dicho píxel mediante el empleo de un algoritmo de buffer de ítems
Figura 4.2: Calculo del factor de forma con proyecciones sobre una media esfera
Figura 4.3: Calculo del factor de forma con proyecciones sobre un medio cubo
para almacenar la superficie que tiene la intersección más cercana al píxel. A continuación, a
cosθ i cosθ p
∆F p = ∆A j
πr 2
donde θ p (ver figura 4.4) es el ángulo que forman la normal de la celda p y el vector
Figura 2.4: Detalle del calculo del factor de forma con proyecciones sobre un medio cubo
existente entre dAi y dicha celda p, r es la longitud del vector y ∆A es el área de la celda.
r = x 2p + y 2p + 1
1
cosθ i = cosθ p =
r
donde xp y yp son las coordenadas de una celda de la cara superior. Así, la ecuación anterior se
transforma en:
1
∆F p = ∆A
π ( x + y 2p + 1) 2
2
p
r = x 2p + z 2p + 1
zp 1
cosθ i = , cosθ p =
r r
de donde se deduce:
zp
∆F p = ∆A
π ( x + z 2p + 1) 2
2
p
igual a la suma de los ∆F p de cada pixel del hemicubo que lo cubre. El problema de este
El trazado de rayos ofrece una alternativa a los métodos de proyección para computar los
factores de forma. Se rompen los patches en pequeños elementos y se realiza el trazado de
rayos entre elementos para determinar la visibilidad mutua. A continuación, se aproxima el
Bi = E i + ρ i ∑B F
1≤ j ≤ n
j i− j
Bi − ρ i ∑B F
1≤ j ≤ n
j i− j = Ei
Una vez hecho esto, se debe aplicar un algoritmo de detección de superficies visibles
para renderizar cada zona. El conjunto de radiosidades calculadas para cada banda de
longitud de onda son las intensidades de cada zona.
Debido a la simetría:
Ai
B j debido a B i = ρ j Bi Fi − j para toda j
Aj
Seleccionar parche i;
Calcular Fi-j para cada parche j;
For (cada parche){
∆Radiosidad = ρ j ∆Bi Fi − j Ai A j ;
∆B j + = ∆Radiosidad ;
B j + = ∆Radiosidad ;
}
∆Bi = 0;
Conclusiones
Glosario
A posteriori.- (del latín, “lo que viene después de”); alude a lo que es conocido por
medio de la experiencia.
A priori.- (del latín, “lo que viene antes de”), en filosofía hace referencia al
conocimiento adquirido sin contar con la experiencia, es decir, aquel que se adquiere
mediante el razonamiento deductivo.
Iluminación Global.- Luz que llega indirectamente del ambiente, por medio de la
reflexión y transmisión de la luz, a través de otras superficies.
Bibliografía