Está en la página 1de 7

Renderizado de Radiosidad

[edit]

El método Radiosidad de Blender


Primero, ¡un poco de teoría! Puede saltar a la siguiente sección si lo desea, y volver aquí si
surgen dudas. A finales de los ochenta y principios de los noventa, la Radiosidad era un
tema candente en el mundo de los gráficos 3D por ordenador. Se desarrollaron métodos
diversos; la más exitosa de esas soluciones estaba basada en el método del "refinamiento
progresivo" con una esquema de "subdivisión adaptativa". Y esto es lo que Blender utiliza.
Para poder sacar el máximo partido del método de Radiosidad de Blender, es importante
comprender los siguientes principios:

• Método de Elemento Finito

Muchos métodos de simulación o de gráficos por ordenador asumen una


simplificación de la realidad con "elementos finitos". Para una solución visualmente
atractiva (e incluso científicamente válida), no es siempre necesario zambullirse
hasta un nivel de detalle molecular. En su lugar, puede reducirse el problema a un
número finito de elementos representativos y bien descritos. Es un hecho común el
que tales sistemas convergen rápidamente en una solución estable y fiable. El
método de Radiosidad es un ejemplo de método de elemento finito, puesto que cada
cara está considerada un "elemento finito", y su emisión de luz está considerada
como un todo.

• Parches y Elementos

En el universo de la Radiosidad, distinguimos entre dos tipos de caras 3D:


Parches.
Son triángulos o cuadrángulos capaces de emitir energía. Para una solución rápida
es importante tener cuantos menos de estos Parches como sea posible. Pero para
acelerar las cosas, la energía es modelada como si la energía se emitiera desde el
centro del Parche; el tamaño de los Parches debería, por lo tanto, ser lo
suficientemente pequeño para que hubiera una distribución realista de energía. Por
ejemplo, cuando un pequeño objeto está situado encima del centro del Parche, toda
la energía que el Parche envía es oscurecida por este objeto, ¡incluso si el Parche es
grande! Este Parche debería ser subdividido en Parches más pequeños.
Elementos.
Estos son los triángulos o cuadrángulos que reciben energía. Cada Elemento está
asociado a un Parche. En realidad, los Parches están subdivididos en pequeños
Elementos. Cuando un Elemento recibe energía, absorbe parte de la misma
(dependiendo de su color) y pasa el remanente al Parche, para su posterior
radiación. Puesto que los Elementos son también las caras que se muestran, es
importante mantenerlas cuanto más pequeñas posible, para producir bordes de
sombras y gradientes de luz sutiles.

• Refinamiento Progresivo

Este método empieza examinando todos los Parches disponibles. El Parche con más
cantidad de energía "no disparada" es seleccionado para disparar toda su energía al
entorno. Los Elementos del entorno reciben esta energía, y la añaden a la energía
"no disparada" de los Parches que tienen asociados. Luego, el proceso se inicia una
vez más para el Parche que tiene ahora más energía por disparar. Esto se sucede
para todos los Parches hasta que no se recibe más energía, o hasta que la cantidad de
energía "no disparada" converge por debajo de cierto valor.

• El método del hemicubo

El cálculo de cuánta energía da cada Parche a un Elemento se realiza mediante el


uso de "hemicubos". Exactamente situado en el centro del Parche, un hemicubo
(literalmente "medio cubo") consiste en 5 pequeñas imágenes del entorno. Para cada
píxel en estas imágenes, cierto Elemento visible es codificado mediante color, y la
cantidad de energía transmitida puede calcularse. Especialmente con el uso de
hardware especializado, el método del hemicubo puede acelerarse
significativamente. En Blender, sin embargo, los cálculos del hemicubo se realizan
por software. Este método es, de hecho, una simplificación y optimización de la
fórmula "real" de la Radiosidad (diferenciación del factor forma). Por esta razón, la
resolución del hemicubo (el número de píxeles de sus imágenes) es aproximado, y
su cuidadosa configuración es importante para prevenir defectos de aliasing.

• Subdivisión adaptativa

Puesto que el tamaño de los parches y los elementos en una malla define la calidad
de la solución de la Radiosidad, se han desarrollado esquemas de subdivisión
automática para definir el tamaño óptimo de Parches y Elementos. Blender posee
dos métodos de subdivisión automática:
1. Parches Subdivisión-disparo.
Disparando energía al entorno, y comparando los valores del hemicubo con el
"factor forma" matemático actual, pueden detectarse errores que indican la
necesidad de una nueva subdivisión del Parche. El resultado son Parches menores y
un mayor tiempo de resolución, pero un realismo de la solución más alto.
2. Elementos Subdivisión-disparo.
Disparando energía al entorno, y detectando cambios altos de energía (gradientes)
dentro de un Parche, los Elementos de este Parche son subdivididos un nivel extra.
El resultado son Elementos menores y un mayor tiempo de resolución, y quizá más
aliasing, pero un nivel de detalle más alto.

• Visualización y Post-procesado
La subdivisión de Elementos en Blender está "equilibrada"; ello significa que cada
elemento difiere un máximo de 1 nivel de subdivisión respecto a sus vecinos. Esto
es importante para una visualización agradable y correcta de la solución de
Radiosidad con caras sombreadas mediante Gouraud. Normalmente después de la
resolución, la solución consiste en miles de pequeños Elementos. Filtrándolos y
eliminando "dobles", el número de Elementos puede reducirse significativamente
sin destruir la calidad de la solución de Radiosidad. Blender guarda los valores de
energía en números de punto flotante. Ello hace posible la configuración de
situaciones de iluminación dramática, cambiando los valores estándar de
multiplicación y gamma.

• Radiosidad para modelado

El último paso puede ser sustituir las mallas de entrada con la solución de
Radiosidad (botón Replace Meshes - Sustituir Mallas). En ese momento los colores
de los vértices se convierten de un valor de punto flotante a un valor RGB de 24
bits. Los Objetos de Malla antiguos son eliminados y reemplazados por uno o más
Objetos de Malla nuevos. Se pueden eliminar los datos de Radiosidad con Free
Data (Liberar Datos). Los nuevos objetos reciben un material por defecto que
permite un renderizado inmediato. Hay dos parámetros importantes en un Material
para trabajar con colores de vértice:
VColPaint.
Esta opción trata los colores de los vértices como un reemplazo para el valor RGB
normal en el Material. Deben añadirse Lamps para poder ver los colores de
Radiosidad. De hecho, se puede usar la iluminación y sombreado de Blender como
de costumbre, y conservar todavía una apariencia neta de Radiosidad en el render.
VColLight.
Los colores de los vértices se añaden a la luz al renderizar. Puede verse el resultado
incluso sin Lamps. Con esta opción, los colores de los vértices son pre-
multiplicados por el color RGB del Material. Esto permite un ajuste fino de la
cantidad de "luz de Radiosidad" en el render final.

Como todo en Blender, la configuración de Radiosidad se almacena en un bloque de datos.


Queda adjuntado a la escena, y cada escena de Blender puede tener un "bloque" de
Radiosidad diferente. Puede usarse esta característica para dividir entornos complejos en
escenas con solucionadores de Radiosidad independientes.

[edit]

Renderizado de Radiosidad
Asumamos que tenemos una escena lista, y que queremos renderizarla con Renderizado de
Radiosidad. Lo primero que debe comprenderse al usar Radiosidad es que no es necesaria
ninguna Lamp, aunque se requieren algunas mallas con la propiedad de material Emit
mayor que cero, pues serán las fuentes luminosas. Puede construirse la escena de prueba
mostrada en Ejemplo de radiosidad.; es bastante sencillo. Simplemente debe crearse un
cubo grande para la habitación, darle materiales diferentes a las paredes laterales, añadir un
cubo y un cubo estirado en su interior, y añadir un plano con un valor Emit diferente de
cero junto al techo para simular la luz de área (Decorado para la prueba de Radiosidad.).
Se asignan materiales como de costumbre a los modelos de entrada. El valor RGB del
Material define el color del Parche. El valor 'Emit' de un Material define si un Parche es
cargado con energía al principio de la simulación de Radiosidad. El valor 'Emit' es
multiplicado por el área de un Parche para calcular la cantidad inicial de energía no
disparada.

Caras emisoras: ¡Compruebe el


número de 'emisores' en la consola de
Blender! Si es cero, no puede suceder
nada interesante. Es necesario como
mínimo un Parche emisor para obtener
luz, y en consecuencia, una solución.

Decorado para la prueba de Radiosidad.

Al asignar materiales debemos asegurarnos de que todos tienen el conmutador Radio


activado, para habilitar el Panel Shaders de los botones del subcontexto Material (Material
con la Radiosidad habilitada.).
Material con la Radiosidad habilitada.

Nótese que la emisión de luz está gobernada por la dirección de las normales de una malla,
por lo que el plano emisor de luz debería tener una normal apuntando hacia abajo, y el
cubo exterior (la habitación) debería tener las normales apuntando hacia adentro
(¡inviértalas!). Seleccione el subcontexto Radiosidad del Contexto Shading. Los
Paneles, mostrados en Figure 18-4, son dos: Radio Rendering (renderizado de radiosidad)
el cual gobierna la Radiosidad cuando es usado como herramienta de renderizado (caso
presente), y Radio Tool (herramienta de radiosidad), el cual gobierna la Radiosidad como
una herramienta de modelado (próxima sección).

Botones Radiosidad para renderizado de radiosidad.

Los botones definen:

• Hemires: - La resolución del hemicubo, es decir, de las imágenes codificadas con


color, utilizadas para encontrar los Elementos que son visibles desde un "Parche de
disparo", y así recibir energía. Los Hemicubos no son almacenados, sino
recalculados cada vez para cada Parche que dispara energía. El valor 'Hemires'
determina la calidad de la Radiosidad e influye significativamente en el tiempo de
resolución.
• Max Iterations: - El número máximo de iteraciones de Radiosidad. Si se pone a
cero, la Radiosidad seguirá hasta que se cumpla el criterio de convergencia. Se
recomienda fuertemente asignarle un número diferente de cero, normalmente mayor
que 100.

• Mult:, Gamma: - El espacio de color de la solución de Radiosidad, es muchísimo


más detallado de lo que puede expresarse con simples valores RGB de 24 bits.
Cuando los Elementos se convierten en caras, sus valores de energía son
convertidos a un color RGB usando los valores Mult y Gamma. Con el valor Mult
puede multiplicarse el valor de la energía; con Gamma puede ajustarse el contraste
de los valores de la energía.

• Convergence: - Cuando la cantidad de energía no disparada en un entorno es


inferior a este valor, la resolución de Radiosidad se detiene. La energía inicial no
disparada en un entorno se multiplica con el área de los Parches. Durante cada
iteración, parte de la energía es absorbida, o desaparece cuando el entorno no es un
volumen cerrado. En el sistema de coordenadas estándar de Blender, un emisor
típico (como en los archivos de ejemplo) tiene un área relativamente pequeña. Por
esta razón, el valor de convergencia es dividido por un factor de 1000 antes de la
prueba.

Ponga Max Iterations a 100 y seleccione el Contexto Scene y el Subcontexto Render (F10).
Localice el botón conmutador Radio (Habilitando la Radiosidad en los botones de Render.)
en el Panel Render y póngalo a 'on' para habilitar la Radiosidad, y luego ¡Render! (F12).

Habilitando la Radiosidad en los botones de Render.

El render tardará más que de costumbre; en la consola apreciará un contador subiendo. El


resultado será bastante pobre (Render de Radiosidad para mallas rudas (izquierda) y
mallas refinadas (derecha)., izquierda) porque el render automático de radiosidad ¡no
realiza un refinado adaptativo! Seleccione todas las mallas, una tras otra, y en EditMode
subdivídalas al menos tres veces. La habitación, que es mucho mayor que las otras mallas,
puede ser subdividida incluso cuatro veces. Aumente Max Iterations un poco, 300 o más.
Intente renderizar una vez más (F12). Esta vez el renderizado tardará incluso más, pero los
resultados serán mucho mejores, con sombras suaves y derrame de colores. (Render de
Radiosidad para mallas rudas (izquierda) y mallas refinadas (derecha)., derecha).
Render de Radiosidad para mallas rudas (izquierda) y mallas refinadas (derecha).

Nota: En el renderizado de Radiosidad,


Blender actúa como en un renderizado
normal; esto significa que las texturas,
curvas, superficies e incluso Objetos
Dupliframe son correctamente tratados.

Siguiente:
Anterior: Manual.es/PartXII Contenidos Manual.es/PartXII/Radiosity as a
Modelling Tool
Retrieved from
"http://wiki.blender.org/index.php/Manual.es/PartXII/Radiosity_Rendering"