SombrasSombras Visualización Computacional 2. Horarios (again…) LUNES 26/10: Aula 2 Facultad (19...

Post on 02-Feb-2016

220 views 2 download

Transcript of SombrasSombras Visualización Computacional 2. Horarios (again…) LUNES 26/10: Aula 2 Facultad (19...

SombrasSombrasSombrasSombrasVisualización Computacional 2

Horarios (again…)Horarios (again…)

LUNES 26/10: Aula 2  Facultad (19 hs.): Introducción

MARTES 27/10: Aula 2  Facultad  (19 hs.): Texturas

MIERCOLES 28/10: Aula 2  Facultad  (19 hs.): Técnicas de iluminación avanzadas

JUEVES 29/10: Aula 2 Facultad (19 hs.): Sombras VIERNES 30/10: Aula 2 Facultad (19 hs.): Optimización

LUNES 2/11: Aula 1 Facultad (18 hs.): Animación – Comportamiento Físico

Half Life 2 - Valve Software

Sombras - Sombras - ResumenResumen

Introducción

¿Por qué usar sombras?

Técnicas

Fake Shadows

Planar Shadows

Projective Textures

Shadow Mapping

Soft Shadows & Hard Shadows

Shadow Volumes

Conclusiones

Sombras - Sombras - IntroducciónIntroducción

Nluces

psdpiaa vrKlnKISIKI

i

0

)()(

Si=

0: Si la luz es bloqueada en este punto

1: Si la luz no es bloqueada en este punto

Notar que las áreas que se encuentran en sombra(no influenciadas por ninguna luz) son iluminadas por la luz ambiental

l n

r

v

Sombras - Sombras - IntroducciónIntroducción

Sombra compuesta de dos regiones:

Umbra

Penumbra

Umbra es la región sólida

Luz completamente bloqueada

Penumbra es la zona de transición

Luz bloqueada parcialmente

No ocurre con luces puntuales

Sombras - Sombras - IntroducciónIntroducción

Hard ShadowsSoft ShadowsHasenfratz et al. / Real-time Soft Shadows

Sombras - Sombras - IntroducciónIntroducción

Un punto está en sombras si no es “visto” desde la posición de la luz.

Los algoritmos de evaluación de sombra son similares a los algoritmos de determinación de vista.

Cuando existen múltiples luces debo clasificar los polígonos para cada una.

Igualmente, existen aproximaciones sin hacer testeo de visibilidad.

Sombras - Sombras - ¿Por qué usar sombras?¿Por qué usar sombras?

Ocultan defectos.

Uso en condiciones climáticas y efectos especiales.

Incrementan notablemente el realismo.

Brindan información adicional de la escena.

Sombras - Sombras - ¿Por qué usar sombras?¿Por qué usar sombras?

Sombras - Sombras - ¿Por qué usar sombras?¿Por qué usar sombras?

Posición y tamaño relativos a la escena

Sombras - Sombras - ¿Por qué usar sombras?¿Por qué usar sombras?

Información adicional del entorno

Sombras - Sombras - ¿Por qué usar sombras?¿Por qué usar sombras?

Información adicional del modelo

Sombras - Sombras - Fake ShadowsFake Shadows

La forma más simple de crear una sombra: agregar un polígono debajo del objeto.

Sombras - Sombras - Fake ShadowsFake Shadows

Ventajas:

Extremadamente simple.

Desventajas:

Técnica muy limitada.

El piso debe ser plano.

El objeto debe estar a cierta altura del piso.

Sólo puede rotar en el eje Y.

No es verdadera en cuanto a la forma del objeto.

No es verdadera en cuanto a la dirección de la luz.

No hará sombra más que en el piso.

Complejidad: Constante

Sombras - Sombras - Fake ShadowsFake Shadows

Pequeña mejora: usar escala negativa (misma idea que los fake de reflejo).

La ventaja es que la sombra ahora tiene la forma del objeto.

Uso de stencil buffer para cortar la proyección.

Complejidad: Cant. Objetos

glPushMatrix(); glScalef(1.0, -1.0, 1.0); drawDinosaur(); glPopMatrix();

drawFloor();drawDinosaur();

Stencil BufferStencil Buffer

Marcar los píxeles en una pasada de rendering para controlar actualizaciones en futuras pasadas.

"For pixels en el frame buffer" →"For pixels marcados en el frame buffer"

Se pueden especificar distintas operaciones:

stencil test falla

stencil test pasa & depth test falla

stencil test pasa & depth test pasa

frame buffer

depth buffer

stencil buffer

Sombras - Sombras - Planar ShadowsPlanar Shadows

Dibujar la geometría real y la geometría proyectada sobre los planos donde habrá sombra.

Sombras - Sombras - Planar ShadowsPlanar Shadows

Dibujar planos();For todos los planosbegin aplicar transformacion de proyección; deshabilitar DEPTH_TEST; deshabilitar colores; dibujar Objeto 3d proyectado;End;Dibujar Objeto 3D();

Sombras - Sombras - Planar ShadowsPlanar Shadows

Sombras - Sombras - Planar ShadowsPlanar Shadows

Ventajas:Proyección sobre distintos planos.La sombra refleja la situación de acuerdo a la rotación del objeto.La sombra cambia de acuerdo a la posición de la luz

Desventajas:Tengo que dibujar el objeto tantas veces como planos.Los objetos no proyectan sombra ni sobre sí mismos ni sobre otros objetos.No es posible proyectar sombras en superficies curvas.

Complejidad: Cant. Objetos * Cant. Planos

Sombras - Sombras - Projective ShadowsProjective Shadows

Surge como mejora a Planar Shadows: renderizar el objeto a una textura (o tenerla precalculada) y proyectar la textura.

Render desde L Textura B/N Render Final

Sombras - Sombras - Projective ShadowsProjective Shadows

Ventajas:

Las mismas que Planar Shadows.

No se renderiza el objeto una vez por cada plano.

Desventajas:

Las mismas que Planar Shadows.

Resolución.

Se debe especificar occluder y receiver

Limitación por la cantidad de unidades de texturas.

Complejidad: MAX (Cant. Objetos, Cant. Planos)

Sombras - Sombras - Shadow MappingShadow Mapping

Utilización de textura con información de Z-Buffer.

Dos pasadas:

Calcular shadow map (renderizar desde el punto de la luz).

Renderizar la escena chequeando si los puntos están o no en sombra.

Foley et al. “Computer Graphics Principles and Practice”

Sombras - Sombras - Shadow MappingShadow Mapping

Tenemos el punto 3D (x,y,z)WS. ¿Cómo obtenemos su valor del Shadow Map?

Rta: Se aplica al punto la matriz de proyección usada en la imagen generada desde el punto de vista de la luz.

Foley et al. “Computer Graphics Principles and Practice”

(x,y,z)WS

(x',y',zL)

Obtenemos (x’,y’,z’)LS

zL:=ShadowMap(x’,y’);Si zL<z’ entonces

punto en sombra Sino

punto en luz

(x',y',z') LS

Sombras - Sombras - Shadow MappingShadow Mapping

Ventajas:Los objetos proyectan sombra sobre sí mismos y sobre otros objetos.La técnica más rápida y directa.No se necesita conocimiento previo de la escena.Independiente del punto de vista.

Desventajas:No sirve para luces omni-direccionales.Field of View.Dependencia de precisión del Z-Buffer.Aliasing del Shadow Map.Consumo de recursos (render target switch y uso de texturas)

Complejidad: Cant. Objetos

Sombras - Sombras - Soft ShadowsSoft Shadows

Diversas técnicas de soft shadows pero alejadas de un frame rate aceptable.

Nuevas técnicas orientadas hacia procesamiento de imágenes sobre el Shadow Map.

Se intenta mejorar el aliasing y la calidad en técnicas como Shadow Mapping.

Sombras - Sombras - Soft ShadowsSoft Shadows

Pasos:

1. Generar el shadow map.

2. Guardar a un buffer de textura las partes de la escena que están en sombras después del algoritmo de comparación.

3. Realizar procesamiento de Blur o Soften a la imagen guardada en el paso 2.

4. Proyectar la textura procesada en el espacio de coordenadas de la escena en la pantalla.

Map Shadow OriginalMap Shadow Original

Sombras - Sombras - Soft ShadowsSoft Shadows

Map Shadow Blur: Map Shadow Blur: 1 pasada1 pasada

Map Shadow Blur: Map Shadow Blur: 2 pasadas2 pasadas

Sombras - Sombras - Shadow VolumesShadow Volumes

El cable proyecta sombra sobre el personaje.

El personaje proyecta sombra sobre el piso.

Sombras - Sombras - Shadow VolumesShadow Volumes

Representar explícitamente el volumen de la sombra en el espacio.

Para cada polígono se construye una pirámide con la luz como vértice más alto.

Se incluye un polígono para cortar el volumen.

El test queda parecido a un test de clipping.

Sombras - Sombras - Shadow VolumesShadow Volumes

“Abducted” Contraband Entertainment

Sombras - Sombras - Shadow VolumesShadow Volumes

Geometría Visible

Geometría Shadow Volume

Escena compleja con sombras

“Abducted”, Contraband Entertainment

Sombras - Sombras - Shadow VolumesShadow Volumes

Geometría Visible

Geometría Shadow Volume

Escena con múltiples fuentes de luz

“Abducted” Contraband Entertainment

Sombras - Sombras - Shadow VolumesShadow Volumes

Si un punto está dentro del volumen generado a partir de una luz Li ese punto no recibe contribución de esa luz.

Costo ~ #polys * #luces

Sombras - Sombras - Shadow VolumesShadow Volumes

Tirar un rayo desde el punto de vista al punto.

Incrementar/decrementar un contador cada vez que se intersecta un polígono del shadow volume (usando z buffer)

Si el contador es <> 0 el punto está en sombra.

+1-1

+1

Sombras - Sombras - Shadow VolumesShadow Volumes

Determinar la silueta del objeto que proyectará sombra.

Extruír la silueta desde el punto de vista de la luz para construir el Shadow Volume.

Algoritmo de conteo Zpass o Zfail.

Sombras - Sombras - Shadow VolumesShadow Volumes

Silueta del Objeto generador (Ocludder)

Luz

Shadowvolume

(extensión infinita)

Un shadow volume es un volumen definido por la luz y la silueta del objeto generador de sombra.

Sombras - Sombras - Shadow VolumesShadow Volumes ((ZpassZpass Caso 1) Caso 1)

Ocludder Luz

Espectador

Objeto fuera de

la sombra

+ ---+ +

Contador Shadow Volume = +1+1+1-1-1-1 = 0

Sombras - Sombras - Shadow VolumesShadow Volumes ((ZpassZpass Caso 2) Caso 2)

Ocludder Luz

Espectador Objeto en sombra

+ -+ +

Contador Shadow Volume = +1+1+1-1 = 2

Sombras - Sombras - Shadow VolumesShadow Volumes ((ZpassZpass Caso 3) Caso 3)

Occluder Luz

Espectador Objeto fuera de

la sombra

Contador Shadow Volume = 0 (ninguna pasada zPass)

Sombras - Sombras - Shadow Volumes (Problema zNear)Shadow Volumes (Problema zNear)

zNear Clip Plane

zFar Clip Plane Perdemos esta intersección (problemas en el conteo)

View Frustum

Sombras - Sombras - Shadow VolumesShadow Volumes (Error (Error ZpassZpass))

Ocludder Luz

Objeto en sombra

-+

Contador Shadow Volume = +1-1 = 0

Espectador

Sombras - Sombras - Shadow VolumesShadow Volumes (Error (Error ZpassZpass))

Tres posibles soluciones:

Reacomodar los contadores de acuerdo a los volúmenes y la posición de la vista.

Clipping de los shadow volumes al View Frustum.

Usar Z-Fail.

SombrasSombras - - Shadow Volumes (Solución Shadow Volumes (Solución Reacomodar contadoresReacomodar contadores))

Ajustar el valor inicial del contador.

MUY COSTOSO

0+1

0

+1

SombrasSombras - - Shadow Volumes (Solución Shadow Volumes (Solución Clipping Clipping de SVde SV))

Hacer clipping de los shadow volumes con el frustum de vista e incluir estos polígonos en el conteo.

Difícil reconstrucción

Sombras - Sombras - Shadow VolumesShadow Volumes (Solución (Solución ZFailZFail))

Ocludder Luz

Objeto en sombra

Contador Shadow Volume = +1+1 = 2

Espectador

++

Sombras - Sombras - Shadow VolumesShadow Volumes ((ZfailZfail))

Ocludder Luz

Espectador

Objeto fuera de la sombra

Contador Shadow Volume = 0 (ninguna pasada zFail)

Sombras - Sombras - Shadow VolumesShadow Volumes ((ZfailZfail))

Ocludder Luz

Espectador

Objeto fuera de la sombra

Contador Shadow Volume = -1-1-1+1+1+1 = 0

- +- - + +

Sombras - Sombras - Shadow VolumesShadow Volumes

Ventajas:

La proyección de sombras sobre sí mismos en los objetos es automática.

Pocos problemas de aliasing y resolución.

Sirve para luces omni-direccionales.

Desventajas:

Imposible hacer soft shadows.

Consume fillrate.

Se necesita calcular la silueta (costo CPU).

Complejidad: Cant. Objetos*2 (si no tenemos doble stencil)

Sombras - Sombras - Zpass y ZFailZpass y ZFail

Zpass Ventajas:

No requiere Volumes con bordes.

Más eficiente (Oclussion Culling).

Zfail Ventajas:

No tiene problemas con plano zNear.

No tiene problemas con posición de espectador.

Nota:Juegos tipo Diablo: ZpassJuegos tipo Doom3: Zfail

Sombras - Sombras - Shadow VolumesShadow Volumes

La sombra de la reja aparece en el camión y el piso utilizando Shadow Maps.

Sería imposible utilizar Shadow Volumes con la reja!

“Fuel” Firetoad Software

Sombras - ConclusionesSombras - Conclusiones

La mayoría son algoritmos costosos.

Requieren conocimientos de procesamiento de imágenes y de geometría no triviales.

No existe la técnica “perfecta”.

La mejor decisión es la combinación de técnicas de acuerdo al tipo de escena.