TEMA 9: Iluminación
Índice 1. Modelos de iluminación 1. Luz ambiente 2. Reflexión difusa 3. Reflexión especular 2. Modelo de sombreado para polígonos 1. Sombreado constante 2. Sombreado de Gouraud 3. Sombreado de Phong 4. Problemas del sombreado interpolado 3. Detalles de superficie 1. Mapeo de texturas 2. Mapeo de rugosidades 3. Mapeo de reflexiones 4. Cálculo de sombras 1. Algoritmo de doble pasada 2. Volúmenes de sombra 3. Algoritmos de sombras del Z-buffer 5. Transparencias 1. Transparencia no refractiva 2. Transparencia refractiva 6. Algoritmos de iluminación global 1. Trazado de rayos 2. Radiosidad
El proceso de iluminación Hay que simular los efectos de la luz sobre las superficies visibles: Un modelo de iluminación calcula la luz que se ve en un punto de la superficie Un algoritmo de iluminación usa este modelo para calcular el color de cada pixel El modelo puede calcularse en todo los puntos visibles, o interpolar a partir de varios El objetivo consiste en calcular l la intensidad d proyectada por un punto de la superficie en una dirección especificada El modelo ha de tener en cuenta: propiedades ópticas de la superficie (opaca, rugosa) posiciones relativas en la escena color y posición de las fuentes de luz posición y orientación del observador
Modelo de luz ambiente Cada objeto lleva asociado una intensidad de luz No existen fuentes de luz objetos autoluminosos Cada objeto aparece como una silueta monocromática
Ecuación de iluminación La ecuación es I = k i Se evalúa una sola vez por cada objeto A veces se considera también una fuente de luz que da igualmente en todos los objetos en todas direcciones I = I a k a I a intensidad de la luz ambiente a K a coeficiente de reflexión ambiente NOTA: K a es una conveniencia empírica no corresponde con ninguna propiedad física del material
Reflexión difusa Los objetos no tienen una iluminación uniforme en toda su superficie Consideremos una fuente puntual que emite luz en todas direcciones El brillo del objeto dependerá de la dirección y distancia de la fuente Reflexión de Lambert aquellas superficies que brillan igual desde cualquier dirección N Luz incidente N i El brillo depende del ángulo θ, y es independiente de la dirección del observador
Modelo de luz difusa La ecuación es I = I d k d cosθ donde k d es el coeficiente de reflexión difusa L N da da/cos Si la fuente de luz es lejana L=cte. fuente direccional
Combinado luz difusa y luz ambiente Las zonas oscuras a la luz aparecen negras añadimos luz ambiente I = I k + I k ( N L) ) A a + d d donde el coseno se ha sustituido por un producto escalar
Atenuación de la fuente de luz Para evitar que dos superficies con igual orientación queden igualmente iluminadas factor de atenuación I = I k + f I k ( N L) ) A a at d d Normalmente el factor de atenuación es 1 f = d inversamente proporcional al cuadrado de la distancia at 2 L
Luces coloreadas En general la luz tiene 3 componentes: R, G, B Por tanto la ecuación se evalúa tres veces, para obtener 3 componentes de intensidad I λ = I λk λ + f I λk λ ( N L) A a at d d
Reflexión especular También es direccional, pero el reflejo se produce en una dirección concreta Produce un punto brillante en la superficie que ilumina --> reflejo especular N Luz incidente N i Reflexión especular ideal Reflexión difusa
Modelo de iluminación de Phong I λ = I Aλ k aλ + f at [ α ] n I k ( N L) + I k cos dλ dλ eλ eλ donde k e es el coeficiente de reflexión especular La reflectancia máxima ocurre para α=0, y luego va cayendo en función de la potencia del coseno exponente de reflexión especular
Cálculo del vector reflejado N = L =1 R = N cosθ + S S = N cosθ L L N S S R De aquí deducimos que: V R = 2N( N L) L Y por tanto podemos calcular la expresión para cos(a)=r V: I [ ] n I k ( N L) + I k ( R V ) λ = I Aλkaλ + fat dλ dλ eλ eλ
Combinando los tres tipos La luz en cada vértice se calcula con la siguiente ecuación: I = I A k a + ( n I k + I k I k ) cosθ cos α a a d d + luces Luz ambiente global Luz ambiente Luz difusa Luz especular + e e N
Múltiples fuentes de luz Cuando hay varias luces, se suma el término para cada fuente [ ] + + = n V R k I L N k I f k I I ) ( ) ( [ ] + + = i i e ie i d id at a A V R k I L N k I f k I I ) ( ) ( λ λ λ λ λ λ λ Existe el problema del overflow Acotar en el máximo valor de intensidad Existe el problema del overflow Acotar en el máximo valor de intensidad
Atenuación atmosférica A veces es útil utilizar un efecto niebla: Añade realismo a la escena Permite recortar los objetos muy lejanos La expresión suele ser: z z0 I ( z) = ( I n Im) + z 1 z 0 I m I I niebla I modelo I intermedia z 0 z 1
Focos de luz Los focos son luces que iluminan sólo en un cierto cono visual Se añade un factor booleano al término de cada fuente, siendo cero si el ángulo β es mayor que el del foco A veces el factor no es booleano, sino que decrece hacia el borde del foco N β
Modelos de sombreado de polígonos Se puede iluminar cualquier objeto calculando para cada punto visible su normal, y evaluando la ecuación del modelo de iluminación muy costoso
Sombreado constante de polígonos El modelo de iluminación se evalúa en un solo punto de cada polígono El polígono entero llevará el color de ese punto Esta aproximación es válida siempre que: La fuente de luz esté muy alejada (N*L=cte) El observador está muy alejado (N*V=cte) El polígono representa la superfice exacta y no una aproximación
Sombreado constante de polígonos Problema: no se obtienen las variaciones de luz en el interior del polígono Un mesh poligonal l se verá mal debido al cambio brusco de intensidad en las aristas ficticias constante Flat difuso
Sombreado de Gouraud Elimina las discontinuidades de la intensidad N El método requiere conocer las normales a cada vértice del mesh: Usando la descripción analítica de la superficie Estimándola a partir de las normales a las caras comunes Los vértices reales tendrán más de una normal, una para cada superficie vecina
Sombreado de Gouraud El siguiente paso es calcular la intensidad de cada vértice, y finalmente ir interpolando por el borde y por la scan-line y 1 I 1 a partir de I 1 e I 2 se calcula I A y a partir de I 1 e I 3 se calcula I s B a partir de I A e I B se calcula I P y 2 I A I 2 I 3 I P I B y 3 3 Esta interpolación es fácilmente integrable en un algoritmo scan-line, almacenando el cambio de color por unidad de y
Flat difuso Gouraud difuso Gouraud especular
Sombreado de Phong Igual que Gouraud, pero lo que se interpolan son las normales en lugar de la intensidad Las ventajas de Phong sobre Gouraud se notan sobre todo en la reflexión especular Por qué? Si un vértice tiene alfa pequeño y sus vecinos tienen alfa grande, con Gouraud la luz decrece linealmente, pero con Phong decrecen según cos^n Otra ventaja: si la luz cae en el interior del polígono y los vértices están más oscuros, con la interpolación de Gouraud no se verán con Phong sí
Phong vs Gouraud Con Gouraud quedan más realistas los reflejos especulares Desventaja: más costoso hay que evaluar la ecuación de iluminación en cada pixel Gouraud especular Phong especular
Problemas del sombreado interpolado I Silueta poligonal: no importa lo bueno que sea el modelo siempre se ve la silueta poligonal Distorsión de la perspectiva: debido a que la interpolación se realiza después de la proyección 3D P1 P1 P0 P0
Problemas del sombreado interpolado II Dependencia de la orientación: el resultado del modelo no es independiente de la orientación del polígono se nota A B mucho en una animación A D P P C B D Problemas en los vértices compartidos: el valor del vértice C no va a coincidir normalmente con la interpolación entre A y B C A C B
Problemas del sombreado interpolado III Normales a los vértices falseadas: en este ejemplo no habría variación de color en toda la superficie Aún con todas estas desventajas, el rendering de polígonos es el más rápido
Comparación de los tres modelos
Añadiendo superficies parámetricas poligonal Superficies curvas
Añadiendo múltiples luces Superficies curvas Múltiples luces
Mapeo de texturas Las técnicas anteriores producen superficies suaves y uniformes no luce real Solución: mapear una imagen sobre el polígono La imagen puede ser sintética, digitalizada o definida por un procedimiento http://math.hws.edu/graphicsnotes/c2/s4.html
Mapeo de texturas La textura viene definida en el espacio UV Cada elemento individual se llama texel TEXture Element Para cada pixel, los texels seleccionados se usan para sustituir o escalar una o más de las propiedades del material v u
Coordenadas de textura A cada vértice se le asocia una coordenada de textura Al rellenar el polígono con el scan-line, se interpola la coordenada de textura para cada vértice, éti y se calcula l qué texels hay que pintar it
Mapeo de texturas
Mapeo de rugosidades (bump mapping) El mapeo de texturas afecta sólo al color de la superficie, pero ésta sigue siendo suave Si el mapa es una foto, puede que no coincida la dirección de la luz usada en la foto, con la dirección ió de la luz de la escena
Mapeo de rugosidades (bump mapping) La técnica consiste en no alterar la geometría de la superficie, sino perturbar las normales antes de usarlas en el modelo de iluminación En realidad d es un array de desplazamientos El único fallo es que no afecta a la silueta
Añadiendo bump mapping anterior Bump mapping
Combinando texture map y bump map
Generación de un render fotorealista
Añadiendo reflection mapping V anterior V Reflection mapping
Cálculo de sombras Hay que determinar qué superficies son vistas desde las fuentes de luz si no se ven, hay sombras La visibilidad de un punto de la escena es booleana I λ = I Aλ k aλ + [ + ] n δi fat Iid λkdλ ( N Li ) Iie λkeλ ( Ri V) i
Cálculo de sombras Si las fuentes tuviesen áreas habrían sombras y penumbras penumbra sombra penumbra
Algoritmo de doble pasada Determina las sombras antes que las superficies visibles Ejecuta el mismo algoritmo: Primero desde la fuente de luz (sólo una vez) Luego desde el observador El resultado es una lista de polígonos Se transforman al sistema de coordenadas global y se mezclan con la escena origina polígonos de detalle Finalmente se aplica un algoritmo de visibilidad y otro de iluminación Si hay múltiples fuentes de luz hay que hacer una pasada más por cada fuente
Volúmenes de sombras Se crea un volumen de sombra para cada objeto Indica el espacio de escena que se encuentra sin luz debido al objeto Sólo se calculan para los polígonos orientados hacia la luz A Los polígonos del volumen de sombras no aparecerán en la imagen final indican qué objetos se encuentran en sombra Ejemplo: Los polígonos A y B indican que los objetos detrás de ellos están en sombras (anteriores) El polígono C (posterior cancela este efecto) B C
Volúmenes de sombras Un punto P está en sombra si el rayo VP intersecta más polígonos de sombra anteriores que posteriores Si V está en sombra hay que tener en cuenta un polígono posterior más (o varios) Lo más fácil es: inicializar v=número de volúmenes de sombra que me incluyen Después, por cada polígono de sombra frontal v++, y por cada trasero v El polígono está en sombra si v > 0 NOTA: es más rentable calcular un solo volumen de sombra para cada poliedro usando las aristas de la silueta
Algoritmo de sombras del Z-buffer Se ejecuta dos veces el z-buffer: Una vez desde la fuente de luz Otra vez desde el observador
Algoritmo de sombras del Z-buffer Para crear la imagen final se usa un z-buffer modificado Para cada pixel visible, transformo sus coordenadas (x,y,z) con referencia al ojo en (x,y,z ) ) con referencia a la luz Comparo z con la z correspondiente del buffer z de la luz Si z > ZL el punto está en sombra En realidad, el z-buffer desde la luz se llama mapa de sombras
Transparencia sin refracción Los objetos transparentes permiten ver lo que hay detrás Los rayos de luz no cambian de dirección ió al atravesar la superficie Para calcular la intensidad del pixel P se interpola entre las intensidades de ambos polígonos P1 P2 I λ = ( 1 kt Iλ 1 + kt1iλ2 1) Hay que adaptar el algoritmo de visibilidad a las transparencias En el z-buffer, dejamos para el final los polígonos transparentes combinando sus colores con los del z-buffer, pero sin modificarlo
Transparencia con refracción Relación entre el ángulo de incidencia y el ángulo de refracción ley de Snell sinθ sinθ θ j i = η rλ B A
Un largo proceso
Algoritmos de iluminación global Un modelo de iluminación calcula el color en un punto en función de: La luz que le llega directamente de las fuentes de luz iluminación local La luz que llega después de reflexiones y transparencias con otros objetos de la escena iluminación global La luz ambiente era un truco para aproximar la iluminación global Cuando un algoritmo considera la totalidad de la escena para calcular el color de cada punto visible, teniendo en cuenta efectos ópticos algoritmos de iluminación global Iluminación local Iluminación global
Algoritmos clásicos Ray tracing: Depende de la posición del observador Lanza un rayo para cada pixel Funciona muy bien con objetos especulares Necesita un coste muy grande para simular fenómenos difusos Radiosidad: Es independiente del observador Discretiza toda la escena en patches pequeños Evalúa la ecuación de iluminación en todos los patches Usa un algoritmo de visibilidad para generar la escena Simula muy bien los fenómenos difusos No calcula reflexión especular
Ray-tracing Para cada pixel se lanza un rayo La intersección más cercana indica el punto visible El color se calcula combinando el debido al color del objeto, al que se refleja y al que refracta N = + +
Ray-tracing Es un esquema recursivo Para calcular cada color quizás haya que seguir lanzando rayos N N N
Algoritmo recursivo ray-tracing Funcion TrazaRayo (comienzo, dirección, profundidad, color) { Si profundidad > max_prof entonces color = negro Si no color.local = contribución_local TrazaRayo (punto_intersección, dir_reflex, prof+1, color.reflejado) TrazaRayo (punto_intersección, dir_reflex, prof+1, color.refractado) Combinar (color, color.local, color.reflejado, color.refractado) Fin Si }
Ejemplos de ray-tracing
Más ejemplos
Radiosidad Se mallan todas las superficies de la escena Para cada polígono se estudia la contribución de luz proveniente de todos los demás polígonos de la escena Una vez calculada la luz de cada polígono, pueden simularse paseos virtuales
Radiosidad: simulación de interiores
Radiosidad: condiciones de luz
Radiosidad: escenarios sintéticos