1 Visualización Computacional 2Sombras Visualización Computacional 2
2 Horarios (again…) LUNES 26/10: Aula 2 Facultad (19 hs.): IntroducciónMARTES 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
3 Half Life 2 - Valve Software
4 Sombras - Resumen Introducción ¿Por qué usar sombras? TécnicasFake Shadows Planar Shadows Projective Textures Shadow Mapping Soft Shadows & Hard Shadows Shadow Volumes Conclusiones
5 Sombras - Introducción0: Si la luz es bloqueada en este punto Si= 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
6 Sombras - IntroducciónSombra 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
7 Sombras - IntroducciónSoft Shadows Hard Shadows Hasenfratz et al. / Real-time Soft Shadows
8 Sombras - IntroducciónUn 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.
9 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.
10 Sombras - ¿Por qué usar sombras?
11 Sombras - ¿Por qué usar sombras?Posición y tamaño relativos a la escena
12 Sombras - ¿Por qué usar sombras?Información adicional del entorno
13 Sombras - ¿Por qué usar sombras?Información adicional del modelo
14 Sombras - Fake Shadows La forma más simple de crear una sombra: agregar un polígono debajo del objeto.
15 Sombras - Fake Shadows Ventajas: Desventajas: Complejidad: ConstanteExtremadamente 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
16 Sombras - Fake 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();
17 Stencil Buffer frame bufferMarcar 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 depth buffer stencil buffer
18 Sombras - Planar ShadowsDibujar la geometría real y la geometría proyectada sobre los planos donde habrá sombra.
19 Sombras - Planar ShadowsDibujar planos(); For todos los planos begin aplicar transformacion de proyección; deshabilitar DEPTH_TEST; deshabilitar colores; dibujar Objeto 3d proyectado; End; Dibujar Objeto 3D();
20 Sombras - Planar Shadows
21 Sombras - Planar ShadowsVentajas: 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
22 Sombras - Projective ShadowsSurge 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
23 Sombras - Projective ShadowsVentajas: Las mismas que Planar Shadows. No se renderiza el objeto una vez por cada plano. Desventajas: Resolución. Se debe especificar occluder y receiver Limitación por la cantidad de unidades de texturas. Complejidad: MAX (Cant. Objetos, Cant. Planos)
24 Sombras - Shadow MappingUtilizació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”
25 Sombras - Shadow MappingTenemos 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. (x',y',zL) (x',y',z') LS (x,y,z)WS Obtenemos (x’,y’,z’)LS zL:=ShadowMap(x’,y’); Si zL
26 Sombras - Shadow MappingVentajas: 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
27 Sombras - Soft 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.
28 Sombras - Soft Shadows Pasos: Generar el shadow map.Guardar a un buffer de textura las partes de la escena que están en sombras después del algoritmo de comparación. Realizar procesamiento de Blur o Soften a la imagen guardada en el paso 2. Proyectar la textura procesada en el espacio de coordenadas de la escena en la pantalla.
29 Sombras - Soft Shadows Map Shadow Original Map Shadow Blur: 1 pasada2 pasadas Map Shadow Original Map Shadow Blur: 1 pasada
30 Sombras - Shadow VolumesEl cable proyecta sombra sobre el personaje. El personaje proyecta sombra sobre el piso.
31 Sombras - Shadow VolumesRepresentar 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.
32 Sombras - Shadow Volumes“Abducted” Contraband Entertainment
33 Sombras - Shadow VolumesGeometría Visible Escena compleja con sombras Geometría Shadow Volume “Abducted”, Contraband Entertainment
34 Sombras - Shadow VolumesGeometría Visible Escena con múltiples fuentes de luz Geometría Shadow Volume “Abducted” Contraband Entertainment
35 Sombras - Shadow VolumesSi 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
36 Sombras - Shadow VolumesTirar 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
37 Sombras - Shadow VolumesDeterminar 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.
38 Sombras - Shadow VolumesSilueta del Objeto generador (Ocludder) Luz Shadow volume (extensión infinita) Un shadow volume es un volumen definido por la luz y la silueta del objeto generador de sombra.
39 Sombras - Shadow Volumes (Zpass Caso 1)Luz Ocludder + + + - - - Objeto fuera de la sombra Espectador Contador Shadow Volume = = 0
40 Sombras - Shadow Volumes (Zpass Caso 2)Luz Ocludder + + + - Objeto en sombra Espectador Contador Shadow Volume = = 2
41 Sombras - Shadow Volumes (Zpass Caso 3)Luz Occluder Objeto fuera de la sombra Espectador Contador Shadow Volume = 0 (ninguna pasada zPass)
42 Sombras - Shadow Volumes (Problema zNear)Perdemos esta intersección (problemas en el conteo) zFar Clip Plane View Frustum zNear Clip Plane
43 Sombras - Shadow Volumes (Error Zpass)Luz Ocludder + - Objeto en sombra Espectador Contador Shadow Volume = +1-1 = 0
44 Sombras - Shadow Volumes (Error Zpass)Tres posibles soluciones: j Reacomodar los contadores de acuerdo a los volúmenes y la posición de la vista. k Clipping de los shadow volumes al View Frustum. l Usar Z-Fail.
45 Sombras - Shadow Volumes (Solución Reacomodar contadores)Ajustar el valor inicial del contador. MUY COSTOSO +1 +1
46 Sombras - Shadow Volumes (Solución Clipping de SV)Hacer clipping de los shadow volumes con el frustum de vista e incluir estos polígonos en el conteo. Difícil reconstrucción
47 Sombras - Shadow Volumes (Solución ZFail)Luz Ocludder + + Objeto en sombra Espectador Contador Shadow Volume = +1+1 = 2
48 Sombras - Shadow Volumes (Zfail)Luz Ocludder Objeto fuera de la sombra Espectador Contador Shadow Volume = 0 (ninguna pasada zFail)
49 Sombras - Shadow Volumes (Zfail)Luz Ocludder - - - + + + Objeto fuera de la sombra Espectador Contador Shadow Volume = = 0
50 Sombras - Shadow VolumesVentajas: 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)
51 Sombras - Zpass y ZFail Nota: Juegos tipo Diablo: ZpassZpass 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: Zpass Juegos tipo Doom3: Zfail
52 Sombras - Shadow VolumesSería imposible utilizar Shadow Volumes con la reja! La sombra de la reja aparece en el camión y el piso utilizando Shadow Maps. “Fuel” Firetoad Software
53 Sombras - ConclusionesLa 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.
54