• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
VR - capítulo 4.
 

VR - capítulo 4.

on

  • 1,056 views

 

Statistics

Views

Total Views
1,056
Views on SlideShare
1,056
Embed Views
0

Actions

Likes
1
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    VR - capítulo 4. VR - capítulo 4. Presentation Transcript

    • 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
      • El color en un pixel determinado depende de las radiancias (colores) de los objetos que se proyectan en un pixel dado (ver páginas 8-9, así como la definición de radiancia en la transparencia 94).
      • Las suposiciones que se hicieron en la transparencia 10 se mantienen, excepto la última : ahora tendremos en cuenta las variaciones de color (sombreado) que se produce como efecto de la reflexión de la luz con distinta intensidad en distintos puntos de la superficie de cada objeto.
    • 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
      • Dicha radiancia media es difícil de calcular
      • Por simplicidad, se usa únicamente la radiancia que pasa por el punto central del pixel, y se asigna a todo el pixel.
      • Los errores que se introducen son aceptables (no visibles) si los pixels son suficientemente pequeños.
    • 4.1. Modelo general de reflexión y simplificaciones
      • La radiancia L ( x,w ) que abandona x en la dirección w es la suma de:
      • Radiancia emitida desde ese punto en esa dirección: L e ( x,w )
      • Radiancia reflejada desde ese punto en esa dirección: L r ( x,w )
      • L ( x,w ) = L e ( x,w ) + L r ( x,w )
      • Téngase en cuenta que L e ( x,w ) es 0 cuando x no está en la superficie de una fuente de luz, y estrictamente mayor que 0 cuando si lo está.
      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
      • El valor L e ( x,w ) es un dato de entrada conocido a priori.
      • El valor L r ( x,w ) debe de ser calculado
    • 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
      • El calculo de la radiancia entrante en una dirección es, por tanto muy complicado (la ecuación que la define es recursiva).
      • Las técnicas de sombreado sencillas se basan en evitar ese cálculo complejo, para ello se hacen determinadas simplificaciones.
    • 4.1. Modelo general de reflexión y simplificaciones
      • Las simplificaciones que se harán son las siguientes:
      • Todas las fuentes de luz son puntuales.
      • No se tiene en cuenta la luz indirecta proveniente de otros objetos
      • No se tienen en cuenta las sombras arrojadas (todas las fuentes de luz son visibles desde todos los puntos).
      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
      • Con las simplificaciones anteriores, es más fácil calcular la radiancia.
      • A continuación veremos una serie de expresiones que sirven para dicho cálculo, a estas expresiones se les llama Modelos de Iluminación Local ( Local Illumination Models )
      • Son modelos matemáticos simplificados sobre como se refleja la luz localmente en un punto de una superficie.
      • La intensidad de luz (radiancia) desde un punto x hacia el observador se nota con la letra I (en realidad es un color RGB , I = ( I R , I G , I B ) )
      • Gracias a las simplificaciones, el valor de I tan solo va a depender de:
        • La posición relativa del observador o respecto a x
        • El color (y otros atributos) de la superficie en el punto x
        • El color, intensidad y posición de las fuentes de luz de la escena
      • Después de aplicar EPO, podemos usar un MIL para sombrear una imagen.
    • 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
      • Hemos ignorado la luz reflejada que procede de otros objetos, por tanto, donde no de la luz directamente se verán objetos negros.
      • Para evitar esto se asume que todos los puntos están iluminados con una luz ambiente.
      • Esta luz ambiente ilumina todos los objetos por igual, con intensidad I a
      • Cada objeto reflejará una parte de esa luz ambiente. La fracción de luz reflejada por el objeto donde está x es k a (es un valor real entre 0 y 1).
      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.
      • Si solo usásemos el modelo anterior, todos los objetos serían de un color plano. A la componente anterior se le añade la componente difusa.
      • Esta componente trata de modelar como la luz se refleja en los objetos mates (no brillantes), que presentan el mismo color desde todas las direcciones en las que se miren.
      • La intensidad de la luz reflejada depende del ángulo de incidencia.
      a a  > 0 90 0 s = a / cos (  ) s = a
    • 4.2.1. MIL Simple. Componente difusa.
      • La energia total del haz es igual a la intensidad de la fuente de luz (que llamaremos I p ), multiplicada por a
      • La energía incidente, por unidad de área, es proporcional a la energía anterior dividida por el área de la superficie receptora ( s ), esto es:
      • I p a / s = I p cos (  )
      • Si la superficie es mate (difusa), la intensidad reflejada no depende de la dirección de salida, y es proporcional al valor anterior:
      • I = k d I p cos (  )
      • donde k d es un numero real (entre 0 y 1), que indica la fracción de luz reflejada por el objeto de forma difusa.
    • 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.
      • Podemos combinar la componente ambiental con la difusa, para crear un modelo más completo:
      • I = k a I a + k d f att I p ( N · L )
      • Hasta ahora hemos considerado un valor escalar de la intensidad, pero podemos tener en cuenta un modelo de color (el RGB, por ejemplo).
      • El objeto donde esta x tendrá un color RGB ( O dR ,O dG , O dB ) , donde cada componente es un valor entre 0 y 1.
      • La intensidad resultante (en rojos, por ejemplo) será:
      • I R = k a O dR I aR + k d O dR f att I pR ( N · L )
      • Cada objeto viene determinado por un conjunto de atributos:
      • k a , k d , O dR , O dG , , O dB
    • 4.2. MIL Simple. Aquí k a crece hacia la derecha y k d hacia abajo
    • 4.2.4. MIL Simple. Componente pseudo-especular
      • Hasta ahora no hemos tenido en cuenta la posición del observador.
      • Para objetos brillantes es necesario tenerla en cuenta, ya que los brillos cambian en función de la dirección en la cual miremos el punto x
      • Esto da lugar al modelo de Phong (por Bui T.Phong, que lo ideó a mediados de los 70).
      • En una superficie pulida o brillante la luz no se refleja igual en todas las direcciones.
      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
      • Como N está en la bisectriz de L y R , entonces el vector L+R tiene la misma dirección (aunque distinto módulo), que N .
      • Por lo anterior: L+R = k N
      • La proyección de L sobre N es igual a ( L·N ) N
      • La proyección de L sobre N es también igual a k/ 2 N
      • Por tanto k = 2 ( L·N ) , y así tenemos que L+R = 2 ( L·N ) N , luego:
      • R = 2 ( L·N ) N - L
      R L N k/2 N k N
    • 4.2.4. MIL Simple. Componente pseudo-especular x N V O L R a
      • La intensidad de la luz reflejada decrece cuando el ángulo entre R y V crece
      • La velocidad a la que decrece es proporcional al brillo n
      • El vector V es el vector unitario entre x y el observador O
      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
      • El valor cos (  ) varia desde 1 cuando  = 0 (es decir, R=V ) hasta 0 cuando  es mayor o igual que 90 0
      • El valor k s es un valor real entre 0 y 1 , es la fracción de luz reflejada
      • El valor n es real, superior o igual a 1
      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
      • Existe un modelo alternativo, que usa el vector H ( halfway vector )
      • El vector H es la bisectriz entre V y L ( esto es, H = ( V+L ) / |V+L| )
      • La intensidad decae con el ángulo entre N y H
      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
      • En todos estos modelos también se puede incorporar la atenuación atmosférica
      • Se intenta modelar el cambio de la intensidad de la luz (atenuación) al viajar largas distancias por la atmósfera, u otro medio gaseoso, debido a la dispersión de los fotones ( in-scattering y out-scattering )
      • Al incorporar este efecto, se percibe mejor la distancia a los objetos.
      x y
      • El color que alcanza y es una mezcla del que sale de x ( I R ) con otro, establecido por el usuario ( I dcR )
      • El color I dcR se introduce en una cantidad que crece con la distancia a x
      x y
    • 4.2.5. MIL Simple. Atenuación atmosférica
      • En inglés, a esta atenuación se le llama depth-cue
      • La intensidad después de la atenuación I’ R se obtiene como:
      • I’ R = f ( d ) I R + [ 1 – f ( d ) ] I dcR
      • donde
      • f es una función de la distancia d entre el emisor x y el receptor y ,
      • f es decreciente con la distancia
      • para distancias pequeñas, interviene más I R en la mezcla
      • para distancias largas, interviene más I dcR en la mezcla
      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
      • Una vez que sabemos como calcular la intensidad I de un punto, podemos usar estos modelos para sintetizar imágenes.
      • Pasaremos a ver varias formas de asignar una intensidad a cada punto.
      • En principio, una vez realizada la EPO, se pueden procesar cada pixel, obtener toda la información necesaria, y evaluar el modelo de iluminación local.
      • Los problemas que presenta lo anterior son:
        • Es necesario guardar mucha información asociada a la imagen, por tanto se necesita mucha memoria.
        • El método es lento: evalúa el modelo en cada pixel, y no permitiría una visualización interactiva
      • Para solucionar esto, se plantean varios métodos aproximados y eficientes (rápidos), que permiten tiempos muy cortos de síntesis.
    • 4.3.1. Sombreado. Sombreado Plano.
      • En lo que sigue, vamos a suponer modelos formados por caras planas (el valor de N es constante en cada cara).
      • Lo más rápido es calcular una iluminación constante en cada cara
      • El color obtenido se asigna a todos los pixels ocupados por la cara.
      • Se asume que la fuente de luz y el observador están en el infinito (los valores de L y V son constantes en todo el polígono)
      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)
      • Para solucionar todos los problemas anteriores se puede realizar una interpolación lineal de las intensidades calculadas en los vértices.
      • Este método se llama interpolación de Gouroud.
      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
      • El valor de I a va desde I 2 hasta I 1 cuando y va desde x 2 hasta x 1
      • El valor de I b va desde I 2 hasta I 3 cuando y va desde x 2 hasta x 3
      • El valor de I va desde I a hasta I b cuando x va desde x a hasta x b
    • 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)
      • Al rellenar un polígono usando Gouroud, se usan métodos para interpolar las intensidades semejantes a la interpolación de las Z en el Z-buffer.
      • El esquema del algoritmo será como sigue:
      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)
      • Sea L = lista de intersecciones, inicialmente vacía
      • Para cada arista no horizontal de T
      • Sean ( x i y i ) e ( x j y j ) los extremos de la arista, con y i < y j
      • Sea y min = menor entero mayor o igual que y i
      • Sea y max = menor entero mayor o igual que y j
      • Sea  x = ( x j - x i ) / ( y j - y i )
      • Sea x = x i +  x * ( y min - y i )
      • Sea y = y min
      • Mientras que y < y max
        • Introducir en L una nueva intersección en ( x,y )
        • Hacer y = y+ 1 , x = x+  x
      • devolver L
      función CreaListaInter ( Triángulo T )
    • 4.3.2. Sombreado. Interpolación de intensidades (Gouroud)
      • Sea  I = incremento de la intensidad entre pixels adyacentes de T
      • Si L no está vacía, entonces
      • Para cada línea de barrido ocupada por T
        • Extraer de L las intersecciones con la línea, sean estas ( x a y ) y ( x b y ), con x a < x b
        • Sea x min = menor entero mayor o igual que x a
        • Sea x max = menor entero mayor o igual que x b
        • Sea x = x min
        • Sea ( I R ,I G , I B ) = ( f R ( x,y ) , f G ( x,y ) , f B ( x,y ) )
        • Sea (  I R ,  I G ,  I B ) = ( e R , e G , e B )
        • Mientras que x < x max
          • Dibujar pixel ( x,y ) con la intensidad ( I R ,I G , I B )
          • hacer x = x + 1
          • hacer ( I R ,I G , I B ) = ( I R ,I G , I B ) + (  I R ,  I G ,  I B )
      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)
      • El método de Gouroud es bastante rápido.
      • Es sencillo de implementar.
      • Es fácil añadirlo a algoritmos EPO, como Z-Buffer o Scan-line .
      • Puede ser implementado directamente en Hardware.
      • Para polígonos de más de tres lados puede haber discontinuadades
    • 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)
      • En problema anterior también se puede resolver en parte si se evalúa el modelo de iluminación en cada pixel ocupado por el triángulo.
      • Para realizar lo anterior debemos saber la normal en cada punto
      • Si se utiliza la normal al polígono (que es constante), entonces el sombreado será erróneamente plano en muchas ocasiones.
      • Una solución es realizar una interpolación lineal de las normales,.
      • Lo anterior se llama interpolación de Phong
      N a N b N 1 N 2 N 3
    • 4.3.3. Sombreado. Interpolación de normales (Phong)
      • El algoritmo es sencillo, y se ha implementado también en Hardware
      • La calidad obtenida es mucho mayor que con el modelo de Gouroud
      • La implementación del algoritmo es similar a la de Gouroud, pero sustituyendo la interpolación de I (con componentes R , G y B ) por la interpolación de N (con componentes X , Y , Z )
      • En cada pixel visible es necesario:
        • Normalizar el vector interpolado (no tiene longitud unidad)
        • Evaluar el Modelo de Iluminación
        • Asignar un color al pixel.
      • El tiempo de cálculo es mayor que la interpolación de Gouroud
    • 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:
      • Silueta poligonal: Los objetos tienen una silueta formada por segmentos de recta
      • Distorsión perspectiva: La interpolación lineal no es coherente con la transformación perspectiva, que no es lineal
      • Dependencia de la orientación: Las intensidades asociadas a los pixels no giran coherentemente con un giro del polígono (si num. vert. > 3)
      • Problemas en los vértices adyacentes pero no compartidos . Se introducen discontinuidades si un vértice de un polígono esta sobre una arista de otro polígono adyacente al cual no pertenece.
      • Normales en los vértices no representativas La orientación de las normales en los vértices no representa bien a las normales en los puntos interiores.
    • 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.
      • Las superficies normalmente presentan detalles a pequeña escala:
        • Cambios de color
        • Cambios en las propiedades reflectivas
        • Rugosidades (cambios en la posición y orientación de la superficie)
      • Para reproducir estos detalles se pueden usar muchos polígonos muy pequeños, pero entonces los tiempos de cálculo se hacen muy grandes.
      • Existen varias técnicas para solventar este problema:
        • Polígonos de detalle
        • Mapas de texturas
        • Mapas de perturbación de la normal.
    • 4.4.1. Detalles. Polígonos de detalle.
      • Los polígonos de detalle son polígonos pequeños asociados a los originales de la escena, pero con propiedades distintas.
      • Cada polígono original puede tener asociados polígonos de detalle.
      • La EPO se realiza con los polígonos originales.
      • El sombreado tiene en cuenta los atributos de los polígonos de detalle, donde los hubiese.
    • 4.4.2. Detalles. Texturas.
      • Los polígonos de detalle requieren mucho espacio en memoria, e incrementan los tiempos de cálculo.
      • Para solucionar esto se pueden usar texturas
      • Una textura T es una función cuyo dominio es un rectángulo plano D , y cuyo rango es el conjunto de valores de algún atributo del objeto
      • Dicho rango es típicamente el color ( O dR O dg O db ), pero otros también puede haber otros, como los coeficientes k a k d o k s .
      • Debe existir una correspondencia f entre los puntos de D (pares de la forma ( u,v ) ) y los puntos de la superficie del objeto
      • Si un punto ( x,y,z ) está en la superficie del objeto, entonces existe un punto ( u,v ) en D tal que ( x,y,z )= f ( u,v )
      • Por lo tanto tenemos que ( O dR O dG O dB )= T ( u,v ) donde ( O dR O dG O dB ) es el color del punto ( x,y,z ) ( en este caso T es una textura de color)
      • La evaluación de T ( u,v ) puede hacerse con un algoritmo, o consultando una tabla (o una imagen formada por texels ) almacenada en memoria.
    • 4.4.2. Detalles. Texturas.
      • Cada pixel en pantalla se corresponde con un región de la superficie
      • Cada región de la superficie se corresponde con una región del dominio de la textura D.
      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.
      • En cálculo de los texels de la textura ocupados por el pixel en pantalla es muy complicado si los objetos son curvos.
      • Para evitar lo anterior, se supone que la superficie es plana, por lo cual la región ocupada por el pixel, en el dominio de la textura, es un polígono de cuatro lados, determinado por las posiciones de las cuatro esquinas.
      • Es necesario conocer todos los texels de la textura que ocupa dicho polígono.
      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
      • Para reproducir las rugosidades, se pueden usar los mapas de perturbación de la normal ( bump-maps )
      • Es una técnica que no modifica los puntos de la superficie, pero si las normales en dichos puntos.
      • Para evaluar el modelo de iluminación local, se usa la normal modificada, en lugar de la normal original.
      • Los brillos y sombras que se obtienen evocan bastante bien el aspecto de una superficie rugosa.
      • Para controlar las variaciones de las normales, se una una textura de grises asociada al objeto.
      • La altura de la superficie rugosa es proporcional, en cada punto, al nivel de luminosidad de la textura.
    • 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
      • Ninguna de las técnicas anteriores tiene en cuenta la existencia de sombras arrojadas.
      • Se supone que todas las fuentes son visibles desde todos los puntos de la superficie, lo cual no siempre es cierto.
      • La fuente de luz, localizada en y , no ilumina todos los puntos de la escena.
      • La visibilidad de la fuente de luz está controlada por la función V
      • V ( x 1 , y ) = 1
      • V ( x 2 , y ) = 0
      • V ( x 3 , y ) = 1
      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:
      • Se ha introducido un factor ( S i ), que es igual a V ( x , y i ) , donde x es el punto a sombrear e y i es la posición de la i-ésima fuente de luz.
      • El problema de las sombras arrojadas está basado en la función V , y es por tanto equivalente al problema de la visibilidad.
      • El papel que antes jugaba el observador, ahora lo juega la fuente de luz: las partes iluminadas por la fuente son las partes visibles desde la fuente.
      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.
      • Supondremos escenas formadas por poliedros delimitados por caras planas.
      • El algoritmo más sencillo consiste en proyectar todos los polígonos contra todos, usando la fuente de luz como foco.
      • Las sombras (poligonales) se tratan como polígonos de detalle.
      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.
      • Otros algoritmos de sombras arrojadas (más eficientes) están basados en algoritmos EPO
      • Un ejemplo es el algoritmo de Weiler-Atherton-Greenberg (1978).
      • Usa el algoritmo de Weiler-Atherton para EPO, lo cual produce un modelo con polígonos iluminados asociados a los originales como detalles.
      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
      • En la primera pasada se calcula el Z-buffer A asociado a la fuente de luz (se proyectan los objetos contra la fuente)
      • La segunda pasada es semejante al Z-buffer normal, se calcula el Z-buffer B
      • Si un punto es visible al observador, se debe sombrear, y por tanto es necesario comprobar si es visible desde la fuente.
      • Por ejemplo, para el punto p , se consulta la entrada del Z-buffer A correspondiente al punto q en la figura anterior.
      • Si la distancia almacenada en esa entrada es inferior a la distancia de p al observador, entonces p no está iluminado (este es el caso de la figura), si es superior, si está iluminado.
    • 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.
      • Algunos objetos presentan aspecto transparente (no opaco).
      • En general, la luz que alcanza un objeto sólido puede:
        • Ser absorbida por el objeto
        • Ser reflejada en su superficie
        • Atravesar el objeto, refractandose al cambiar de medio
    • 4.6. Superficies transparentes
      • La fracción de luz refractada depende de la longitud de onda, por tanto la luz refractada cambia de color respecto de la original.
      • La fracción global de luz refractada es k t , que está entre 0 y 1
      • Además, en cada longitud de onda se refracta una fracción distinta. En el caso del modelo RGB, estas fracciones son O tR O tG O tB
      • por tanto:
        • I’ R = k t O tR I R
        • I’ G = k t O tG I G
        • I’ B = k t O tB I B
      ( 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.
      • Si suponemos que n i = n t , entonces no hay cambio de dirección debida a la refracción, y por tanto T = -I
      • Con esta simplificación, se puede adaptar el método de Z-Buffer para incluir polígonos transparentes.
      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.
      • En general, las superficies no son puramente transparentes, sino que pueden reflejar parte de la luz que les llega, y parte refractarla.
      • Por tanto, el color se debe en parte al modelo de iluminación de la página 26 , y en parte al modelo de la 70, sumados.
      • Lo anterior provoca que el orden de dibujado de las superficies transparentes influya en el resultado.
      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.
      • El algoritmo de la página 175 puede modificarse para tener en cuenta todo lo anterior
      • Las superficies transparentes deben de dibujarse en orden de profundidad
      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
      • Algunos objetos pulidos reflejan la luz de forma especular perfecta, como los espejos planos
      • El efecto anterior no puede reproducirse con ninguno de los métodos que hemos visto.
      • La componente especular perfecta es una componente más del modelo de iluminación local, que se suma a las anteriores (se suele dar en combinación con la refractada en los objetos de cristal).
      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.
      • Para reproducir la reflexión especular perfecta, de una forma aproximada pero eficiente en tiempo, se pueden usar los mapas de entorno
      • Estos mapas son texturas obtenidas proyectando el entorno en un cubo centrado en el objeto.
      • Las texturas se consultan para obtener el color reflejado.
      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.
      • Los mapas de entorno no funcionan bien para objetos especulares planos grandes (espejos)
      • En estos casos se puede proyectar la escena sobre el punto de vista simétrico, y usar la imagen como textura sobre el espejo.
      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.
      • Hemos vistos bastantes efectos:
        • Superficies difusas y especulares
        • Texturas y mapas de perturbacion de la normal
        • Sombras arrojadas
        • Superficies transparentes
        • Superficies especulares perfectas
      • Considerarlos todos lleva a software que es bastante complicado de implementar
      • Además los tiempos de sintesis de imágenes pueden hacerse bastante altos.
      • Existe un algoritmo no muy eficiente en tiempo, pero bastante sencillo, que tiene en cuenta todos los efectos anteriores
      • Este algoritmo es el algoritmo de Ray-Tracing (trazado de rayos)
      • Descrito completamente por primera vez por T.Whitted en 1979-80.
    • 4.8.1. Ray-Tracing. Algoritmo básico
      • Este algoritmo esta inspirado en la EPO por Ray-Casting.
      • Los pixels se procesan secuencialmente, y en cada uno se determina que punto de que objeto se proyecta en el centro del pixel.
      • Para ello se crea un rayo (un par formado por un punto y un vector) con origen en el observador y que pase por el centro de dicho pixel.
    • 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.
      • Es posible reproducir las sombras arrojadas :
        • Para cada fuente de luz se crea un rayo del punto a la posición de la fuente
        • Dicho rayo se intersecta con todos los objetos de la escena
        • Si algun objeto intersecta el segmento, dicha fuente no ilumina el punto.
      P L 2 plano de visión L 1
    • 4.8.2. Ray-Tracing. Mapas de texturas.
      • Los atributos del objeto en el punto P se pueden consultar en un
      • mapa de texturas asociado al mismo.
        • A partir de P se obtienen las coordenadas ( u,v ) en el espacio de la textura
        • A partir de ( u,v ) se consulta la textura o texturas asocadas al objeto.
        • Dichas texturas pueden incluir colores o mapas de perturbación de la normal
      Mapa de texturas u v
    • 4.8.3. Ray-Tracing. Superficies especulares
      • También es posible tener en cuenta superficies perfectamente especulares y/o perfectamente transparentes.
      • Esto se hace creando rayos secundarios , e invocando recursivamente al algoritmo.
      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
      • El algoritmo de Ray-Tracing expuesto es muy flexible
      • Produce resultados más realistas
      • El cuello de botella está en los test de intersección rayo-objeto
      • Lo anterior puede hacer al algoritmo bastante lento.
      • Para hacerlo más rápido se deben de usar técnicas de indexación espacial (descritas en el capítulo anterior sobre EPO)
      • Con estas técnicas, el algoritmo de RayTracing puede ser bastante eficiente, aunque difícilmente nos va permitir producir animaciones en tiempo real.
    • 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.
      • Existen bastantes extensiones al algoritmo de Ray-Tracing básico.
      • Fuentes de Luz Extensas : Radian la luz desde un área, en lugar de desde un único punto. Se pueden simular como un conjunto de luces puntuales. Estas fuentes dan lugar a bordes de sombras con gradaciones de grises.
      • Modelos de reflexión más avanzados
      • Uso de mapas de entorno en objetos especulares perfectos, para aceleración (evita rayos secundarios).
      • Uso de light-buffers para aceleración del test de sombras