SlideShare uma empresa Scribd logo
1 de 104
Visualización y Realismo (curso 2006-07) Capítulo 4  Iluminación y sombreado sencillos.
Capítulo 4.  Índice 1. Introducción 2. Eliminación de partes ocultas 3. Tratamiento informático del color 4. Iluminación y sombreado sencillos 4.1. Modelo general de reflexión y simplificaciones 4.2. Modelo de Iluminación Local (MIL) simplificado 4.3. Métodos de sombreado sencillos. 4.4. Detalles de las superficies 4.5. Sombras arrojadas 4.6. Superficies transparentes y Especulares 4.7. Ray-tracing 5. Métodos de síntesis fotorealista. Iluminación global. 6. Métodos de visualización de volúmenes.
Capítulo 4. Introducción Iluminación y Sombreado Sencillos En este capítulo se aborda el problema de asignar un color a cada pixel de una imagen, una vez que se conocen las técnicas para EPO ,[object Object],[object Object]
4.1. Modelo general de reflexión y simplificaciones El color en un pixel depende de la radiancia media de todos los puntos del plano de visión que se corresponden con el pixel  ,[object Object],[object Object],[object Object]
4.1. Modelo general de reflexión y simplificaciones ,[object Object],[object Object],[object Object],[object Object],[object Object],w x La radiancia en un punto del plano de visión es la radiancia que abandona un punto de un objeto (ver transparencia 12)
4.1. Modelo general de reflexión y simplificaciones La radiancia reflejada  L r   ( x,w )   desde  x  en la dirección  w  es la suma integral, para todas las direcciones  w i , de radiancia entrante L i  (  x,w i  )  ,  ponderada por la función  f r  (  x, w o  , w i  )  cos  ( w i  )   L r  (  x, w o   )   =  L i  (  x, w i  )   f r  (  x, w o   , w i  )  cos  ( w i  )  dw i  w o x w i w i w i w i ,[object Object],[object Object]
4.1. Modelo general de reflexión y simplificaciones La radiancia entrante  L i  (  x,w i  )   al punto  x  desde una dirección  w i  es igual a la saliente  L (  y, -w i  )   desde otro punto  y  en la dirección contraria  -w i  ,  donde  y =P ( x,w i )  (ver definición de  P  en la página 43 del cappítulo 1) y = P ( x,w i ) x w i -w i ,[object Object],[object Object]
4.1. Modelo general de reflexión y simplificaciones ,[object Object],[object Object],[object Object],[object Object],Imágenes extraidas del libro de Foley y otros ( Computer Graphics, Principles and Practice ), Creadas por T. Williams y H.B. Siegel
4.2. MIL simplificado. Índice. 4.1. Modelo general de reflexión local de luz y simplificaciones 4.2. Modelo de Iluminación Local (MIL) simplificado 4.2.1. Componente ambiental. 4.2.2. Componente difusa 4.2.3. Atenuación con la distancia 4.2.4. Modelos para la componente pseudo-especular 4.3. Métodos de sombreado sencillos. 4.4. Detalles de las superficies 4.5. Sombras arrojadas 4.6. Superficies transparentes  4.7. Superficies especulares 4.8. Ray-tracing
4.2. MIL simplificado ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
4.2.1. MIL Simple. Componente ambiental. Vamos a ver un MIL muy frecuentemente usado. Este MIL tiene varios sumandos o componentes: La primera componente es la  Luz Ambiente ,[object Object],[object Object],[object Object],[object Object],Esta componente del modelo de iluminación local tiene esta expresión: I  =  k a  I a  ( I R  ,I G  ,I B )   =  k a   ( I aR  ,   I aG   ,   I aB   )
4.2.1. MIL Simple. Componente ambiental. Aquí vemos una imagen en la cual el factor  k a   va en aumento desde 0
4.2.1. MIL Simple. Componente difusa. ,[object Object],[object Object],[object Object],a a    >  0 90 0 s = a / cos (  ) s = a
4.2.1. MIL Simple. Componente difusa. ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
4.2.1. MIL Simple. Componente difusa. Esta componente difusa suele expresarse como: I  =   k d   I p   (  N  · L  ) donde el punto ( · ) indica producto escalar,  N  es el vector normal a la superficie en  x , y  L  es el vector (unitario) que va desde el punto  x  hacia la  fuente de luz (que es un punto). x N L
4.2.1. MIL Simple. Componente difusa. Aquí vemos una imagen en la cual el factor  k d   va en aumento desde 0
4.2.3. MIL Simple. Atenuación con la distancia La luz de una fuente que alcanza un objeto se atenúa con la distancia m Podemos incorporar este factor en la expresión anterior I  =   k d   f att  I p   (  N  · L  ) La intensidad de luz decrece con el cuadrado de la distancia, luego, si d  es la distancia entre la fuente y  x  entonces podemos hacer: f att  =  1 / d 2 Sin embargo, de esta forma en las imágenes la luz cambia muy bruscamente. Una alternativa es usar tres constantes  c 1  c 2  y  c 3
4.2. MIL Simple. ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
4.2. MIL Simple. Aquí  k a  crece hacia la derecha y  k d  hacia abajo
4.2.4. MIL Simple. Componente pseudo-especular ,[object Object],[object Object],[object Object],[object Object],La dirección de máxima intensidad del reflejo coincide con la dirección especular respecto a la dirección de incidencia de la luz.
4.2.4. MIL Simple. Componente pseudo-especular Es necesario definir el vector  R  como el vector reflejado de  L  respecto de la normal  N   ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],R L N k/2 N k N
4.2.4. MIL Simple. Componente pseudo-especular x N V O L R a ,[object Object],[object Object],[object Object],La expresión propuesta por Phong es la siguiente: I  =  k s   [  cos (  )   ] n donde:  cos (  ) = (  R  · V  )
4.2.4. MIL Simple. Componente pseudo-especular ,[object Object],[object Object],[object Object],Aquí vemos el efecto que se produce cuando  n =  1  en la figura de arriba o bien para valores de  n  más grandes (típicamente 10 o más), en la figura de abajo. 90  0   1  [  cos (  )   ] n  0 90 0   1   [  cos (  )   ] n  0
4.2.4. MIL Simple. Componente pseudo-especular Aquí  k s  crece hacia la derecha y hacia abajo
4.2.4. MIL Simple. Componente pseudo-especular Aquí  n  crece hacia la derecha y hacia abajo
4.2.4. MIL Simple. Componente pseudo-especular Los modelos anteriores pueden combinarse para producir otro nuevo con todas las componentes (ambiental + difusa + especular) I R  =   k a  O dR  I aR  + f att  I pR   [  k d  O dR   (  N  · L  ) +  k s  O sR   (  V  · R  ) n   ] Aquí hemos usado un color del objeto, que afecta a la parte especular, dicho color RGB  es  ( O sR  ,O sG  , O sB )   Finalmente, si hay muchas ( m ) fuentes de luz, será necesario sumar la contribución de cada una de ellas: I R  =   k a  O dR  I aR  +  f i  I piR   [  k d  O dR   (  N  · L i  ) +  k s  O sR   (  V  · R i  ) n   ]  i  =1 m
4.2.4. MIL Simple. Componente pseudo-especular Aquí  k d  crece hacia la derecha y  k s  hacia abajo
4.2.4. MIL Simple. Componente pseudo-especular ,[object Object],[object Object],[object Object],x N V O L H  Las expresiones son  exactamente iguales que antes, excepto que se usa el termino  ( N·H ) n  donde  antes aparecía  ( R·V )  n Nótese que cuando  R=V , entonces  N=H
4.2.5. MIL Simple. Atenuación atmosférica ,[object Object],[object Object],[object Object],x y ,[object Object],[object Object],x y
4.2.5. MIL Simple. Atenuación atmosférica ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],f d
4.2.5. MIL Simple. Atenuación atmosférica Ejemplo: Fuente OpenGL obtenido y adaptado de:  http://www.sgi.com/products/software/opengl/examples/redbook/source/fog.c
4.3. Métodos de Sombreado Sencillo. Índice. 4.1. Modelo general de reflexión local de luz y simplificaciones 4.2. Modelo de Iluminación Local (MIL) simplificado 4.3. Métodos de sombreado sencillos. 4.3.1. Sombreado plano 4.3.2. Interpolación de intensidades (Gouroud) 4.3.3. Interpolación de normales (Phong) 4.4. Detalles de las superficies 4.5. Sombras arrojadas 4.6. Superficies transparentes. 4.7. Superficies especulares 4.8. Ray-tracing
4.3. Métodos de Sombreado Sencillo ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
4.3.1. Sombreado. Sombreado Plano. ,[object Object],[object Object],[object Object],[object Object],N V L Este método es muy eficiente, pero también muy limitado
4.3.1. Sombreado. Sombreado Plano. Si los objetos son curvos (no están formados por caras planas), lo usual es aproximarlos por caras planas. Aparecen dos inconvenientes: Se produce un efecto de  bandas Match  que acentúa los contrastes en los bordes entre polígonos (debido a la  inhibición lateral   de las neuronas fotoreceptoras en la retina) El objeto no aparece como curvo, si no a facetas, a no ser que el tamaño de los polígonos proyectados sea inferior a un pixel.
4.3.1. Sombreado. Sombreado Plano. Aquí vemos un ejemplo de sombreado plano:
4.3.1. Sombreado. Sombreado Plano. Además de lo anterior, si el observador o la fuente de luz están cercanas al objeto, la iluminación constante en cada cara no es correcta. fuente de luz observador superficie R R’ V’ V El ángulo entre  R  y  V  varía mucho, igual pasa con el ángulo entre  L  y la normal. Por tanto, la intensidad reflejada cambia mucho. L L’
4.3.2. Sombreado. Interpolación de intensidades (Gouroud) ,[object Object],[object Object],I 1 I 2 I 3 I 2 I 1 I 3
4.3.2. Sombreado. Interpolación de intensidades (Gouroud) I 2  ( x 2  ,y 2 ) I 1   ( x 1  ,y 1 ) I 3   ( x 3  ,y 3 ) I a   ( x a  ,y ) I b   ( x b  ,y ) I  ( x,y ) I a  = Interpolar (  y, I 2  , y 2  , I 1  , y 1  ) I b  = Interpolar (  y, I 2  , y 2  , I 3  , y 3  ) x a  = Interpolar (  y, x 2  , y 2  , x 1  , y 1  ) x b  = Interpolar (  y, x 2  , y 2  , x 3  , y 3  ) I = Interpolar (   x , I a  , x a  , I b  , x b   ) Interpolar (  v , r 1  , v 1  , r 2  , v 2  )  = y ,[object Object],[object Object],[object Object]
4.3.2. Sombreado. Interpolación de intensidades (Gouroud) I 2  ( x 2  ,y 2 ) I 1   ( x 1  ,y 1 ) I 3   ( x 3  ,y 3 ) I  ( x,y ) En el caso de que el polígono sea un triángulo (es lo más frecuente), cada componente del color se interpola linealmente igual que las Z en Z-buffer Las tuplas   (  x  ,  y  ,  I R   )   pueden interpretarse como puntos de un plano cuya ecuación implícita es: a R  x  +  b R  y +  c R  I + d R  =   0 y por tanto, podemos escribir: I R   =  f R ( x,y )   =  e R  x + g R  y + h R I G   =  f G ( x,y )   =  e G  x + g G  y + h G I B   =  f B ( x,y )   =  e B  x + g B  y + h B
4.3.2. Sombreado. Interpolación de intensidades (Gouroud) ,[object Object],[object Object],Para  i  desde  1  hasta  3 Sea  I i  = intensidad en el vértice i-ésimo de  T Sea  L  = CreaListaInter(  T  ) RellenaGouroud(  T, L, I 1  , I 2  , I 3  ) Procedimiento  Gouroud ( Triángulo  T  )
4.3.2. Sombreado. Interpolación de intensidades (Gouroud) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],función  CreaListaInter ( Triángulo  T  )
4.3.2. Sombreado. Interpolación de intensidades (Gouroud) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Procedimiento  RellenaGouroud ( Triáng.  T , Lista inter.  L ,  Intens.  I 1   I 2   I 3  )
4.3.2. Sombreado. Interpolación de intensidades (Gouroud) Aquí vemos un ejemplo de sombreado de Gouroud:
4.3.2. Sombreado. Interpolación de intensidades (Gouroud) ,[object Object],[object Object],[object Object],[object Object],[object Object]
4.3.2. Sombreado. Interpolación de intensidades (Gouroud) El método de Gouroud presenta un problema: la posible  perdida de zonas brillantes dentro del triángulo. L N R=V Punto con máximo brillo (según modelo de Phong) Curva real. Aproximación poligonal + interpolación Brillo menor en los  extremos del segmento
4.3.2. Sombreado. Interpolación de intensidades (Gouroud) En general, el problema anterior se presenta siempre que aproxima una función continua por una serie de segmentos de recta.. Este problema se puede resolver discretizando a más resolución, pero esto incrementa los tiempos de cálculo.
4.3.3. Sombreado. Interpolación de normales (Phong) ,[object Object],[object Object],[object Object],[object Object],[object Object],N a N b N 1 N 2 N 3
4.3.3. Sombreado. Interpolación de normales (Phong) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
4.3.3. Sombreado. Interpolación de normales (Phong) Aquí vemos un ejemplo de sombreado de Phong:
4.3. Sombreado. Los métodos de interpolación de Gouroud y Phong tienen algunas limitaciones: ,[object Object],[object Object],[object Object],[object Object],[object Object]
4.4. Detalles de las superficies. Índice. 4.1. Modelo general de reflexión local de luz y simplificaciones 4.2. Modelo de Iluminación Local (MIL) simplificado 4.3. Métodos de sombreado sencillos. 4.4. Detalles de las superficies 4.4.1. Polígonos de detalle 4.4.2. Texturas 4.4.3. Mapas de perturbación de la normal 4.5. Sombras arrojadas 4.6. Superficies transparentes. 4.7. Superficies especulares 4.8. Ray-tracing
4.4. Detalles de las superficies. ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
4.4.1. Detalles. Polígonos de detalle. ,[object Object],[object Object],[object Object],[object Object]
4.4.2. Detalles. Texturas. ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
4.4.2. Detalles. Texturas. ,[object Object],[object Object],Pixel en pantalla Región en la  superficie Región en el dominio u v El color a usar para sombrear el pixel debe ser la media del color de los texels de la textura ocupados por el pixel.
4.4.2. Detalles. Texturas. ,[object Object],[object Object],[object Object],Si una textura es de muy alta resolución, o esta lejos, entonces un pixel puede cubrir muchísimos texels. En estos casos se pueden usar varias versiones de la textura con distintas resoluciones.
4.4.2. Detalles. Texturas. Aquí vemos un ejemplo de una textura aplicada a la tetera Se usa un algoritmo simplificado de OpenGL (1 texel por pixel) textura sin sombreado sombreado sin textura Resultado (modulación)
4.4.2. Detalles. Texturas. En el caso de mallas de polígonos, las correspondencia f se hace asignando coordenadas de textura a los vértices, y usando interpolación lineal (es el esquema de OpenGL) Imagen del libro “OpenGL Programming Guide”, disponible en: http://www.glprogramming.com/red/chapter09.html ( u,v ) U V
4.4.2. Detalles. Mapas de perturbación de la normal ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
4.4.2. Detalles. Mapas de perturbación de la normal Si  N  es la normal original (de longitud unidad), entonces podemos calcular la normal modificada  N’   usando la siguiente fórmula: N’  =  N + d u  (  N  × Q v   )  - d v   (  N  × Q u   ) donde: T   = textura de grises que controla las alturas (valores escalares). P   = punto a sombrear ( u , v )  = coordenadas en el espacio de la textura del punto  P d u =  dT ( u,v ) /du  (derivada de  T  respecto de  u  en ( u , v )) d v =  dT ( u,v ) /dv  (derivada de  T  respecto de  v  en ( u , v )) Q u   =  dF ( u,v ) /du  (vector tangente a la superficie en  P,  respecto de  u ) Q v   =  dF ( u,v ) /dv  (vector tangente a la superficie en  P , respecto de  v ) F   = función de parametrización de la superficie original
4.4.2. Detalles. Mapas de perturbación de la normal Ejemplo: Imágenes de Fredo Durand y Barb Curtler:  http://groups.csail.mit.edu/graphics/classes/6.837
4.4.2. Detalles. Mapas de perturbación de la normal Ejemplo:
4.4.2. Detalles. Mapas de perturbación de la normal Aquí vemos un ejemplo de  bump-mapping  combinado con texturas e iluminación:
4.5. Sombras arrojadas. Índice. 4.1. Modelo general de reflexión local de luz y simplificaciones 4.2. Modelo de Iluminación Local (MIL) simplificado 4.3. Métodos de sombreado sencillos. 4.4. Detalles de las superficies 4.5. Sombras arrojadas 4.5.1. Polígonos de detalle 4.5.2. Algoritmo de Weiler-Atherton-Greenberg 4.5.3. Algoritmo de Z-Buffer 4.6. Superficies transparentes. 4.7. Superficies especulares 4.8. Ray-tracing
4.5. Sombras arrojadas ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],y x 1 x 2 x 3
4.5. Sombras arrojadas La expresión del Modelo de Iluminación local de la transparencia 26 se debe de modificar para tener en cuenta el efecto de la visibilidad: ,[object Object],[object Object],[object Object],I R  =   k a  O dR  I aR  +  S i   f i  I piR   [  k d  O dR   (  N  · L i  ) +  k s  O sR   (  V  · R i  ) n   ]  i  =1 n
4.5.1. Sombras arrojadas. Polig. de detalle. ,[object Object],[object Object],[object Object],y Esto puede ser muy complejo, ya que tiene complejidad cuadrática con el número de polígonos. Se puede hacer solo para unos pocos polígonos que proyectan sombras, y un único polígono (típicamente el suelo), que las recibe.
4.5.2. Sombras arrojadas. Alg. W.A.G. ,[object Object],[object Object],[object Object],Polígono original Polígono de  detalle iluminado
4.5.3. Sombras arrojadas. Z-buffer También se puede usar el Z-buffer, para sombras y para EPO observador (Z-buffer B) fuente de luz Z-buffer A p q
4.5.4. Sombras arrojadas. Z-Buffer ,[object Object],[object Object],[object Object],[object Object],[object Object]
4.5.4. Sombras arrojadas. Z-Buffer Ejemplo:
4.5.4. Sombras arrojadas. Z-Buffer Se soluciona aumentando la resolución del Z-buffer de la fuente de luz (aunque hay otros algoritmos) Este algoritmo puede dar problemas para objetos muy lejanos a la fuente de luz (las sombras aparecen escalonadas). http://www.devmaster.net/ articles/shadow_techniques/
4.5.4. Sombras arrojadas. Z-Buffer Este algoritmo puede usarse para “proyectar” texturas sobre los objetos http://developer.nvidia.com/object/cedec_shadowmap.html
4.6. Superficies transparentes. Índice. 4.1. Modelo general de reflexión local de luz y simplificaciones 4.2. Modelo de Iluminación Local (MIL) simplificado 4.3. Métodos de sombreado sencillos. 4.4. Detalles de las superficies 4.5. Sombras arrojadas. 4.6. Superficies transparentes. 4.6.1. Refracción 4.6.2. Método simple. 4.6.3. Semitransparencia. 4.7. Superficies especulares 4.8. Ray-tracing
4.6. Superficies transparentes. ,[object Object],[object Object],[object Object],[object Object],[object Object]
4.6. Superficies transparentes ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],(  I R  ,  I G  ,  I B  ) (  I’ R   ,  I’ G   ,  I’ B  ) O tR  O tG  O tB k t
4.6.1. Superficies transparentes. Refracción. T  =  sen (  t   )  M  -  cos  (  t   )  N donde: I  =  dirección de luz incidente (norm.) N =  normal a la superficie M = N    (  N    I  ) cos (  i   ) =  I•N sen (  i   ) =    ( 1 -  cos 2 (  i   ))  sen (  t   ) =  sen (  i   )  n i  /  n t   cos (  t   )  =    ( 1  - sen 2 (  t   )) T M N -N I  i  t n i n t  n t  sen (  t   ) =  n i   sen (  i   )  La luz incidente en la dirección  I  se refracta en la dirección  T
4.6.2. Superficies transparentes. Método simple. ,[object Object],[object Object],Inicializar Z-buffer ( Z ) e Imagen ( I ) Para cada polígono opaco  P Dibujar  P  en la imagen  I , actualizando  Z Para cada polígono transparente  Q  con atributos  k t  O tR  O tG  O tB   Para cada pixel ( x,y ) ocupado por  Q Si  Q  es visible en ( x,y ) I R ( x,y )   =  I R ( x,y )  * k t  *O tR
4.6.3. Superficies transparentes. Semitransparencia. ,[object Object],[object Object],[object Object],k t2  k t1  I 1 I 2 k t2  I 2 I 1 I 3 k t2 k t1 I 3 I =  I 3  +  k t2  I 2   +  k t2  k t1  I 1 La intensidad final,  I , es la suma de las tres partes: Si se intercambian  I 2  con  I 3  y  k t1  con  k t2  los dos primeros sumandos varían. fuente opaco
4.6.3. Superficies transparentes. Semitransparencia. ,[object Object],[object Object],Inicializar Z-buffer ( Z ) e Imagen ( I ) Para cada polígono opaco  P Dibujar  P  en la imagen  I , actualizando  Z Para cada polígono transparente  Q  (en orden de profundidad)  Para cada pixel ( x,y ) ocupado por  Q Si  Q  es visible en ( x,y ) Sea  I’  = resultado de evaluar el MIL, según página 140 Hacer  I R ( x,y )   =  I’  +  I R ( x,y )  * k t  *O tR   ( idem para  I G  ( x,y )  e I B  ( x,y )  )
4.6.3. Superficies transparentes. Semitransparencia. Ejemplo: http://developer.nvidia.com/object/order_independent_transparency.html
4.7. Superficies especulares. Índice. 4.1. Modelo general de reflexión local de luz y simplificaciones. 4.2. Modelo de Iluminación Local (MIL) simplificado. 4.3. Métodos de sombreado sencillos. 4.4. Detalles de las superficies. 4.5. Sombras arrojadas. 4.6. Superficies transparentes. 4.7. Superficies especulares 4.7.1. Mapas de entorno 4.7.2. Duplicación 4.8. Ray-tracing
4.7. Superficies especulares ,[object Object],[object Object],[object Object],N x w y w’ El color de  x  visto desde  w  es igual al color de  y  visto desde  w’ (suponiendo que la esfera es perfectamente especular, pero el rectángulo no lo es)
4.7.1.  Superficies especulares. Mapas de entorno. ,[object Object],[object Object],[object Object],x R N R a
4.7.1.  Superficies especulares. Mapas de entorno. Ejemplo de mapas de entorno: Imágenes de Fredo Durand y Barb Curtler:  http://groups.csail.mit.edu/graphics/classes/6.837
4.7.1.  Superficies especulares. Mapas de entorno. Ejemplo de mapas de entorno:
4.7.1.  Superficies especulares. Mapas de entorno. Ejemplo de mapas de entorno (más texturas y bump-mapping) http://developer.nvidia.com/object/reflective_bump_mapping.html
4.7.2. Superficies especulares. Duplicación. ,[object Object],[object Object],observador original observador simétrico plano del espejo
4.7.2. Superficies especulares. Duplicación. Ejemplo: (combinado con sombras arrojadas, y texturas) http://www.opengl.org/resources/code/samples/mjktips/TexShadowReflectLight.html
4.8. Ray-Tracing. Índice. 4.1. Modelo general de reflexión local de luz y simplificaciones 4.2. Modelo de Iluminación Local (MIL) simplificado 4.3. Métodos de sombreado sencillos. 4.4. Detalles de las superficies 4.6. Superficies transparentes. 4.7. Superficies especulares 4.8. Ray-tracing 4.8.1. Algoritmo básico. 4.8.2. Sombras arrojadas 4.8.3. Mapas de texturas. 4.8.4. Superficies especulares y transparentes. 4.8.5. Análisis. 4.8.6. Ejemplos 4.8.7. Extensiones.
4.8. Ray-Tracing. ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
4.8.1.  Ray-Tracing. Algoritmo básico ,[object Object],[object Object],[object Object]
4.8.1.  Ray-Tracing. Algoritmo básico Una vez que se conoce el punto, se puede calcular el vector normal al objeto en dicho punto. Con todo esto podemos evaluar el modelo de iluminación local, y asignar color al pixel.  N P V R L plano de  visión fuente de luz Con esto podemos incluir objetos curvos (esferas, cilindros, conos, etc..)
4.8.2. Ray-Tracing. Sombras arrojadas. ,[object Object],[object Object],[object Object],[object Object],P L 2 plano de  visión L 1
4.8.2. Ray-Tracing. Mapas de texturas. ,[object Object],[object Object],[object Object],[object Object],[object Object],Mapa de texturas u v
4.8.3. Ray-Tracing. Superficies especulares ,[object Object],[object Object],rayo primario secundario (reflejado) secundario (refractado)
4.8.4. Ray-Tracing. Esquema del algoritmo. El esquema del algoritmo es como sigue: Sea  O  = posición del observador, en CM (coords. del mundo) Para cada pixel (  i , j  ) de la imagen Sea  Q  = punto central (en CM) del pixel (  i , j  ) en el plano de visión Sea  W  = vector desde  O  hasta  Q  normalizado Sea  I  =  RayTracing (  O, W , 1  ) Fijar pixel ( i,j ) con el color  I La función RayTracing es recursiva, devuelve un color, y tiene un parámetro que sirve para que la recursión no se haga infinita.
4.8.4. Ray-Tracing. Esquema del algoritmo. La funcion RayTracing tiene el siguiente esquema Funcion  Ray-Tracing(  punto  O , vector  W , entero  n   ) Si  n > maximo devolver color negro Sea  A  = primer objeto visible desde  O  en la dirección  W Si no existe ningún objeto devolver color de fondo Sea  P  = punto de  A  alcanzado por el rayo ( P=O+dW ) Sea  N  = vector normal a  A  en  P Sea ( u,v ) = coordenadas de  P  en el espacio de la textura de  A Hacer  I  =  EvaluaMIL (  A, P, N, u,v,n  ) Devolver  I
4.8.4. Ray-Tracing. Esquema del algoritmo. Función  EvaluaMIL ( objeto  A , punto  P , vectores  N, W , reales  u,v , entero n ) Para cada fuente de luz puntual con posición  C i Hacer  S i  =  V (  P, C i   ) Sea  V = -W Obtener todos los atributos del objeto  A  en  P   ( k a  k d  k s  k t  k ps  O dR  O dG  ..etc....) Sea  I  = resultado de evaluar el MIL (según fórmula de la página 65) Si  k t  > 0 Sea  T  = vector refractado respecto de  V , siendo la normal  N Hacer  I   = I + k t  *  RayTracing ( P, T, n+1 ) Si  k ps  > 0 Sea  R  = vector reflejado respecto de  V , siendo la normal  N Hacer  I  =  I + k ps  *  RayTracing ( P, R, n+1 ) devolver  I
4.8.5. Ray-Tracing. Análisis ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
4.8.6. Ray-Tracing. Ejemplos. Aquí vemos un ejemplo con superficies especulares y  bump-mapping
4.8.6. Ray-Tracing. Ejemplos. Aquí vemos un ejemplo con superficies transparentes, y/o especulares y texturas
4.8.7. Ray-Tracing. Extensiones. ,[object Object],[object Object],[object Object],[object Object],[object Object]

Mais conteúdo relacionado

Semelhante a Iluminación y sombreado sencillos en CG

Semelhante a Iluminación y sombreado sencillos en CG (20)

Unidad 4 graficación
Unidad 4 graficaciónUnidad 4 graficación
Unidad 4 graficación
 
Tema 02
Tema 02Tema 02
Tema 02
 
Luminotecnia
LuminotecniaLuminotecnia
Luminotecnia
 
Tem302 1 luminotecnia 2 2018
Tem302 1 luminotecnia 2 2018Tem302 1 luminotecnia 2 2018
Tem302 1 luminotecnia 2 2018
 
4. Optica geométrica
4. Optica geométrica4. Optica geométrica
4. Optica geométrica
 
Tippens fisica 7e_diapositivas_33
Tippens fisica 7e_diapositivas_33Tippens fisica 7e_diapositivas_33
Tippens fisica 7e_diapositivas_33
 
4. optica geométrica
4. optica geométrica4. optica geométrica
4. optica geométrica
 
luminotecnia 2018 ARQUITECTURA
luminotecnia  2018 ARQUITECTURAluminotecnia  2018 ARQUITECTURA
luminotecnia 2018 ARQUITECTURA
 
Apuntes fotometria
Apuntes fotometriaApuntes fotometria
Apuntes fotometria
 
luminotecnia
luminotecnialuminotecnia
luminotecnia
 
opticA Geometrica
opticA GeometricaopticA Geometrica
opticA Geometrica
 
Optica FíSica , luz, reflexión, refracción, iluminación
Optica FíSica , luz, reflexión, refracción, iluminaciónOptica FíSica , luz, reflexión, refracción, iluminación
Optica FíSica , luz, reflexión, refracción, iluminación
 
8www mhe-esciclosformativosluminotecnia-130312033455-phpapp01 (1)
8www mhe-esciclosformativosluminotecnia-130312033455-phpapp01 (1)8www mhe-esciclosformativosluminotecnia-130312033455-phpapp01 (1)
8www mhe-esciclosformativosluminotecnia-130312033455-phpapp01 (1)
 
TEMA-4-OPTICA-GEOMETRICA.pptx
TEMA-4-OPTICA-GEOMETRICA.pptxTEMA-4-OPTICA-GEOMETRICA.pptx
TEMA-4-OPTICA-GEOMETRICA.pptx
 
Opd 15
Opd 15Opd 15
Opd 15
 
Luminotecnia.pptx
Luminotecnia.pptxLuminotecnia.pptx
Luminotecnia.pptx
 
Luminotecnia
LuminotecniaLuminotecnia
Luminotecnia
 
Luminotecnia
LuminotecniaLuminotecnia
Luminotecnia
 
_luminotecnia.pdf
_luminotecnia.pdf_luminotecnia.pdf
_luminotecnia.pdf
 
Óptica Geométrica
Óptica GeométricaÓptica Geométrica
Óptica Geométrica
 

Iluminación y sombreado sencillos en CG

  • 1. Visualización y Realismo (curso 2006-07) Capítulo 4 Iluminación y sombreado sencillos.
  • 2. Capítulo 4. Índice 1. Introducción 2. Eliminación de partes ocultas 3. Tratamiento informático del color 4. Iluminación y sombreado sencillos 4.1. Modelo general de reflexión y simplificaciones 4.2. Modelo de Iluminación Local (MIL) simplificado 4.3. Métodos de sombreado sencillos. 4.4. Detalles de las superficies 4.5. Sombras arrojadas 4.6. Superficies transparentes y Especulares 4.7. Ray-tracing 5. Métodos de síntesis fotorealista. Iluminación global. 6. Métodos de visualización de volúmenes.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9. 4.2. MIL simplificado. Índice. 4.1. Modelo general de reflexión local de luz y simplificaciones 4.2. Modelo de Iluminación Local (MIL) simplificado 4.2.1. Componente ambiental. 4.2.2. Componente difusa 4.2.3. Atenuación con la distancia 4.2.4. Modelos para la componente pseudo-especular 4.3. Métodos de sombreado sencillos. 4.4. Detalles de las superficies 4.5. Sombras arrojadas 4.6. Superficies transparentes 4.7. Superficies especulares 4.8. Ray-tracing
  • 10.
  • 11.
  • 12. 4.2.1. MIL Simple. Componente ambiental. Aquí vemos una imagen en la cual el factor k a va en aumento desde 0
  • 13.
  • 14.
  • 15. 4.2.1. MIL Simple. Componente difusa. Esta componente difusa suele expresarse como: I = k d I p ( N · L ) donde el punto ( · ) indica producto escalar, N es el vector normal a la superficie en x , y L es el vector (unitario) que va desde el punto x hacia la fuente de luz (que es un punto). x N L
  • 16. 4.2.1. MIL Simple. Componente difusa. Aquí vemos una imagen en la cual el factor k d va en aumento desde 0
  • 17. 4.2.3. MIL Simple. Atenuación con la distancia La luz de una fuente que alcanza un objeto se atenúa con la distancia m Podemos incorporar este factor en la expresión anterior I = k d f att I p ( N · L ) La intensidad de luz decrece con el cuadrado de la distancia, luego, si d es la distancia entre la fuente y x entonces podemos hacer: f att = 1 / d 2 Sin embargo, de esta forma en las imágenes la luz cambia muy bruscamente. Una alternativa es usar tres constantes c 1 c 2 y c 3
  • 18.
  • 19. 4.2. MIL Simple. Aquí k a crece hacia la derecha y k d hacia abajo
  • 20.
  • 21.
  • 22.
  • 23.
  • 24. 4.2.4. MIL Simple. Componente pseudo-especular Aquí k s crece hacia la derecha y hacia abajo
  • 25. 4.2.4. MIL Simple. Componente pseudo-especular Aquí n crece hacia la derecha y hacia abajo
  • 26. 4.2.4. MIL Simple. Componente pseudo-especular Los modelos anteriores pueden combinarse para producir otro nuevo con todas las componentes (ambiental + difusa + especular) I R = k a O dR I aR + f att I pR [ k d O dR ( N · L ) + k s O sR ( V · R ) n ] Aquí hemos usado un color del objeto, que afecta a la parte especular, dicho color RGB es ( O sR ,O sG , O sB ) Finalmente, si hay muchas ( m ) fuentes de luz, será necesario sumar la contribución de cada una de ellas: I R = k a O dR I aR + f i I piR [ k d O dR ( N · L i ) + k s O sR ( V · R i ) n ]  i =1 m
  • 27. 4.2.4. MIL Simple. Componente pseudo-especular Aquí k d crece hacia la derecha y k s hacia abajo
  • 28.
  • 29.
  • 30.
  • 31. 4.2.5. MIL Simple. Atenuación atmosférica Ejemplo: Fuente OpenGL obtenido y adaptado de: http://www.sgi.com/products/software/opengl/examples/redbook/source/fog.c
  • 32. 4.3. Métodos de Sombreado Sencillo. Índice. 4.1. Modelo general de reflexión local de luz y simplificaciones 4.2. Modelo de Iluminación Local (MIL) simplificado 4.3. Métodos de sombreado sencillos. 4.3.1. Sombreado plano 4.3.2. Interpolación de intensidades (Gouroud) 4.3.3. Interpolación de normales (Phong) 4.4. Detalles de las superficies 4.5. Sombras arrojadas 4.6. Superficies transparentes. 4.7. Superficies especulares 4.8. Ray-tracing
  • 33.
  • 34.
  • 35. 4.3.1. Sombreado. Sombreado Plano. Si los objetos son curvos (no están formados por caras planas), lo usual es aproximarlos por caras planas. Aparecen dos inconvenientes: Se produce un efecto de bandas Match que acentúa los contrastes en los bordes entre polígonos (debido a la inhibición lateral de las neuronas fotoreceptoras en la retina) El objeto no aparece como curvo, si no a facetas, a no ser que el tamaño de los polígonos proyectados sea inferior a un pixel.
  • 36. 4.3.1. Sombreado. Sombreado Plano. Aquí vemos un ejemplo de sombreado plano:
  • 37. 4.3.1. Sombreado. Sombreado Plano. Además de lo anterior, si el observador o la fuente de luz están cercanas al objeto, la iluminación constante en cada cara no es correcta. fuente de luz observador superficie R R’ V’ V El ángulo entre R y V varía mucho, igual pasa con el ángulo entre L y la normal. Por tanto, la intensidad reflejada cambia mucho. L L’
  • 38.
  • 39.
  • 40. 4.3.2. Sombreado. Interpolación de intensidades (Gouroud) I 2 ( x 2 ,y 2 ) I 1 ( x 1 ,y 1 ) I 3 ( x 3 ,y 3 ) I ( x,y ) En el caso de que el polígono sea un triángulo (es lo más frecuente), cada componente del color se interpola linealmente igual que las Z en Z-buffer Las tuplas ( x , y , I R ) pueden interpretarse como puntos de un plano cuya ecuación implícita es: a R x + b R y + c R I + d R = 0 y por tanto, podemos escribir: I R = f R ( x,y ) = e R x + g R y + h R I G = f G ( x,y ) = e G x + g G y + h G I B = f B ( x,y ) = e B x + g B y + h B
  • 41.
  • 42.
  • 43.
  • 44. 4.3.2. Sombreado. Interpolación de intensidades (Gouroud) Aquí vemos un ejemplo de sombreado de Gouroud:
  • 45.
  • 46. 4.3.2. Sombreado. Interpolación de intensidades (Gouroud) El método de Gouroud presenta un problema: la posible perdida de zonas brillantes dentro del triángulo. L N R=V Punto con máximo brillo (según modelo de Phong) Curva real. Aproximación poligonal + interpolación Brillo menor en los extremos del segmento
  • 47. 4.3.2. Sombreado. Interpolación de intensidades (Gouroud) En general, el problema anterior se presenta siempre que aproxima una función continua por una serie de segmentos de recta.. Este problema se puede resolver discretizando a más resolución, pero esto incrementa los tiempos de cálculo.
  • 48.
  • 49.
  • 50. 4.3.3. Sombreado. Interpolación de normales (Phong) Aquí vemos un ejemplo de sombreado de Phong:
  • 51.
  • 52. 4.4. Detalles de las superficies. Índice. 4.1. Modelo general de reflexión local de luz y simplificaciones 4.2. Modelo de Iluminación Local (MIL) simplificado 4.3. Métodos de sombreado sencillos. 4.4. Detalles de las superficies 4.4.1. Polígonos de detalle 4.4.2. Texturas 4.4.3. Mapas de perturbación de la normal 4.5. Sombras arrojadas 4.6. Superficies transparentes. 4.7. Superficies especulares 4.8. Ray-tracing
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58. 4.4.2. Detalles. Texturas. Aquí vemos un ejemplo de una textura aplicada a la tetera Se usa un algoritmo simplificado de OpenGL (1 texel por pixel) textura sin sombreado sombreado sin textura Resultado (modulación)
  • 59. 4.4.2. Detalles. Texturas. En el caso de mallas de polígonos, las correspondencia f se hace asignando coordenadas de textura a los vértices, y usando interpolación lineal (es el esquema de OpenGL) Imagen del libro “OpenGL Programming Guide”, disponible en: http://www.glprogramming.com/red/chapter09.html ( u,v ) U V
  • 60.
  • 61. 4.4.2. Detalles. Mapas de perturbación de la normal Si N es la normal original (de longitud unidad), entonces podemos calcular la normal modificada N’ usando la siguiente fórmula: N’ = N + d u ( N × Q v ) - d v ( N × Q u ) donde: T = textura de grises que controla las alturas (valores escalares). P = punto a sombrear ( u , v ) = coordenadas en el espacio de la textura del punto P d u = dT ( u,v ) /du (derivada de T respecto de u en ( u , v )) d v = dT ( u,v ) /dv (derivada de T respecto de v en ( u , v )) Q u = dF ( u,v ) /du (vector tangente a la superficie en P, respecto de u ) Q v = dF ( u,v ) /dv (vector tangente a la superficie en P , respecto de v ) F = función de parametrización de la superficie original
  • 62. 4.4.2. Detalles. Mapas de perturbación de la normal Ejemplo: Imágenes de Fredo Durand y Barb Curtler: http://groups.csail.mit.edu/graphics/classes/6.837
  • 63. 4.4.2. Detalles. Mapas de perturbación de la normal Ejemplo:
  • 64. 4.4.2. Detalles. Mapas de perturbación de la normal Aquí vemos un ejemplo de bump-mapping combinado con texturas e iluminación:
  • 65. 4.5. Sombras arrojadas. Índice. 4.1. Modelo general de reflexión local de luz y simplificaciones 4.2. Modelo de Iluminación Local (MIL) simplificado 4.3. Métodos de sombreado sencillos. 4.4. Detalles de las superficies 4.5. Sombras arrojadas 4.5.1. Polígonos de detalle 4.5.2. Algoritmo de Weiler-Atherton-Greenberg 4.5.3. Algoritmo de Z-Buffer 4.6. Superficies transparentes. 4.7. Superficies especulares 4.8. Ray-tracing
  • 66.
  • 67.
  • 68.
  • 69.
  • 70. 4.5.3. Sombras arrojadas. Z-buffer También se puede usar el Z-buffer, para sombras y para EPO observador (Z-buffer B) fuente de luz Z-buffer A p q
  • 71.
  • 72. 4.5.4. Sombras arrojadas. Z-Buffer Ejemplo:
  • 73. 4.5.4. Sombras arrojadas. Z-Buffer Se soluciona aumentando la resolución del Z-buffer de la fuente de luz (aunque hay otros algoritmos) Este algoritmo puede dar problemas para objetos muy lejanos a la fuente de luz (las sombras aparecen escalonadas). http://www.devmaster.net/ articles/shadow_techniques/
  • 74. 4.5.4. Sombras arrojadas. Z-Buffer Este algoritmo puede usarse para “proyectar” texturas sobre los objetos http://developer.nvidia.com/object/cedec_shadowmap.html
  • 75. 4.6. Superficies transparentes. Índice. 4.1. Modelo general de reflexión local de luz y simplificaciones 4.2. Modelo de Iluminación Local (MIL) simplificado 4.3. Métodos de sombreado sencillos. 4.4. Detalles de las superficies 4.5. Sombras arrojadas. 4.6. Superficies transparentes. 4.6.1. Refracción 4.6.2. Método simple. 4.6.3. Semitransparencia. 4.7. Superficies especulares 4.8. Ray-tracing
  • 76.
  • 77.
  • 78. 4.6.1. Superficies transparentes. Refracción. T = sen (  t ) M - cos (  t ) N donde: I = dirección de luz incidente (norm.) N = normal a la superficie M = N  ( N  I ) cos (  i ) = I•N sen (  i ) =  ( 1 - cos 2 (  i )) sen (  t ) = sen (  i ) n i / n t cos (  t ) =  ( 1 - sen 2 (  t )) T M N -N I  i  t n i n t n t sen (  t ) = n i sen (  i ) La luz incidente en la dirección I se refracta en la dirección T
  • 79.
  • 80.
  • 81.
  • 82. 4.6.3. Superficies transparentes. Semitransparencia. Ejemplo: http://developer.nvidia.com/object/order_independent_transparency.html
  • 83. 4.7. Superficies especulares. Índice. 4.1. Modelo general de reflexión local de luz y simplificaciones. 4.2. Modelo de Iluminación Local (MIL) simplificado. 4.3. Métodos de sombreado sencillos. 4.4. Detalles de las superficies. 4.5. Sombras arrojadas. 4.6. Superficies transparentes. 4.7. Superficies especulares 4.7.1. Mapas de entorno 4.7.2. Duplicación 4.8. Ray-tracing
  • 84.
  • 85.
  • 86. 4.7.1. Superficies especulares. Mapas de entorno. Ejemplo de mapas de entorno: Imágenes de Fredo Durand y Barb Curtler: http://groups.csail.mit.edu/graphics/classes/6.837
  • 87. 4.7.1. Superficies especulares. Mapas de entorno. Ejemplo de mapas de entorno:
  • 88. 4.7.1. Superficies especulares. Mapas de entorno. Ejemplo de mapas de entorno (más texturas y bump-mapping) http://developer.nvidia.com/object/reflective_bump_mapping.html
  • 89.
  • 90. 4.7.2. Superficies especulares. Duplicación. Ejemplo: (combinado con sombras arrojadas, y texturas) http://www.opengl.org/resources/code/samples/mjktips/TexShadowReflectLight.html
  • 91. 4.8. Ray-Tracing. Índice. 4.1. Modelo general de reflexión local de luz y simplificaciones 4.2. Modelo de Iluminación Local (MIL) simplificado 4.3. Métodos de sombreado sencillos. 4.4. Detalles de las superficies 4.6. Superficies transparentes. 4.7. Superficies especulares 4.8. Ray-tracing 4.8.1. Algoritmo básico. 4.8.2. Sombras arrojadas 4.8.3. Mapas de texturas. 4.8.4. Superficies especulares y transparentes. 4.8.5. Análisis. 4.8.6. Ejemplos 4.8.7. Extensiones.
  • 92.
  • 93.
  • 94. 4.8.1. Ray-Tracing. Algoritmo básico Una vez que se conoce el punto, se puede calcular el vector normal al objeto en dicho punto. Con todo esto podemos evaluar el modelo de iluminación local, y asignar color al pixel. N P V R L plano de visión fuente de luz Con esto podemos incluir objetos curvos (esferas, cilindros, conos, etc..)
  • 95.
  • 96.
  • 97.
  • 98. 4.8.4. Ray-Tracing. Esquema del algoritmo. El esquema del algoritmo es como sigue: Sea O = posición del observador, en CM (coords. del mundo) Para cada pixel ( i , j ) de la imagen Sea Q = punto central (en CM) del pixel ( i , j ) en el plano de visión Sea W = vector desde O hasta Q normalizado Sea I = RayTracing ( O, W , 1 ) Fijar pixel ( i,j ) con el color I La función RayTracing es recursiva, devuelve un color, y tiene un parámetro que sirve para que la recursión no se haga infinita.
  • 99. 4.8.4. Ray-Tracing. Esquema del algoritmo. La funcion RayTracing tiene el siguiente esquema Funcion Ray-Tracing( punto O , vector W , entero n ) Si n > maximo devolver color negro Sea A = primer objeto visible desde O en la dirección W Si no existe ningún objeto devolver color de fondo Sea P = punto de A alcanzado por el rayo ( P=O+dW ) Sea N = vector normal a A en P Sea ( u,v ) = coordenadas de P en el espacio de la textura de A Hacer I = EvaluaMIL ( A, P, N, u,v,n ) Devolver I
  • 100. 4.8.4. Ray-Tracing. Esquema del algoritmo. Función EvaluaMIL ( objeto A , punto P , vectores N, W , reales u,v , entero n ) Para cada fuente de luz puntual con posición C i Hacer S i = V ( P, C i ) Sea V = -W Obtener todos los atributos del objeto A en P ( k a k d k s k t k ps O dR O dG ..etc....) Sea I = resultado de evaluar el MIL (según fórmula de la página 65) Si k t > 0 Sea T = vector refractado respecto de V , siendo la normal N Hacer I = I + k t * RayTracing ( P, T, n+1 ) Si k ps > 0 Sea R = vector reflejado respecto de V , siendo la normal N Hacer I = I + k ps * RayTracing ( P, R, n+1 ) devolver I
  • 101.
  • 102. 4.8.6. Ray-Tracing. Ejemplos. Aquí vemos un ejemplo con superficies especulares y bump-mapping
  • 103. 4.8.6. Ray-Tracing. Ejemplos. Aquí vemos un ejemplo con superficies transparentes, y/o especulares y texturas
  • 104.