Você está na página 1de 47

Tcnicas avanzadas de

iluminacin

Definicin de Global Illumination (GI)


"Global illumination is a general name for a group of
algorithms used in 3D computer graphics that are meant to add
more realistic lighting to 3D scenes. Such algorithms take into
account not only the light which comes directly from a light
source (direct illumination), but also subsequent cases in which
light rays from the same source are reflected by other surfaces
in the scene (indirect illumination)."
La iluminacin de escenarios 3D es un tema indispensable si
queremos dotar de realismo a nuestros renders.
Por desgracia la luz es demasiado compleja para que sea facil de
modelar con los ordenadores actuales, por eso existen diferentes
tecnicas que aproximan los principios de la luz y que permiten
obtener resultados que engaan al ojo.
Entender las distintas tcnicas nos ayudar a conseguirlo.

Nuestro entorno de pruebas, la Cornell Box


La mejor manera de testear algoritmos de iluminacion es hacerlo en un
entorno sencillo, como una cornell box. Nos permite medir mejor las
consecuencias de los parametros que empleamos.

"The Cornell Box is a test aimed at determining the accuracy of rendering software by
comparing the rendered scene with an actual photograph of the same scene. It was created
by the Cornell University Program of Computer Graphics and Donald P. Greenberg for a
paper published in 1984."

Cmo funciona el Raytracing?


Trazamos rayos desde la camara a la escena para saber la
intensidad luminica de cada punto visible y lo almacenamos en
una imagen.

El problema est en cmo calcular la cantidad de luz que


hay en dicho punto, para eso existen diversos modelos de
iluminacin, unos ms complejos que otros.

Iluminacion Phong (1/3)


El algoritmo de Phong consiste en iluminar cada punto acorde al
angulo que forma la luz con la perpendicular en el punto (la normal) y
el angulo que forma con la camara, y aplicandole una atenuacin por
distancia al foco.

Por el momento no tenemos en cuenta si hay algn objeto ocluyendo


la luz, o cmo afecta el entorno al punto (si la luz ha rebotado en
algun lugar), ademas solo tenemos en cuenta luces puntuales, no
luces que vengan de varias direcciones (como la luz diurna).
Es un modelo demasiado simple para engaar al espectador.

Iluminacion Phong (2/3)

Ambiente: luz constante que proviene de todos lados


(ambiental). Es una simplificacion ya que la luz ambiente
recibida no tiene la misma intensidad en todas direcciones,
depende de la escena.
Difusa: luz incidente del foco de luz que se dispersa de manera
homogenea. Es una simplificacion ya que la luz del foco puede
venir tambien rebotada en otros objetos, ademas de que nunca
viene de un unico punto.
Especular: luz que incide en el objeto y rebota casi
perfectamente. Es una simplificacion para dar un acabado ms
metalico a la superficies.

Iluminacion Phong (3/3)


El modelo de Phong puede mejorarse aadiendo ms
propiedades del material a la ecuacin.

En iluminacin un parametro que nos interesa tener en cuenta


especialmente es el de emisividad.
Este parametro nos indica cuanta luz irradia el objeto de por s,
no luz rebotada en l.
Se utiliza para crear objetos como tubos fluorescentes, neones,
etc.
Es bueno tenerlo en cuenta ya que algunos modelos de
iluminacin recaen completamente sobre esta propiedad.

Nuestra Cornell Box con iluminacin Phong (sin sombras)

Sombras raytraced
Si queremos sombras necesitamos saber si entre el punto a iluminar y el foco
existe algun objeto ocluyendolo. Trazamos un rayo desde el punto en el que
queremos evaluar la luz hasta cada foco de luz para buscar objetos que
puedan estar tapando la luz. Si el rayo intersecta con algun objeto entonces
esa luz no afecta al punto.

Este algoritmo da sombras muy duras pero podemos suavizarlas


lanzando ms rayos por foco usando ligeras desviaciones de la
posicin del emisor de luz (area shadows).

Iluminacin phong con sombras

Iluminacin phong con sombras

Iluminacion Phong con sombras suavizadas

Tecnicas comunes de iluminacin avanzada


Ms all del modelo Phong existen
tecnicas de rendering complejas
que dan mayor realismo a la
escena final, cada una parte de un
concepto distinto y algunas
pueden ser combinadas para
conseguir un acabado ms
natural.

En esta presentacin
trataremos las siguientes:
Ambient Occlusion
Radiosity
Photon Mapping
Path-tracing

Ventajas y desventajas
Estas tcnicas tienen sus pros y sus cons:

Ventajas
Dan mucho realismo a la escena
Dan profundidad a la escena (las cosas dejan de verse demasiado
planas)
Dan riqueza al entorno (aparecen matices nuevos)
Iluminan zonas que de otro modo quedarian en la penumbra.

Desventajas
Alto coste computacional (tiempo de render elevado).
No hay una solucin perfecta para todos los casos.
Requiere entender la complejidad de los sistemas de raytracing.
Muchos parametros para ajustar.

Ambient Occlusion
Modulamos la luz ambiente en cada punto por un factor que viene dado por cmo de
ocluida est la zona que representa el pixel.
Evitamos as que la luz ambiente sea uniforme sobre la superficie de un objeto.

Cmo funciona? Lanzamos varios rayos en diferentes direcciones sobre un hemisfero


situado sobre el punto donde queremos computar su AO. Si el rayo colisiona contra
algun objeto oscurecemos el punto. Podemos jugar con la distancia de los rayos para
conseguir distintos resultados (AO en interiores o exteriores).

Da profundidad a la escena permitiendo percibir la distancia entre los objetos, pero no


aporta informacin sobre las propiedades luminicas de cada uno de ellos.

Pocoyo, serie iluminada unicamente con ambient occlusion

Ambient Occlusion con max distance de 1,5,10 y 20

Ambient Occlusion sin max. distance (max distance infinito)

Radiosity

Se asume que todos los objetos pueden irradiar luz.


Para cada pixel, lanzamos el rayo a la escena para calcular el punto de
colision. En dicho punto calculamos la cantidad de luz mediante Phong,
pero luego lanzamos rayos en todas direcciones desde ese punto y
calculamos Phong en los nuevos puntos de colision. Finalmente
acumulamos la cantidad de luz recibida de todos esos rayos y la aplicamos
al punto.
Podemos iterar el proceso reusando la cantidad de luz de cada punto de la
iteracin anterior, para ello tenemos que almacenar la luz ya sea por
vertice, textura o patch, as simulamos ms rebotes de la luz.
Un ejemplo sera Final Gather o el Advance Lightracer de Max.

Final Gather sin focos, solo material emisivo

Phong + Sombra + Radiosity (Final Gather). Notar que la imagen est sobreexpuesta.

Photon Mapping
Recrear el comportamiento fisico de la luz, lanzando fotones desde los
focos de luz o los objetos emisivos.
Los fotones pueden rebotar o adherirse a los objetos.
Si un foton rebota se modula por el material en el punto donde rebot.
Renderizamos en dos pasadas, una para calcular el photon map de la
escena, y la segunda donde renderizamos la escena leyendo para cada
punto la cantidad de fotones ms cercanos (ajustados por distancia).
Permite generar causticos (las formas que se producen cuando la luz
cruza objetos transparentes)
Tiene problemas de continuidad
temporal entre frame ya que el ruido
varia.
Si no se ajusta correctamente tiene el
problema de requerir muchos recursos
para zonas fuera de cmara, para ello
existe otro algoritmo llamado
Importons que permite identificar las
zonas relevantes de la escena donde
los photones deben verse ms.

Causticos

Photon Map sin filtrar

Photon map + final gather

Photon Mapping con causticos

Path-tracing
Para cada pixel lanzamos un rayo y cuando colisiona con un objeto
decidimos si el rayo muere ah usando una funcin aleatoria, si no muere
entonces hacemos que rebote siguiendo una direccin aleatoria sobre el
hemisferio del punto, vamos guardamos el camino recorrido y repetimos el
proceso hasta que muera.

Cuando el rayo muere deshacemos el camino aplicando la luz acumulada


por los puntos por los que pasa.
Aqu no necesitamos computar Phong en cada colision, simplemente
leemos la cantidad de luz emisiva de cada objeto con el que colisiona el
rayo, por lo tanto algunos softwares directamente ignoran los focos de luz
de la escena, solo tienen en cuenta a los objetos emisivos. Esto nos ahorra
todo el error asociado a Phong.
Podemos encontrarlo en los motores de render VRay, Maxwell o Fryrender

Path-tracing
Sin embargo tiene el problema de
dar un resultado con muchisimo
ruido por lo que necesitamos
generar muchos rayos por punto
para compensarlo, es por lo tanto
muy lento en comparacin con el
resto.

Da imagenes ultrarealistas pero


requiere de un tiempo
computacional demasiado elevado.
En la imagen de la derecha
podemos percibir el ruido y cmo
se compensa aadiendo ms
rayos.

Maxwell Render

Tecnicas complementarias
Adems de existir diferentes modelos de iluminacin,
existen tecnicas complementarias que se usan para
mejorar los resultados y que pueden adaptarse a
cualquier modelo de iluminacin de los anteriormente
mencionados.

Algunos ejemplos son:

Image Based Lighting


Subsurface Scattering

Image Based Lighting (1/3)


IBL es un truco para iluminar sin utilizar focos (normalmente para
entornos con luz ambiente como exteriores).
Consiste en copiar la luz de un entorno natural utilizando una imagen
como medio para almacenarla (una foto o un render).
Luego en la escena usamos tcnicas como radiosidad para leer de la
imagen la aportacin lumnica para cada punto.

Image Based Lighting (2/3)


Ideal para exteriores (podemos copiar la iluminacion de un
entorno en lugar de tener que configurarla a mano).
Imprescindible cuando queremos mezclar imagen real con
imagen sintetica (es la manera ms facil de replicar las
propiedades luminicas de un entorno)
Es facil capturar la luz de un entorno utilizando una esfera
reflectante.
Si es posible tomamos las fotos en HDR para tener un rango
de valores ms elevado. Esto es importante en IBL para
conseguir los brillos en los objetos reflectantes.
Convertir la imagen a un formato que soporte tu motor
(cubemap, hdr cross, polar image,...).

Image Based Lighting (3/3)


De una foto de una esfera reflectante podemos extraer la luz
del entorno.
En teoria nos basta con una foto si est alineada con la cmara
que usaremos en la escena 3D, sino necesitaremos fotos
desde varios ngulos.

Integrando imagen sintetica con real


usando IBL

Objeto iluminado sin IBL y con IBL usando la imagen


de fondo como referencia para la iluminacion.

Subsurface Scattering
Replicar el comportamiento de la luz que se mueve por
dentro de objetos translucidos.
Trazar rayos para calcular la luz no solo rebotando sino
tambien penetrando el objeto y desviandose en funciona del
material.
Util para renderizar piel, plastico, cera, liquidos translucidos,
etc.

Extendiendo los materiales


Algunas propiedades extra a tener en cuenta:

Materiales multicapa: Son aquellos materiales que se


comportan como si estuvieran formados por diversas capas,
cada una con diferentes propiedades.
Fresnel y Velbet: consiste en alterar las propiedades
luminicas de un material acorde al angulo con el que se
mira.
Difraccin: consiste en cambiar el color resultante de un rayo
que atraviesa un objeto transparente.

Referencias
1.The Cornell Box http://www.graphics.cornell.edu/online/box/
2.Raytracing by Jamis Buck http://www.geocities.com/jamisbuck/raytracing.html
3.Minimal Global Illumination Renderer http://www.hxa7241.org/minilight/minilight.html
4.Radiosity by Hugo Elias http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm
5.Henrik Wann Jensen Web http://graphics.ucsd.edu/~henrik/images/cbox.html
6.Sponza attrium with VRay [RU] http://www.ixbt.com/soft/vray-2.shtml
7.Image Based Lighting, Paul Debevec
http://www.debevec.org/CGAIBL2/ibl-tutorial-cga2002.pdf
8.Light Probe gallery. http://www.debevec.org/probes/
9.Boring3D (examples of SSS) http://www.boring3d.com/daily_archive.htm

Imagenes obtenidas de
1.Citizen Insane http://www.flickr.com/photos/citizen_insane/sets/72157606933790804/
2.Spin99 in nvidia forums http://forums.nvidia.com/index.php?showtopic=2153
3.Allan Hayburn http://allanhayburn.com/webwork/
4.Maxwell Render http://www.maxwellrender.es/
5.Pocoyo http://www.pocoyo.com/
6.Ahmed Tausif Aijazi
7.Slow decay by Toni Bratincevic
http://en.9jcg.com/featured_artists/toni_bratincevic/making_of_slow_decay_1.php

Você também pode gostar