Iluminación directa e indirecta
Cuando trabajamos con imágenes y escenas 3D generadas
por ordenador, uno de los factores más relevantes a la hora de
trabajar con nuestra escena es la iluminación. Actualmente hay
muchas técnicas y motores de render que realizan simulaciones muy
reales del comportamiento de la luz dentro de una escena. Hay muchos
métodos para el cálculo de dichas simulaciones y que podremos
pararnos a analizar en otro momento, pero ahora queríamos centrarnos
en lo más básico: las diferencias entre la iluminación directa y
la indirecta.
Para comenzar creemos conviene recordar como funciona la
luz para saber distinguir entre lo que es una iluminación directa y
lo que es indirecta. De forma muy genérica podemos decir que toda
fuente de luz emite unas ondas que rebotan sobre los objetos y
trasladan al observador una determinada cantidad de luz, lo cual nos
permite distinguir entre los diferentes objetos entre sí y también
sus características o colores.
Hablando
en términos de CGI, una iluminación directa es aquella que se
consigue al crear una fuente de luz que emite rayos de luz e iluminan
la escena sin rebotar en los objetos. De esta forma, las superficies
tienen dos posibilidades: o están iluminadas o no lo están.

La aplicación de este método como cálculo de
iluminación dentro de la visualización arquitectónica, genera
imágenes muy simples con poca información pero en cambio son extremadamente
rápidas de calcular.
Por otro
lado, la iluminación indirecta es aquella que reciben los objetos
como consecuencia del rebote de la luz sobre otros objetos en la
escena. Es decir, la que no proviene directamente desde la fuente de
luz sino de su reflexión, refracción o transmisión a través de
otros objetos.
La combinación de la luz directa y la luz indirecta nos
da una imagen más real para el diseño de nuestras escenas. Ahora ya
no solo hay zonas iluminadas y zonas que no lo están, sino que
también aparecen zonas en penumbra o zonas con diferentes grados de
iluminación.
Evidentemente, el comportamiento real de la luz es mucho
más complejo que todo esto y por tanto el simularlo virtualmente
requiere de una gran potencia de calculo. Cuantas más veces hagamos
rebotar la luz entre los objetos de la escena, más real será la
simulación que consigamos.
Además
de todo esto, hay que sumar que los materiales del mundo real suelen
ser también muy complejos y sobre ellos la luz reacciona de
diferentes modos, con lo cual hay que tener en cuenta sus
características de reflexión, refracción, transmisión,
rugosidad... etc. Simular todas estas características y el
comportamiento de la luz sobre ellas es realmente complejo y existen
multitud de métodos y software capaz de simularlo de un modo u otro.
Evidentemente cuando trabajamos intentado conseguir
realismo en nuestras escenas de arquitectura es fundamental estudiar
cómo se comportan los materiales en el mundo real para ser capaces
de trasladar sus propiedades físicas al software con el que estemos
trabajando y así poder conseguir las infografías que deseamos.
De este modo, cuanto más compleja sea la escena y más
detenimiento pongamos en el desarrollo de los materiales y en el
comportamiento de los mismos frente a las fuentes de luz que hayamos
colocado, más realismo podremos conseguir en nuestros trabajos.
A esto,
además, hay que sumar el método que utilice nuestro motor de render
para realizar el cálculo de la iluminación. Un método completamente real
(el que usan los llamados motores unbiased) realizaría un cálculo
infinito de rebotes de luz sobre la escena, con lo cual
necesitamos una potencia de cálculo abrumadora, aunque cada vez es más viable. Pero por suerte
existen métodos para realizar aproximaciones realmente asombrosas
del comportamiento de la luz, que si bien no son completamente
reales, sí que realizan simulaciones de iluminación global casi
indistinguibles de un cálculo real.
El estudio de la simulación del comportamiento de luz
llevó al desarrollo de dos algoritmos de Iluminación global que son
en los que se basan principalmente todos los métodos, el RayTracing
(1980) y el Radiosity (1984). El primero de ellos realiza un cálculo
por muestreo de puntos y el segundo por elementos finitos. Estas dos
técnicas han ido evolucionando e incluso se han mezclado para
conseguir aprovechar las ventajas de cada una de ellas. En cualquier
caso el estudio del funcionamiento de cada uno de estos métodos, o
de otros como el Path Tracing, Montecarlo, Fhoton Mapping, etc.
quedan para futuras entradas.
0 comentarios: