Un modelo de iluminación es el conjunto de cálculos que realiza el sistema de Ray Tracing para obtener el color concreto que le corresponde a un punto de intersección entre un rayo y un objeto.

Un modelo de iluminación normalmente utiliza como parámetros de entrada las características físicas de los materiales de los que están hechos los objetos, las luces presentes en la escena, y los mecanismos de interacción entre objetos y luces. Y aplica todos estos elementos en una ecuación que genera como salida un color concreto.

Este artículo presenta un sencillo modelo de iluminación, basado en el modelo de iluminación original propuesto por Whitted, con el que se popularizó el uso de la técnica de Ray Tracing.

Modelo de Iluminación

En el modelo de iluminación propuesto, el color de un punto de un objeto se calcula en base a la luz que recibe directamente dicho objeto procedente de las fuentes, la luz que le llega indirectamente resultante de la reflexión y refracción en otros objetos de la escena, y la luz que emite el propio objeto, según la siguiente expresión:

Color = Aportación de la Reflexión Difusa de la Luz Ambiental
+ Aportación de la Reflexión Difusa y Especular de las Fuentes sobre el Objeto
+ Aportación de la Reflexión Especular en otros Objetos
+ Aportación de la Transmisión Especular en otros Objetos
+ Aportación de la Luz Emitida por el propio Objeto

Es decir, el color de un punto es la suma de las distintas aportaciones de color resultantes de los fenómenos que se producen sobre él. En primer lugar, la reflexión difusa de la luz ambiental, que se supone constante en todos los puntos de la escena. En segundo lugar, el resultado de calcular las aportaciones consecuencia de los fenómenos de reflexión difusa y especular sobre el propio objeto. En tercer y cuarto lugar, las aportaciones debidas a los fenómenos de reflexión y transmisión especular que se producen en otros objetos, que provocan la llegada de luz de forma indirecta. Y por último, la intensidad de la luz que emite el propio objeto.

La expresión anterior puede reescribirse como una larga ecuación algebráica, de forma que para un punto Q dado, se obtenga la intensidad del color I en dicho punto:

I(Q) = ka * Ia * Ca

+ SUM{i:1..m}( faten(Q){i} *

( kd * Id{i} * (N · L{i}) * Cd
+ ks * Is{i} * (V · R{i})^n * Cs) )
+ kr * Ir
+ kt * It
+ Ce

Donde:

Ca: Aportación de Color del Objeto a la Reflexión Difusa de Luz Ambiental
Cd: Color Reflejado Difusamente por el Objeto
Cs: Color Reflejado Especularmente por el Objeto
Ce: Color Emitido por el Objetoka: Constante de Reflexión Difusa de Luz Ambiental del Objeto
kd: Constante de Reflexión Difusa del Objeto
ks: Constante de Reflexión Especular del Objeto
n: Factor de Atenuación de Reflexión Especular del Objeto
kr: Constante de Reflexión Especular Global del Objeto
kt: Constante de Transmisión Especular Global del ObjetoIa: Intensidad de la Luz Ambiental
Ir: Intensidad resultante de la Reflexión Especular en otros Objetos
It: Intensidad resultante de la Transmisión Especular en otros ObjetosN: Vector unitario Normal al Punto
V: Vector unitario que une el Punto con la Posición del Observador

m: Número de Luces presentes en la Escena

Id{i}: Color Difuso Emitido por la Fuente i
Is{i}: Color Especular Emitido por la Fuente i

faten(Q){i}: Factor de Atenuación de la Fuente i en el punto Q

L{i}: Vector unitario que une el Punto con la Posición de la Fuente i
R{i}: Vector unitario Dirección de Reflexión Especular

En las definiciones dadas, los términos color e intensidad se utilizan como sinónimos. Aunque prevalece el uso de la palabra color para referirse a la tonalidad de un objeto, porque se suele considerar una característica estática, y la palabra intensidad para referirse a la tonalidad de una fuente de luz, porque se suele considerar dinámica al variar con la distancia. En cualquier caso, no es más que una cuestión de nomenclatura, son simplemente tuplas RGBA.

Materiales

De la forma expuesta, caracterizar el comportamiento de la superficie de un objeto con respecto a la luz, requiere de al menos la introducción de 4 colores y 6 constantes. Para evitar la repetición de los mismos parámetros en objetos con las mismas propiedades, los valores se suelen agrupar en estructuras denominadas “materiales”. De forma que varios objetos pueden compartir un mismo material y se simplifica el sistema.

Aportación de la Luz Ambiental

La aportación de la luz ambiental al color de un punto de un objeto es el resultado de escalar el color reflejado difusamente de manera uniforme por el objeto por la intensidad de la luz ambiente:

ka * Ia * Ca

La constante ka es un valor entre 0 y 1, que puede tomar valor 0 por defecto. La intensidad de la luz ambiente Ia y el color Ca son tuplas RGBA, con valor (0, 0, 0, 0) por defecto.

Aportación de las Fuentes de Luz

Si entre el punto y las fuentes de luz no hay objetos que se interpongan, y el punto se encuentra en la dirección de emisión de las fuentes, entonces las fuentes aportan intensidad directamente al punto.

La intensidad total aportada es la suma de la intensidad aportada individualmente por cada fuente, considerando los fenómenos de reflexión difusa y especular que se producen sobre la superficie del objeto, como consecuencia de los rayos de luz incidentes:

SUM{i:1..m}( faten(Q){i} *

( kd * Id{i} * (N · L{i}) * Cd
+ ks * Is{i} * (V · R{i})^n * Cs) )

En la expresión se distinguen tres términos, uno por línea. El primer término es la función de atenuación de la intensidad de la fuente i, faten(Q){i}, que escala a la suma de los otros dos términos.

El segundo término es el aporte debido a la reflexión difusa sobre el objeto del rayo de luz proveniente de la fuente i. Las constantes escalan los colores difusos del objeto y la fuente, y los hacen proporcionales al coseno del ángulo que forman la normal N y el rayo incidente L{i}.

El tercer término es el aporte debido a la reflexión especular sobre el objeto del rayo de luz proveniente de la fuente i. Las constantes escalan los colores especulares del objeto y la fuente, y los hacen proporcionales al coseno del ángulo que forman la dirección V en la que se encuentra el observador respecto al punto, y la dirección del rayo reflejado especularmente R{i}. La constante n del exponente controla el brillo.

Aporte de las fuentes de luz

Nótese que la reflexión especular se hace depender de la posición del observador, por lo que los reflejos sobre las superficies, característicos de este tipo de fenómeno, dependerán de la posición desde la que se observe el objeto. Cuanto más parecidos sean V y R{i}, mayor será el coseno del ángulo que formen ambos, y mayor la aportación de la componente especular al resultado final.

Las constantes kd y ks son valores entre 0 y 1, la suma de ambos no debería superar la unidad, y pueden tomar valor 0 por defecto. La constante de reflexión especular n puede tomar un valor positivo mayor o igual que cero, con cero por defecto. Los colores Id{i}, Is{i}, Cd y Cs son tuplas RGBA, con valor (0, 0, 0, 0) por defecto.

Aportación de la Luz Procedente de Otros Objetos

La aportación de luz procedente de otros objetos se corresponde con el tercer y cuarto término de la ecuación de nuestro modelo de iluminación:

kr * Ir
kt * It

El primer término representa la aportación debida a la intensidad que llega desde la dirección de reflexión, y el segundo término la aportación debida a la intensidad que llega desde la dirección de transmisión. Es decir, cuando se estudia el color de un punto, no sólo se considera la interacción directa con las fuentes, sino que se analiza también la cantidad de luz que recibe el objeto proveniente de otros objetos. Esto es lo que permite representar superficies tales como espejos o cristales.

Para llevar a cabo el análisis de la reflexión, se parte del vector dirección que une el punto con el observador, y se traza un rayo en la dirección de reflexión especular de dicho vector. Es decir, en vez de partir de una fuente y trazar un rayo de luz para ver si al reflejarse alcanza al observador, se recorre el camino inverso. Se parte del observador y se busca la fuente.

Si el rayo reflejado alcanza un objeto se vuelve a empezar el proceso, aplicando el modelo en el nuevo punto y lanzando un nuevo rayo en la nueva dirección de reflexión especular. Y así sucesivamente, en un proceso claramente recursivo, hasta que la aportación de color no sea significativa. Esta técnica se conoce como traza de rayos hacia atrás, y se dedicará un artículo posterior completo para exponerla en mayor detalle.

Traza de Rayos

En la imagen puede verse como un rayo parte del observador, alcanza la esfera roja, que se supone reflectante, y se genera el rayo R1 en la dirección de reflexión especular. El rayo alcanza la esfera verde, que también se supone reflectante, y se genera el rayo R2 en la nueva dirección de reflexión especular. Como consecuencia de todo este proceso, el punto al que mira el observador no será completamente rojo, sino que estará teñido de verde.

El estudio que se realiza de la transmisión es idéntico al de reflexión, la única diferencia es que se sigue la dirección de transmisión especular en vez de la de reflexión.

Las constantes kr y kt escalan los valores de las intensidades, y pueden tomar valor 0 por defecto. En su definición reciben el calificativo de “globales” en la medida que al conjunto de fenómenos que rigen la intensidad aportada al objeto de forma indirecta se conoce como “iluminación global”, mientras que la aportada directamente por las fuentes de luz se conoce como “iluminación local”.

Las intensidades Ir e It son tuplas RGBA, y no toman valores por defecto, ya que son el resultado de evaluar la intensidad de la luz en la dirección de reflexión y transmisión.

Aportación de la Luz Emitida por el propio Objeto

Aunque no es frecuente, algunos objetos pueden llegar a emitir una luz propia. De forma general se considera que dicha luz es emitida de manera uniforme por toda la superficie, en todas las direcciones, con una intensidad constante. De manera que bajo tales circunstancias el cálculo de dicha aportación es simple, basta con añadir al color total resultante el color de la luz emitida por el objeto:

Ce

La intensidad de la luz emitida, Ce, es una tupla RGBA con valor (0, 0, 0, 0) por defecto.