

En gráficos 3D por computadora , la radiosidad es una aplicación del método de elementos finitos para resolver la ecuación de renderizado de escenas con superficies que reflejan la luz de forma difusa . A diferencia de los métodos de renderizado que utilizan algoritmos de Monte Carlo (como el trazado de rayos ), que manejan todo tipo de trayectorias de luz, la radiosidad típica solo considera trayectorias (representadas por el código "LD*E") que parten de una fuente de luz y se reflejan de forma difusa un cierto número de veces (posiblemente cero) antes de llegar al ojo. La radiosidad es un algoritmo de iluminación global en el sentido de que la iluminación que llega a una superficie proviene no solo directamente de las fuentes de luz, sino también de otras superficies que reflejan la luz. La radiosidad es independiente del punto de vista, lo que aumenta los cálculos involucrados, pero los hace útiles para todos los puntos de vista.
Los métodos de radiosidad se desarrollaron por primera vez alrededor de 1950 en el campo de la ingeniería de transferencia de calor . Posteriormente, fueron perfeccionados específicamente para el problema de la renderización de gráficos por computadora entre 1984 y 1985 por investigadores de la Universidad de Cornell [ 2 ] y la Universidad de Hiroshima [ 3 ] .
Entre los motores de radiosidad comerciales más destacados se encuentran Enlighten de Geomerics (utilizado en juegos como Battlefield 3 y Need for Speed: The Run ); 3ds Max ; form•Z ; LightWave 3D y el Electric Image Animation System .
Características visuales

La inclusión de cálculos de radiosidad en el proceso de renderizado suele aportar un elemento adicional de realismo a la escena final, debido a la forma en que imita fenómenos del mundo real. Consideremos una escena sencilla de una habitación.
La imagen de la izquierda se generó con un renderizador de iluminación directa típico . En esta escena hay tres tipos de iluminación que el artista ha elegido y colocado específicamente para intentar crear una iluminación realista: iluminación puntual con sombras (colocada fuera de la ventana para crear la luz que incide en el suelo), iluminación ambiental (sin la cual cualquier parte de la habitación que no esté iluminada directamente por una fuente de luz estaría totalmente oscura) e iluminación omnidireccional sin sombras (para reducir la falta de profundidad de la iluminación ambiental).
La imagen de la derecha se generó mediante un algoritmo de radiosidad . Solo hay una fuente de luz : una imagen del cielo proyectada fuera de la ventana. La diferencia es notable. La habitación se ilumina intensamente. Se aprecian sombras suaves en el suelo y sutiles efectos de iluminación en todo el espacio. Además, el color rojo de la alfombra se ha difuminado sobre las paredes grises, dándoles un tono ligeramente cálido. Ninguno de estos efectos fue elegido ni diseñado específicamente por el artista.
Descripción general del algoritmo de radiosidad
Cada una de las superficies de la escena que se va a renderizar se divide en una o más superficies más pequeñas (parches). Se calcula un factor de visión (también conocido como factor de forma ) para cada par de parches; este coeficiente describe la capacidad de los parches para verse entre sí. Los parches que están muy alejados entre sí o que forman ángulos oblicuos tendrán factores de visión menores. Si otros parches obstruyen la visión, el factor de visión se reducirá o será cero, dependiendo de si la oclusión es parcial o total.
Los factores de visión se utilizan como coeficientes en un sistema lineal de ecuaciones de renderizado. La resolución de este sistema proporciona la radiosidad, o brillo, de cada parche, teniendo en cuenta las interreflexiones difusas y las sombras suaves.
La radiosidad progresiva resuelve el sistema iterativamente con valores de radiosidad intermedios para el parche, que corresponden a los niveles de rebote. Es decir, después de cada iteración, sabemos cómo se ve la escena tras un rebote de luz, tras dos pasadas, tras dos rebotes, y así sucesivamente. Esto resulta útil para obtener una vista previa interactiva de la escena. Además, el usuario puede detener las iteraciones una vez que la imagen tenga la calidad deseada, en lugar de esperar a que el cálculo converja numéricamente.

Otro método común para resolver la ecuación de radiosidad es la "radiosidad por disparo", que resuelve iterativamente la ecuación emitiendo luz desde la zona con mayor energía en cada paso. Tras la primera pasada, solo se iluminarán las zonas que estén en la línea de visión directa de una zona emisora de luz. Tras la segunda pasada, se iluminarán más zonas a medida que la luz rebota por la escena. La escena se ilumina progresivamente hasta alcanzar un estado estacionario.
Formulación matemática
El método básico de radiosidad se fundamenta en la teoría de la radiación térmica , ya que se basa en el cálculo de la cantidad de energía lumínica transferida entre superficies. Para simplificar los cálculos, el método supone que toda la dispersión es perfectamente difusa . Las superficies se discretizan típicamente en elementos cuadriláteros o triangulares sobre los que se define una función polinómica por partes.
Tras este análisis, la cantidad de energía luminosa transferida se puede calcular utilizando la reflectividad conocida del parche reflectante, combinada con el factor de visión de ambos parches. Esta magnitud adimensional se calcula a partir de la orientación geométrica de los dos parches y puede interpretarse como la fracción del área total de emisión posible del primer parche que está cubierta por el segundo.
Más correctamente, la radiosidad B es la energía por unidad de área que sale de la superficie del parche por intervalo de tiempo discreto y es la combinación de energía emitida y reflejada:
dónde:
- B(x) i d A i es la energía total que sale de una pequeña área d A i alrededor de un punto x .
- E(x) i d A i es la energía emitida.
- ρ (x) es la reflectividad del punto, que da la energía reflejada por unidad de área al multiplicarla por la energía incidente por unidad de área (la energía total que llega de otros parches).
- S indica que la variable de integración x' recorre todas las superficies de la escena.
- r es la distancia entre x y x'.
- θ x y θ x' son los ángulos entre la línea que une x y x' y los vectores normales a la superficie en x y x' respectivamente.
- Vis( x , x' ) es una función de visibilidad, definida como 1 si los dos puntos x y x' son visibles entre sí, y 0 si no lo son.

Si las superficies se aproximan mediante un número finito de parches planos, cada uno de los cuales se supone que tiene una radiosidad constante B i y una reflectividad ρ i , la ecuación anterior da la ecuación de radiosidad discreta,
donde F ij es el factor de visión geométrico para la radiación que sale de j y llega al parche i .
Esta ecuación se puede aplicar a cada parche. La ecuación es monocromática, por lo que la representación de la radiosidad del color requiere un cálculo para cada uno de los colores necesarios.
Métodos de solución
La ecuación se puede resolver formalmente como una ecuación matricial, para obtener la solución vectorial:
Esto proporciona directamente la solución completa de "rebote infinito" para B. Sin embargo, el número de cálculos para obtener la solución matricial aumenta proporcionalmente a n³ , donde n es el número de parches. Esto se vuelve prohibitivo para valores de n que son realmente grandes .
En cambio, la ecuación se puede resolver más fácilmente de forma iterativa, aplicando repetidamente la fórmula de actualización de rebote único mencionada anteriormente. Formalmente, esta es una solución de la ecuación matricial mediante la iteración de Jacobi . Dado que las reflectividades ρ i son menores que 1, este esquema converge rápidamente, requiriendo normalmente solo unas pocas iteraciones para producir una solución razonable. También se pueden utilizar otros métodos iterativos estándar para soluciones de ecuaciones matriciales, por ejemplo, el método de Gauss-Seidel , donde los valores actualizados para cada parche se utilizan en el cálculo tan pronto como se computan, en lugar de actualizarlos todos sincrónicamente al final de cada barrido. La solución también se puede ajustar para iterar sobre cada uno de los elementos emisores por turno en su bucle principal más externo para cada actualización, en lugar de sobre cada uno de los parches receptores. Esto se conoce como la variante de disparo del algoritmo, en contraposición a la variante de recolección . Utilizando la reciprocidad del factor de visión, A i F ij = A j F ji , la ecuación de actualización también se puede reescribir en términos del factor de visión F ji visto por cada parche emisor A j :
A esto se le conoce a veces como la formulación de "potencia", ya que ahora lo que se actualiza es la potencia total transmitida de cada elemento, en lugar de su radiosidad.
El factor de visión F ij puede calcularse de diversas maneras. Los primeros métodos empleaban un hemicubo (un cubo imaginario centrado en la primera superficie sobre la que se proyectaba la segunda, ideado por Michael F. Cohen y Donald P. Greenberg en 1985). La superficie del hemicubo se dividía en cuadrados similares a píxeles, para cada uno de los cuales se podía calcular fácilmente un factor de visión analíticamente. El factor de forma completo podía aproximarse sumando la contribución de cada uno de los cuadrados similares a píxeles. La proyección sobre el hemicubo, que podía adaptarse de los métodos estándar para determinar la visibilidad de los polígonos, también resolvía el problema de que las zonas intermedias ocultaran parcialmente las que se encontraban detrás.
Sin embargo, todo esto resultaba computacionalmente muy costoso, ya que idealmente los factores de forma deben derivarse para cada par posible de parches, lo que conlleva un aumento cuadrático en el cálculo a medida que aumenta el número de parches. Esto puede reducirse en cierta medida utilizando un árbol de partición de espacio binario para disminuir el tiempo empleado en determinar qué parches están completamente ocultos en escenas complejas; pero aun así, el tiempo empleado para determinar el factor de forma sigue siendo típicamente proporcional a n log n . Entre los nuevos métodos se incluye la integración adaptativa. [ 4 ]
Enfoques de muestreo
Los factores de forma F ij no son necesarios explícitamente en ninguna de las ecuaciones de actualización; ni para estimar la intensidad total Σ j F ij B j obtenida de toda la vista, ni para estimar cómo se distribuye la potencia A j B j radiada. En cambio, estas actualizaciones pueden estimarse mediante métodos de muestreo, sin necesidad de calcular explícitamente los factores de forma. Desde mediados de la década de 1990, estos métodos de muestreo han sido los más utilizados para los cálculos prácticos de radiosidad.
La intensidad captada se puede estimar generando un conjunto de muestras en el círculo unitario, proyectándolas sobre el hemisferio y determinando la radiosidad del elemento del que se habría originado un rayo incidente en esa dirección. La estimación de la intensidad total captada es, por lo tanto, simplemente el promedio de las radiosidades detectadas por cada rayo. De manera similar, en la formulación de potencia, esta se puede distribuir generando un conjunto de rayos desde el elemento radiante de la misma forma y repartiendo la potencia de manera equitativa entre cada elemento que impacta un rayo.
Esta es esencialmente la misma distribución que un programa de trazado de rayos muestrearía al retroceder un paso de reflexión difusa; o que un programa de trazado de rayos bidireccional muestrearía para lograr un paso de reflexión difusa hacia adelante al mapear la fuente de luz hacia adelante. Por lo tanto, el enfoque de muestreo representa, en cierta medida, una convergencia entre las dos técnicas, siendo la diferencia clave que la técnica de radiosidad busca construir un mapa suficientemente preciso de la radiancia de todas las superficies de la escena, en lugar de solo una representación de la vista actual.
Reducción del tiempo de cálculo
La radiosidad estática y precalculada puede visualizarse en tiempo real mediante mapas de luz utilizando técnicas de rasterización estándar .

Limitaciones
Los métodos de radiosidad típicos solo consideran trayectorias de luz de la forma LD*E, es decir, trayectorias que parten de una fuente de luz y realizan múltiples rebotes difusos antes de llegar al ojo. Si bien existen varios enfoques para integrar otros efectos de iluminación, como las reflexiones especulares [ 5 ] y brillantes [ 6 ] , los métodos basados en radiosidad generalmente no se utilizan para resolver la ecuación de renderizado completa.
La radiosidad básica también tiene problemas para resolver cambios repentinos en la visibilidad (por ejemplo, sombras de bordes definidos) porque la discretización gruesa y regular en elementos constantes por partes corresponde a un filtro de caja de paso bajo del dominio espacial. Mallado de discontinuidadUtiliza el conocimiento de los eventos de visibilidad para generar una discretización más inteligente.
Confusión sobre la terminología
Radiosity fue quizás el primer algoritmo de renderizado de uso generalizado que tuvo en cuenta la iluminación indirecta difusa. Los algoritmos de renderizado anteriores, como el trazado de rayos al estilo Whitted, eran capaces de calcular efectos como reflexiones, refracciones y sombras, pero a pesar de ser fenómenos altamente globales, estos efectos no se denominaban comúnmente " iluminación global ". En consecuencia, los términos " interreflexión difusa " y "radiosidad" se confundieron con "iluminación global" en el lenguaje popular. Sin embargo, los tres son conceptos distintos.
En el contexto de los gráficos por computadora, el método de radiosidad se deriva del método de radiosidad utilizado en la transferencia de calor (y es fundamentalmente el mismo) . En este contexto, la radiosidad es el flujo radiativo total (tanto reflejado como re-irradiado) que sale de una superficie; también se conoce como emitancia radiante . El cálculo de la radiosidad, en lugar de las temperaturas superficiales, es un aspecto clave del método de radiosidad que permite aplicar métodos matriciales lineales al problema.
Véase también
Referencias
- ↑ Dudka, Kamil. "RRV - Radiosity Renderer and Visualizer" . dudka.cz . Consultado el 1 de febrero de 2013 .
- ↑ "Cindy Goral, Kenneth E. Torrance, Donald P. Greenberg y B. Battaile, Modelado de la interacción de la luz entre superficies difusas ", Computer Graphics , vol. 18, n.º 3. ( PDF )
- ↑ Nishita, Tomoyuki ; Nakamae, Eihachiro (julio de 1985). "Representación tonal continua de objetos tridimensionales teniendo en cuenta las sombras y la interreflexión" . ACM SIGGRAPH Computer Graphics . 19 (3). Association for Computing Machinery: 23–30 . doi : 10.1145/325165.325169 . Recuperado el 17 de octubre de 2024 .
- ↑ G Walton, Cálculo de factores de visión obstruida mediante integración adaptativa , Informe NIST NISTIR-6925 , véase también https://view3d.sourceforge.net/
- ↑ Wallace, John R.; Cohen, Michael F.; Greenberg, Donald P. (agosto de 1987). "Una solución de dos pasadas a la ecuación de renderizado: una síntesis de los métodos de trazado de rayos y radiosidad". ACM SIGGRAPH Computer Graphics . 21 (4): 311– 320. doi : 10.1145/37402.37438 . ISSN 0097-8930 .
- ↑ "Agrupamiento para iluminación global brillante" . Archivado del original el 12 de octubre de 2006. Consultado el 29 de diciembre de 2006 .
Lecturas adicionales
- Descripción general de la radiosidad, de HyperGraph de SIGGRAPH, archivado el 27/09/2011 en Wayback Machine (proporciona el algoritmo de radiosidad de matriz completa y el algoritmo de radiosidad progresiva).
- Radiosidad, por Hugo Elias (también ofrece una visión general de los algoritmos de iluminación, junto con ejemplos de programación).
- Radiosidad, por Allen Martin (una explicación un poco más matemática de la radiosidad)
- ROVER, por el Dr. Tralvex Yeap (Biblioteca de Resúmenes y Bibliografía de Radiosidad)
- Radiosidad: Implementaciones básicas (Estudio básico de radiosidad)
Enlaces externos
- RADical, de Parag Chaudhuri (una implementación de una variante de disparo y clasificación del algoritmo de radiosidad progresiva con aceleración OpenGL, que extiende GLUTRAD de Colbeck).
- Renderizador y visualizador de radiosidad (implementación simple de un renderizador de radiosidad basado en OpenGL )
- Enlighten (Código de software con licencia que proporciona radiosidad en tiempo real para aplicaciones de videojuegos. Desarrollado por la empresa británica Geomerics ).
- Algoritmos de iluminación global
- Transferencia de calor
- Gráficos por computadora en 3D
- Método de elementos finitos