Inicio >1. Introduccion2. Modelado3. Materiales e Iluminacion4. Animacion5. Render y Postproduccion
5.3. Ambient Occlusion 5.5. Pathtracing y Mapa de Fotones (Yafray)

5.4. Radiosidad

En la técnica de Radiosidad (Radiosity) esta técnica se calcula el intercambio de luz entre superficies difusas. Esto se consigue subdividiendo el modelo en pequeñas unidades denominadas parches, y éstos a su vez en otras unidades más pequeñas elementos, que serán la base de la distribución de luz final. Inicialmente los modelos de radiosidad calculaban las interacciones de luz entre superficies difusas (aquellas que reflejan la luz igual en todas las direcciones), aunque existen modelos más avanzados que tienen en cuenta modelos de reflexión más complejos.

Figura 01. Empleo del método de radiosidad.

El modelo básico de radiosidad calcula una solución independiente del punto de vista. Sin embargo, el cálculo de la solución es muy costoso en tiempo y en espacio de almacenamiento. No obstante, cuando la iluminación ha sido calculada, puede utilizarse para renderizar la escena desde diferentes ángulos, lo que hace que este tipo de soluciones se utilicen en visitas interactivas y videojuegos en primera persona. En el ejemplo de la Figura 1 (a), en el techo de la habitación se encuentran las caras poligonales con propiedades de emisión de luz. Tras aplicar el proceso del cálculo de radiosidad obtenemos la malla de radiosidad Figura 1 (b) que contiene información sobre la distribución de iluminación entre superficies difusas. En la Figura 1 (c) puede verse el resultado de renderizar la malla de radiosidad.

El modelo de radiosidad es independiente del punto de vista, lo que hace que este tipo de soluciones se utilicen ampliamente en visitas arquitectónicas y en escenarios de videojuegos interactivos.

En 1988, Cohen introdujo una variante de cálculo basada en el refinamiento progresivo que permite que la solución de radiosidad encontrada en cada iteración del algoritmo sea mostrada al usuario. Este método progresivo es un método incremental que requiere menos tiempo de cómputo y de almacenamiento; en cada iteración se calcula la interacción entre una superficie y el resto. Este método al final tiende a la misma solución que el original, proporcionando resultados intermedios que van siendo refinados. Blender implementa este método de refinamiento progresivo.

En general, el cálculo de la radiosidad es eficiente para el cálculo de distribuciones de luz en modelos simples con materiales difusos, pero resulta muy costoso para modelos complejos (debido a que se calculan los valores de energía para cada parche del modelo) o con materiales no difusos. Además, la solución del algoritmo se muestra como una nueva malla poligonal que tiende a desenfocar los límites de las sombras. Esta malla poligonal puede ser inmanejable en complejidad si la representación original no se realiza con cuidado o si el modelo es muy grande, por lo que este tipo de técnicas no se utilizan en la práctica con modelos muy complejos.

Uso en Blender

Al inico de la sección se ha comentado que el método de radiosidad calcula el intercambio de luz entre superficies. Por tanto, serán las superficies las que deban tener propiedades de emisión de luz. Como vimos en la tercera sesión del curso, hay un parámetro de los materiales dentro de la pestaña Shaders llamado Emit que sirve para indicar las cantidad de energía luminosa que emite un material. Será este parámetro el que emplearemos para definir fuentes de luz. La dirección y sentido de la iluminación vendrá definida por el vector normal de la superifice. Por tanto, resultará crítico que el sentido del vector normal sea el adecuado.

Figura 02. Ajuste sentido vector normal.

Por ejemplo, si quisiéramos definir un cuadrado en el techo que ilumine una habitación, el vector normal tendrá que apuntar hacia el suelo. Para representar el vector normal de una cara debemos estar en modo edición , y en la pestaña Mesh Tools More activar el botón Draw Normals (ver Figura 2). El parámetro NSize indica el tamaño con el que se dibujarán las normales.

Si el vector normal apunta en la dirección incorrecta, podemos rotar la cara poligonal 180 grados, o bien seleccionar la cara en modo edición y pulsar W Flip Normals (ver Figura 2).

Una vez tengamos configurada la escena, con las fuentes de luz definidas mediante superficies y materiales con parámetro Emit, emplearemos el subgrupo de botones de radiosidad que se encuentran dentro del grupo de botones de sombreado (ver Figura 3). Por defecto, la tercera pestaña Calculation sólo está visible después de utilizar el botón Collect Meshes de la pestaña Radio Tool. Veamos las opciones más interesantes de cada pestaña.

Figura 03. Grupo de pestañas de Radiosidad.

Radio Render

En esta pestaña se encuentran las opciones generales de calidad de la solución de radiosidad. Hemires define la resolución de una de las estructuras principales del cálculo de la radiosidad (un hemicubo). El valor por defecto suele ser adecuado para la mayoría de las situaciones. Max Iterations define el número máximo de iteraciones para calcular la radiosidad (que, como hemos visto, es un proceso de refinamiento progresivo). Si se deja el valor a 0 (por defecto), Blender parará cuando se alcance el valor de convergencia Convergence, que indica el nivel de energía que queda por disparar. En el ejemplo de la figura 3, cuando la cantidad máxima de energía que quede por intercambiar entre superficies sea menor que 0.1, el proceso parará automáticamente. Finalmente los controles de Mult y Gamma permiten multiplicar el valor de energía y ajustar el contraste de los valores de energía respectivamente.

CONDICIÓN DE PARADA
Condición de parada de radiosidad
  Refinamiento Progresivo: El cálculo de la solución de Radiosidad puede ser un proceso lento, dependiendo de los niveles de división elegidos y el nivel de convergencia. La solución encontrada en cada momento se muestra de forma interactiva al usuario, que puede parar el proceso cuando quiera pulsando Escape. La malla de radiosidad calculada hasta ese instante podrá utilizarse igual que si fuera la solución final.

Radio Tool

Pulsando el botón Collect Meshes, Blender añadirá las mallas poligonales que tuviéramos previamente seleccionadas al módulo del cálculo de radiosidad. Deberemos seleccionar previamente todos los elementos que queramos que intervengan en el cálculo (objetos de la escena y superficies que emiten luz). Hecho esto, aparecerá el panel que veremos a continuación Calculation. El botón Free Radio Data de la pestaña Radio Tool permite liberar de memoria la solución de radiosidad existente (si queremos cambiar parámetros y volver a realizara el cálculo, utilizaremos este botón). El botón Replace Meshes sustituye las mallas originales por la solución de radiosidad (en general, no es recomendable). En general, es más conveniente utilizar Add new Meshes que añade la malla de radiosidad a la escena como un nuevo objeto.

La siguiente lista de botones Wire, Solid o Gour elige el modo de representación interactiva de la malla de radiosidad.

Los parámetros PaMax, PaMin, ElMax y ElMin configuran el tamaño máximo y mínimo de los parches y de los elementos. El botón de Limit Subdivide realiza manualmente la subdivisión en Parches y Elementos. En general, no es necesario pulsarlo, ya que se realiza automáticamente cuando se inicia el cálculo de la radiosidad mediante el botón Go de la siguiente pestaña.

Calculation

El botón Go permite iniciar la simulación de Radiosidad. Una vez que tenemos la malla de radiosidad calculada, con los botones FaceFilter podemos suavizar más la solución, Element Filter suaviza los bordes de las sombras, y RemoveDoubles optimiza los elementos vecinos cuya diferencia de color es menor que la especificada en Lim.

Ejemplo de uso: Cornell Box

Ficheros asociados:
Escena de ejemplo - Cornell Box (35KB)

En el siguiente ejemplo de uso utilizaremos el fichero de ejemplo de la escena de la Caja de Cornell. Comenzamos añadiendo un plano en el techo de la habitación   Video: 00:15, definiendo la dirección del vector normal correctamente   Video: 00:45. Añadimos un material de color blanco con propiedades de emisión de luz   Video: 01:05. Seleccionamos todos los objetos de la escena A   Video: 01:17 y pulsamos Collect Meshes   Video: 01:22. A continuación pulsamos GO   Video: 01:29 con los valores por defecto. Blender inicia el cálculo de la solución de Radiosidad. Al utilizar un esquema adaptativo, en cada iteración calcula la contribución de la superficie que aporta más energía radiante a la escena (al principio   Video: 01:30 - 01:35 es la luz del techo). Según va contribuyendo a la escena, esa superficie tiene menos que aportar, y entonces comenzará a calcular el intercambio de energía indirecta entre superficies   Video: 01:35. La primera superficie que aporta energía al resto de la escena es el techo de los dos cubos, porque fueron los que recibieron más energía en las etapas anteriores. Posteriormente se calcula la interacción de las paredes con los cubos, etc. Por esa razón, la pared roja de la izquierda tinta del mismo color la cara izquierda del cubo.

Después de un rato de cálculo, pulsamos Escape   Video: 02:33 (de igual modo podíamos haber dejado que acabara la simulación), y pinchamos en Add New Meshes   Video: 02:52. Sin deseleccionar la malla de radiosidad, la movemos a otra capa M   Video: 02:55. Como ya tenemos la solución de radiosidad en una malla calculada, podemos liberar los datos que haya en memoria Free Radio Data   Video: 03:03. En la capa donde hemos movido la solución de radiosidad, podemos habilitar la representación texturizada   Video: 03:10 y comprobar cómo el cálculo de la iluminación está asociado a la malla poligonal, permitiendo su representación interactiva independiente del punto de vista. El tiempo de render de la escena es menor a 1 segundo   Video: 03:25.

Player

5.3. Ambient Occlusion 5.5. Pathtracing y Mapa de Fotones (Yafray)