Você está na página 1de 34

167 Ray Tracing

Capitulo 9

RAY TRACING

1. Conceptos generales sobre la luz

Todo lo que podemos ver a nuestro alrededor es consecuencia de un fenmeno denominado


luz. Sin luz ningn objeto podra ser visible. En el pasado, las propiedades de la luz fueron fuente
de admiracin y estimulo para la experimentacin. Su naturaleza a estado sujeta a gran
especulacin. En la poca de Newton, la mayora de los cientficos llevaban a cabo investigaciones
sobre sus propiedades y naturaleza. El mismo Newton obtuvo gran parte de su fama por sus
experimentos con la luz.

Debido a que la tcnica de Ray Tracing tuvo sus inicios sobre teoras fsicas de la luz es
bueno, adems de interesante, hablar un poco de la historia de la luz junto con sus investigadores y
aplicaciones que llegan hasta el desarrollo del laser. Durante la poca de Newton, y muchos anos
despus, existi un desacuerdo en cuanto si la luz era un torrente de corpsculos o una onda de
algn tipo. Newton fue un gran exponente de la teora corpuscular, y debido a su prestigio, muchos
otros se inclinaron hacia este punto de vista. En 1670, Christian Huygens, contemporneo de
Newton, fue capaz de explicar muchas de las propiedades de la luz al considerarla como una onda.
Ambas teoras tenan elementos a su favor. Fue solo hasta 1803, cuando Thomas Young presento
una evidencia que mostraba que los rayos de luz interferan entre si como las ondas de sonido, tal
como lo estableca la teora ondulatoria. Por aquella poca se midi la velocidad de la luz en el
agua. La velocidad observada fue menor en ella que en el aire. Esto contradeca la teora
corpuscular y apoyaba la teora ondulatoria. Por lo tanto, hacia 1965, cuando Maxwell encontr
tericamente que las ondas EM (ondas electromagnticas) viajaban a la velocidad de la luz, la idea
de las ondas de luz fue aceptada.

Por lo anterior, uno podra pensar que hacia 1900 la naturaleza de la luz era conocida. Sin
embargo, la gente sabia muy poco acerca de la emisin de luz por los tomos. No fue sino hacia
1913 cuando Bohr dio la primera interpretacin razonable y correcta sobre el mecanismo de la
emisin de luz. Sus conceptos sufrieron grandes modificaciones, y fue hasta alrededor de 1930
cuando puede decirse que la emisin de la luz fue en realidad comprendida. Adicionalmente,
Einstein mostr en 1905 que por lo menos una de las propiedades de la luz, el efecto fotoelctrico,
se explicaba al considerar que la luz acta como cuantos o partculas. Este concepto se difundi a
travs de los anos, por lo que actualmente se considera que la luz posee una especie de doble
personalidad, en parte ondulatoria y en parte corpuscular.

Es claro que el tema de la luz tiene una larga y variada historia cientfica, y ante todo muy
interesante. Historia que trae con sigo el surgimiento del Ray Tracing como una idea basada en la
fsica de la luz.

2. Introduccin al ray tracing

Uno de los mayores intereses que se tiene dentro del rea de la infografia es la creacin de

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


168 Ray Tracing
imgenes realistas partiendo de escenas tridimensionales. A este proceso se lo conoce con el
nombre de "rendering". Actualmente existen muchas tcnicas de rendering que permiten obtener
este tipo de imgenes con mayor o menor realismo. Entre estos algoritmos tenemos: algoritmos de
rastreo de lneas, algoritmos de subdivisin, algoritmos de muestreo aleatorio y algoritmos de
preprocesamiento.

En el texto usaremos la tcnica de Ray tracing que es uno de los mejores algoritmos de
rendering que existen actualmente, constituyndose al mismo tiempo en la de mayor difusin en los
ltimos anos gracias a los avances realizados en el campo de los microprocesadores. Ray Tracing
pertenece a los algoritmos de muestreo aleatorio debido a que cada pixel puede ser analizado por
separado independientemente de los dems pixeles. Es una tcnica que es sencilla en lo general,
pero es compleja en el detalle, recordemos aquella frase que dice: "en los detalles se esconde el
diablo".

La tcnica de Ray Tracing no constituye una versin modificada del algoritmo Z-buffer. El
proceso completo de generar la imagen funciona de una manera diferente. El propsito del
algoritmo de Ray Tracing es usar explcitamente la fsica de la luz para realizar la generacin de la
imagen. La imagen es generada basndose en las leyes de la luz y la ptica que han sido usadas por
anos en el rea de la geometra ptica para describir como los prismas, lentes y otros objetos
afectan el comportamiento de la luz. Por ejemplo, un primer uso que se le dio a la tcnica de Ray
Tracing dentro de la geometra ptica fue realizada por Rene Descartes en 1637, donde el trato de
explicar la forma particular que adquiere el arcoiris. De observaciones experimentales, que
involucraba un frasco de cristal esfrico, Descartes uso el trazado de rayos -Ray Tracing- como
base terica para poder explicar el fenmeno. Descartes uso las leyes de la reflexin y refraccin
para poder trazar los rayos a travs de una gota esfrica de agua.
7

(a)

desde el sol
42 lluvia

Observador

(b)

Fig. 1. (a) Ray Tracing a travs de una gota de agua. (b) Formacin del arcoiris.

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


169 Ray Tracing

Los rayos que entran una gota de agua esfrica son refractados inicialmente al momento de
atravesar el limite aire-agua, luego son reflejados en el limite agua-aire y finalmente son
refractados cuando emergen de la gota de agua. Como lo muestra la figura 1.a, los rayos que llegan
horizontalmente a la gota de agua, arriba del dimetro horizontal, emergen con ngulos
incrementados respecto del rayo incidente. Esto ocurre hasta un ngulo mximo momento en el
cual el rayo de salida es una funcin de la altura que tiene el rayo incidente respecto del dimetro
horizontal. Esta tendencia continua hasta que se llega a un rayo, que es cuando el comportamiento
de la luz se invierte y el ngulo entre el rayo incidente y de salida decrementa. Este rayo es
conocido como "el rayo de Descartes", que es donde el ngulo entre al rayo incidente y de salida es
42. Los rayos incidentes cerca del rayo de Descartes emergen cercanos a el. La figura 1.a muestra
la concentracin de rayos alrededor del rayo de salida de Descartes (rayo 7). Es precisamente esta
concentracin de rayos de salida lo que provoca la formacin del arcoiris. En la figura 1.b se
esquematiza la formacin del arcoiris. Los rayos que emergen a 42 grados formara un semicono
cuyo centro esta en el ojo del observador. Como pueden ver el arco superior es lo que llega a ver el
observador. Debido a este hecho cada persona tendr su propio arcoiris.

Claro esta que con la explicacin de Descartes podemos entender el porque de la forma del
arcoiris. Pero queda el aspecto mas importante de un arcoiris, su color caracterstico, o mejor dicho
el conjunto de colores que presenta. Tuvo que pasar varias dcadas para que Newton descubriera
que la luz blanca contiene todos los colores, es decir posee todas las longitudes de onda. Newton
uso el hecho de que el ndice de refraccin de cualquier material varia de acuerdo a la longitud de
onda de la luz, con lo que pudo fcilmente extender el modelo de Descartes. Aproximadamente a
los 42 es el mximo ngulo para la luz roja, a los 40 emergen los colores violeta. Ahora podemos
imaginar que
tendremos un conjunto de semiconos concntricos, uno por cada color, uno para cada longitud de
onda, cuyo centro se encuentra en el observador.

Continuando con nuestro anlisis, para poder comprender el algoritmo de Ray Tracing
primero analicemos cual es el comportamiento de la luz, para despus ver como podemos modelar
este comportamiento de la mejor manera posible. Con este propsito imaginemos una fuente de luz
desde la cual emergen infinitos rayos de luz. Cada uno de estos rayos se origina en la fuente de luz
y viaja en lnea recta hasta chocar con algn objeto. El objeto puede absorber la luz que recibe,
reflejarla o posiblemente permitir que parte de los rayos de luz pasen a travs del objeto tal como
sucede con los cristales.

Si furamos capaces de seguir cada rayo de luz desde la fuente de luz, rebotando en
distintos objetos de la escena, hasta llegar a nuestros ojos (o en nuestro caso hasta nuestra pantalla
de vdeo) podramos generar la imagen. Desafortunadamente, esta tcnica no es adecuada para
situaciones practicas. Esto se debe en primer lugar al hecho de que existen infinitos rayos que
emergen de la fuente de luz y seria imposible analizar cada uno de ellos (desde un punto de vista
computacional) dentro un intervalo razonable de tiempo. En segundo lugar, la mayora de los
infinitos rayos no llegaran a nuestros ojos (o a nuestra pantalla de vdeo) lo que provocara un
desperdicio de tiempo al tratar de analizar rayos de luz que ni siquiera llegamos a percibir, en otras
palabras, usted simplemente pierde el tiempo siguiendo rayos que desaparecen "en el no se donde"
y no ayudan en la generacin de la imagen.

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


170 Ray Tracing
Como se puede observar hacer el anlisis desde la fuente de luz es imposible desde
cualquier punto de vista. Pero este esquema puede ser modificado simplemente haciendo el anlisis
de una manera diferente. En vez de seguir el rayo desde la fuente de luz hasta nuestros ojos
(pantalla de vdeo), se puede rastrear el rayo de una manera inversa, es decir, desde nuestros ojos
hacia la escena donde se encuentran los objetos y las fuentes de luz.
De esta manera estamos garantizando que realizaremos una anlisis simplemente sobre los rayos
que llegan a nuestros ojos y no perderemos el tiempo analizando rayos que jamas llegaremos a
percibir.

A pesar de este ligera modificacin, la tcnica de Ray Tracing es uno de los algoritmos de
rendering mas lentos que existe dentro de la Infografia. Pero ahora usted se preguntara por que lo
estudiamos? La razn es que las imgenes generadas con esta tcnica pueden fcilmente incluir
muchos efectos pticos (reflexin, transparencia, sombras), as como tambin incluir mtodos de
anti-alias y animacin.

En la figura 2 podemos observar la pirmide que se forma cuando los rayos son originados
desde el ojo del observador. El rayo se analiza desde el ojo del observador, que pasa a travs de
cada uno de los pixeles de la pantalla, y viaja dentro los limites de la pirmide, donde se encuentra
una escena tridimensional modelada previamente.

Fig. 2. Pirmide que se forma al originar un rayo desde el ojo del observador.

La otra parte del problema, y que es fundamental dentro del algoritmo, es ver que sucede
cuando un rayo choca con uno de los objetos que se encuentran en la escena. El entendimiento de
esta parte es crucial ya que de esta interaccin se crearan las imgenes. Este problema lo
analizaremos en el resto del capitulo y lo implementaremos en el siguiente capitulo.

3. Algoritmos de rendering

Rendering es el termino empleado para referirse al proceso de llevar una especificacin


tridimensional, la cual puede ser una base de datos que representa objetos tridimensionales, a una
imagen de calidad fotogrfica bidimensional. A falta de un buen termino, en el texto usaremos el
termino "rendering". Como lo mencionamos anteriormente existen tres clases de tcnicas dentro del
proceso de rendering, las cuales las detallamos a continuacin:

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


171 Ray Tracing

Algoritmos de rastreo de lneas. Funcionan rellenando los pixeles uno despus del otro a lo
largo de una lnea horizontal de rastreo. Estos algoritmos presentan cierta eficiencia en los
clculos debido a que rehusan informacin de un pixel a otro a medida que avanzan en la lnea
de rastreo.
Algoritmos de subdivisin. Este tipo de algoritmos se basa en la divisin de los objetos en
piezas mas pequeas del tal manera que el proceso de rendering sea mas sencillo sobre cada
parte.
Algoritmos de muestreo aleatorio. Funcionan sobre cada punto o pixel de la pantalla de manera
independiente, lo que permite que diferentes regiones de la pantalla sean procesadas por
distintos procesadores o procesos.

Todas estas tcnicas pueden estar precedidas por un algoritmo de preprocesamiento, el cual
va a permitir mejorar el modelo con informacin adicional antes de pasar al proceso de rendering.

Indudablemente que Ray Tracing no es la nica tcnica de rendering que existe, por lo que
daremos una descripcin de otras tcnicas existentes actualmente, que por si solas constituyen el
tema de otro texto completo, por lo que nos limitaremos a dar una pequea introduccin.

3.1 Z-Buffer

Sabemos que la imagen que se encuentra en el monitor de una computadora esta


almacenada en una seccin de la memoria, denominada buffer de vdeo. Pero los buffers de vdeo
no estn limitados a almacenar imgenes. Estas grandes regiones de memoria mantienen un numero
para cada pixel de la pantalla de vdeo. La informacin que se almacena de cada pixel es por lo
general el color de ese pixel, pero tambin podramos almacenar otro tipo de informacin la cual
seria muy til en el proceso de rendering. El algoritmo Z-buffer, que es una variedad de los
algoritmos de rastreo de lneas, hace uso de este idea bsica.

Para que la tcnica pueda ser entendida, primero debemos sealar que la representacin de
los objetos se la realiza usando un sistema de coordenadas global de la mano izquierda. En este
sistema los objetos que estn mas lejos del observador tendrn una coordenada Z mucho mas
grande que aquellos objetos que se encuentran mas cerca. Es lgico pensar que aquellos objetos
que tengan una coordenada Z mas pequea sern los que podremos observar, los cuales ocultaran a
los objetos que estn por detrs con coordenadas Z mayores tal como se muestra en la figura 3.

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


172 Ray Tracing
x
Fig.3. El Z-buffer almacena la coordenada Z del objeto que esta mas cerca.

Z-buffer funciona en dos pasos fundamentales, los cuales podramos plantearlos como una
serie de preguntas. La computadora escoge un pixel de la pantalla y desea conocer si algo debera
ser dibujado en esa regin. Escoge un objeto de la escena y pregunta si el objeto es visible desde
ese pixel (usando el punto de vista actual). Si es visible, la computadora se pregunta si ese objeto es
el mas cercano al observador, o esta bloqueado por otro objeto de la escena. Si el objeto es visible y
al mismo tiempo es el que se encuentra mas cerca del observador, entonces la computadora
preguntara por el color del objeto (shading) en el punto o pixel que se esta analizando.

Una vez que se conoce la respuesta acerca del color (shading), se procede a iluminar el
pixel con el color encontrado (la informacin del color se almacena en la regin del buffer de vdeo
que esta asociada con el pixel). Despus se procede de igual manera con el siguiente pixel de la
lnea de rastreo y as con todos los pixeles de la pantalla. Una vez que se ha concluido con todos los
pixeles de la pantalla, se pasa al siguiente objeto de la escena, se retorna al pixel de la parte
superior izquierda de la pantalla, y se comienza nuevamente todo el proceso. El proceso debe
repetirse para cada uno de los objetos de la escena.

Ahora procedamos a explicar la razn de que el algoritmo reciba el nombre de Z-buffer. Un


buffer auxiliar puede ayudar a determinar si el objeto visible es el que se encuentra mas cerca del
observador (desde el punto de vista actual). Imagine que existen muchos objetos delante de usted,
colocados de forma aleatoria. Para que la imagen generada sea la mas precisa posible, aquellos
objetos que se encuentran mas cerca del ojo del observador deberan ser visibles; los objetos que se
encuentren detrs de estos no deberan aparecer en la imagen final, por supuesto todo esto
considerando que todos los objetos son slidos no transparentes. Si dos objetos se proyectan sobre
el mismo punto, el que se encuentre mas cerca del observador ser visible y por lo tanto el que
aparezca en la imagen que se vaya a generar. El nombre del algoritmo viene del hecho de usar el
buffer auxiliar para almacenar la coordenada Z del objeto que se encuentra mas cerca del
observador. De esta manera, dos objetos que se proyectan sobre el mismo punto, pero con
diferentes coordenadas Z, estarn a diferentes distancias del observador, lo que permite determinar
que el objeto visible es aquel que tiene la coordenada Z mas pequea.

El algoritmo Z-buffer primero selecciona un objeto y luego encuentra todos los puntos de
la pantalla donde es visible dicho objeto. No interesa en que orden los objetos son seleccionados, el
resultado final siempre ser el mismo, aunque las etapas intermedias difieran bastante.

Por lo tanto para poder generar la imagen es necesario de dos buffers. El primero es el
buffer de vdeo, el cual, como ya conocemos, mantiene informacin de los colores de cada pixel de
pantalla. Este buffer es inicializado con el color de fondo y contendr al final del proceso la imagen
generada.

El segundo buffer, conocido con el nombre de Z-buffer, no contiene ningn tipo de imagen,
sino que contiene la distancia desde el observados hasta los objetos que se encuentran mas cerca
del mencionado observador. Este buffer es inicializado con el mximo valor que pueda tener el eje
Z.

Usando el buffer auxiliar (Z-buffer) para almacenar la coordenada Z del objeto que se
encuentra mas cerca del observador podemos ver mas claramente el algoritmo. Lo primero que se
hace es escoger un objeto de la escena y proceder a realizar el rastreo a lo largo de la pantalla lnea

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


173 Ray Tracing
por lnea. Para cada pixel preguntamos si el objeto es visible desde el punto de vista actual. Si el
objeto no es visible, simplemente se procede a procesar el siguiente pixel. Pero si el objeto es
visible se debe saber si este es el que esta mas cerca del observador. Para poder conocer este hecho
hacemos uso del Z-buffer o buffer auxiliar de la siguiente manera: primero determinamos la
distancia del objeto al observador (su coordenada Z), despus procedemos a compararlo con el
valor correspondiente almacenado en el Z-buffer para poder saber si nuestro objeto esta mas cerca
del observador. Si el valor hallado es menor de aquel que esta almacenado en el Z-buffer, entonces
actualizamos el buffer con la nueva cantidad y encontramos el color (shading) correspondiente en
el buffer de vdeo ya que esto seria una indicacin de que el objeto esta mas cerca del observador.
Si el valor hallado es mayor de aquel almacenado en el Z-buffer, entonces nos estara indicando
que existe un objeto entre el observador y el objeto que estamos considerando. Es por esta razn
que el Z-buffer es inicializado al mximo valor de la coordenada Z, garantizando de esta manera
que la primera vez cualquier objeto sea elegido al realizar la comparacin. Este proceso se repite
para todos los pixeles de la pantalla.

El algoritmo Z-buffer permite generar imgenes de una manera rpida, pero no tan realista.
Esta falta de realismo se debe principalmente a la carencia de sombras y reflejos en el algoritmo
original. Aadir este tipo de efectos es muy complejo e incrementa el tiempo de procesamiento.

3.2 Radiosity

La segunda tcnica que analizaremos recibe el nombre de radiosity. A diferencia del


algoritmo Z-buffer y el de Ray Tracing, que lo analizaremos en detalle mas adelante, radiosity no
constituye un algoritmo de rendering. En realidad es una tcnica que permite mejorar los modelos
mediante la adicin de consideraciones acerca de las inter-reflexiones difusas. Como habamos
visto en el capitulo acerca de modelos de iluminacin y reflexin, la funcin BDRF puede
descomponerse en tres contribuciones: la contribucin especular, la difusa direccional y la difusa
ideal. La tcnica de Ray Tracing es adecuada para modelar la contribucin especular. Pero las
contribuciones difusas son difciles de modelar con esta tcnica y en particular las inter-reflexiones.

El color que llega a percibir el ojo humano desde cualquier objeto, es el resultado de la
interaccin del rayo de luz con la superficie de dicho objeto, llegando a depender de las
propiedades del objeto y del color del rayo de luz que choca con dicho objeto. Encontrar las
propiedades de los objetos no es nada difcil ya que ellas se encuentran implcitas al momento de
realizar la definicin de los objetos.

Ray Tracing es una tcnica poderosa para simular los efectos de la reflexin especular y la
transmisin, pero las reflexiones difusas no pueden manejarse de forma adecuada. Por ejemplo,
imagine que usted se encuentra dentro de una habitacin . Observara que las esquinas en el techo
de la habitacin estn menos iluminadas que el resto de las paredes, aun existiendo gran cantidad
de luz. Este efecto puede observarse de una manera mas apropiada cuando uno de los muros esta
pintado de un color obscuro (por ejemplo rojo intenso) y el otro de un color claro (por ejemplo,
blanco). En el punto donde convergen ambas paredes (la esquina), la pared roja estar un poco mas
iluminada y la pared blanca la percibiremos con un color rosa.

Este efecto es causado por las inter-reflexiones difusas. Considere la pared roja. La luz
choca sobre la pared y luego es reflejada, si la pared tuviera una superficie opaca, entonces existira
muy poca reflexin especular, pero por otro lado existira mucha reflexin difusa y es precisamente

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


174 Ray Tracing
esta reflexin difusa la que se percibe cuando se observa a la pared. Puesto que la pared es roja , los
rayos que son reflejados de una manera difusa tambin sern rojos. En la esquina, en el punto de
convergencia de las dos paredes, la pared blanca se encontrara cerca de la pared roja y llegara a
recibir estos rayos de luz roja que son reflejados difusamente por la pared roja. Esto provocara que
la pared blanca se tina de un cierto color rosa. Salta a primera vista que esto no es un efecto
especular.

Si intentsemos simular este efecto con Ray Tracing, lo que tendramos es un sistema
complejo y lento. El problema esta en que no conocemos de donde provienen los rayos reflejados
de una manera difusa, ya que estos pueden originarse desde cualquier punto y en todas las
direcciones, lo que ocasionara que tengamos que analizar muchos rayos de luz, simplemente para
saber si los objetos estn produciendo reflexiones difusas en la direccin del observador.

La pregunta esta entonces en como simular este efecto tan complejo. La solucin a este
problema se llama "radiosity". Esta tcnica de preprocesamiento esta basada sobre los principios
fsicos de la transferencia de energa. La idea bsica es la siguiente: se descompone el mundo en
muchas piezas pequeas, llamadas elementos, y despus se calcula la contribucin de luz reflejada
desde una pieza a otra. Pero el lector se preguntara en cuantas piezas debe descomponerse el
mundo. Desafortunadamente esta pregunta es difcil de responder.

El algoritmo dividir los polgonos(superficies) en un conjunto denso de polgonos mas


pequeos, que en conjunto tienen la misma forma que el polgono(superficie) original del cual
fueron obtenidos, pero con la ventaja de que ahora se puede analizar de manera individual
secciones mas pequeas del polgono. Una vez que se ha logrado dividir toda la escena en
secciones mas pequeas (llamados tambin elementos), se lleva a cabo el procesamiento de los
elementos, el cual se los realiza en dos pasos:

El primer paso involucra determinar cuanto de cada elemento es visto desde el resto de los
elementos. A esta cantidad se la conoce con el nombre de factor de forma, que constituye un
factor netamente geomtrico. Si por ejemplo se tiene dos elementos A y B, el factor de forma
ser la cantidad de superficie que puede ser vista desde el elemento A al elemento B y
viceversa. Si A y B estn bastante cerca y adems son paralelos, el factor de forma AB ser
cercano a 1 que indicara que la mayor parte de la luz que sale de la superficie A llegara al otro
elemento. Si A y B estn alejados o existe algn elemento entre ellos, entonces el factor de
forma ser aproximadamente 0. Ante otras direcciones y distancias, el factor de forma tomara
valores entre 0 y 1 indicando cuanto de B se puede ver desde A y viceversa. Si A y B estn
bastante cerca uno del otro, pero existe un tercer elemento C entre ellos, entonces el factor de
forma ser 0.
El segundo paso es balancear la energa absorbida y radiada por cada elemento. Esto se logra
calculando lo que se llama "radiosity", que es igual a la suma de la luz que es emitida por el
objeto (por supuesto si es que se trata de una fuente de luz) mas la luz que es reflejada.

Para que la idea de esta tcnica quede mas clara, describiremos un pequeo ejemplo.
Suponga que se tiene tres elementos rectangulares A, B y C los cuales se encuentran en un
determinado ambiente o escena tal como se muestra en la figura 4.

El elemento A es una fuente de luz (rectangular), B y C son elementos (como por ejemplo
paredes) constituidos de un material nada reflectante. Radiosity comenzara calculando el factor de
forma que esta relacionado con cada pareja de elementos: AB, AC y BC. El aspecto fundamental

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


175 Ray Tracing
que debemos considerar es que los factores de forma son simplemente valores que dependen de la
geometra y no tienen ninguna relacin con la iluminacin existente en el ambiente. Esto es una
gran ventaja ya que mientras los objetos no sean movidos de sus posiciones, los factores de forma
no variaran ante cambios que se realice en la iluminacin o posiciones que las fuentes de luz
puedan adoptar.

B
A

Fig. 4. Elementos de un entorno para la aplicacin de Radiosity.

Despus de calcular los factores de forma se procede a realizar un proceso de balanceo.


Primero se calcula el factor de emisin para cada elemento de la escena. Para nuestro ejemplo, el
nico elemento que tendr un factor de emisin ser A ya que es la nica fuente de luz. Luego se
procede a calcular el factor de reflectancia de cada elemento, que es la cantidad de luz incidente
que cada superficie refleja. La primera vez no se podr saber la luz incidente que cada elemento
esta recibiendo, por lo tanto se asumir que es cero. Por lo tanto, para nuestro ejemplo, el factor
radiosity para las superficies B y C es 0 porque la suma de la luz reflejada y emitida es 0. Para el
caso de A ser igual a su factor de emisin.

Ahora que se tiene una mejor idea de lo que es el factor radiosity de cada elemento (el cual
corresponde a la cantidad de luz que esta saliendo de cada elemento), se procede a encontrar cuanto
de esa luz esta chocando con los otros elementos. La cantidad de luz que esta llegando sobre B
desde A es igual al factor radiosity de A multiplicado por el factor de forma AB, el cual pondera la
luz dependiendo de la geometra relacionada con A y B. Luego se calcula la luz que llega a C desde
A, nuevamente tomando el factor radiosity de A y multiplicndolo por el factor de forma AC. Una
vez que se termina con la luz que sale de A, se procede a repetir el mismo proceso para encontrar la
cantidad de luz que sale de B y llega a A y C, y finalmente hallar la cantidad de luz que sale de C y
llega a A y B.

Una vez que se finaliza con este procedimiento, cada elemento tiene un nuevo valor para la
luz incidente en dicho elemento, construido a partir de factor radiosity de los otros elementos y los
factores de forma que los conectan. Despus se puede hallar un nuevo valor radiosity para cada
elemento; esto es la suma del la luz emitida (la cual no cambia) mas cualquier luz incidente que sea
reflejada. Cuando estos nuevos valores de radiosity son hallados, se puede calcular cuanto de la luz
que sale de A cae sobre B y C.

El hecho de dividir los objetos en elementos mas pequeos y el calcular los factores de
forma para cada combinacin pueden parecer, algo totalmente ineficiente y de nunca terminar, pero
en realidad las cosas tienden a mejorar a medida que se van realizando los clculos. Llega un punto
en que el calculo de la luz incidente sobre cada elemento no causara ningn cambio en su luz
reflejada; en efecto, todo funcionara correctamente si el sistema en su conjunto es consistente. En

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


176 Ray Tracing
este punto el sistema de elementos es descrito como balanceado, o se dice tambin que el sistema
es convergente (Volveremos sobre el tema de convergencia cuando entremos al capitulo sobre
fractales). Cuando el sistema converge, se tiene lo que se llama solucin: un valor para el factor
radiosity de cada elemento, que toma en cuenta la luz que proviene de otros elementos.

Uno de los aspectos que debemos sealar, y que es de mucha importancia, es el hecho que
el algoritmo Radiosity soluciona el problema de las inter-reflexiones, pero esto es proporcional al
tamao y numero de elementos en que son divididos los objetos de la escena.
Cuanto mayor sea el numero en que se divida los objetos de la escena, mayor ser el grado en que
se llegue a simular el efecto de las inter-reflexiones.

Todo esfuerzo tiene su recompensa y Radiosity no es la excepcin. La recompensa que


proporciona esta tcnica radica en que el calculo del factor de forma proporciona de manera
automtica los dos tipos de sombra: umbra y penumbra. De ah que Radiosity sea adecuado para
generar imgenes de interiores donde existen fuentes de luz del tipo fluorescentes. Ray Tracing, por
otro lado, tiene la particularidad de generar sombras del tipo umbra, adecuado para generar
imgenes de exteriores donde existen fuentes de luz que se encuentran en el infinito tal como el sol
(con infinito nos referimos a que estn muy lejos). Estos pequeos efectos de umbra y penumbra
pueden mejorar radicalmente el realismo de una imagen, proporcionando una excelente simulacin
de lo que ocurre en el mundo real.

En resumen, Radiosity aade al color que tiene cualquier objeto, un color extra que es el
resultado de las reflexiones entre los objetos y sobre todo de las inter-reflexiones que existen entre
objetos opacos.

4. Conceptos generales sobre ray tracing

Despus de haber revisado, de una manera general, los distintos mtodos de rendering que
existen, ahora procederemos a describir en detalle la tcnica de Ray Tracing.

La tcnica de Ray Tracing en sus inicios era considerada como una tcnica abismalmente
ineficiente y que nunca iba ha encontrar aplicacin alguna. Este tipo de conclusin se deba
principalmente a la inexistencia de equipos lo suficientemente rpidos para poder brindar una
plataforma adecuada para esta tcnica, la cual requiere de gran poder de calculo. Pero a medida que
la tecnologa de la microelectrnica fue avanzando, lo que antes pareca un sueno se converta en
una realidad permitiendo que la tcnica de Ray Tracing capturara la atencin de todos.

Las principales razones que hacen de esta tcnica algo atractivo para la generacin de
imgenes son:

La primera, y posiblemente la mas importante razn, es que los conceptos de Ray Tracing son
simples de ser entendidos por cualquier persona que esta interesada en dicha tcnica, y no
solamente por los cientficos dentro el rea de la Infografia.
En segundo lugar, los problemas de ineficiencia antes mencionados ya no son un problema.
Con el rendimiento y rapidez actual de las computadoras es posible utilizar esta tcnica.
Y por ultimo, es posible aadir muchos efectos visuales al algoritmo bsico de Ray Tracing.

El objetivo de la tcnica de Ray Tracing, como se sealo anteriormente, es la generacin de

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


177 Ray Tracing
imgenes de realismo fotogrfico (photorealism). Una de las principales ventajas de esta tcnica
sobre las dems tcnicas de rendering, es la simplicidad con la cual se pueden incorporar los
efectos de un espejo, sombra, superficies ocultas y reflexiones. La mayora de los efectos
mencionados se deben a que la tcnica de Ray Tracing hace uso del concepto de recursividad para
simular de la mejor manera el comportamiento de la luz.

El proceso completo de la generacin de cualquier imagen se la realiza en dos pasos


fundamentales:

1. Especificacin de los objetos que conforman la escena, y


2. El proceso de generacin de la imagen.

El primer paso puede ser llevado a cabo mediante un modelador, si as se desea, el cual va
ha permitir definir los objetos y fuentes de luz que conforman la escena o ambiente a partir de los
cuales se generara la imagen. Por lo tanto para poder usar cualquier tcnica de rendering se debe
empezar definiendo una escena tridimensional. Cada objeto tiene una posicin especifica dentro de
la escena junto con atributos que definen la forma y propiedades de la superficie como el color,
factores de reflexin, texturas, etc. La forma de los objetos siempre se la especifica en forma de
ecuaciones matemticas, las cuales determinaran la complejidad del objeto (complejidad de la
forma del objeto). Las fuentes de luz tienen, al igual que los objetos, una posicin especifica con
propiedades como el color y la intensidad. En modelos mas complejos tambin se podra incluir la
forma de la fuente de luz y la direccin en la cual esta iluminando, pero para mantener lo mas
entendible la tcnica de Ray Tracing a lo largo del texto supondremos que tenemos una fuente de
luz puntual (es decir que nuestra fuente de luz es un punto) la cual esta iluminando o emitiendo
rayos de luz en todas las direcciones.

Espejo Espejo

Fuente de luz

Plano de vista

Observador

Fig. 5. Interaccin de los rayos de luz con los objetos.

Una vez que se tiene la escena definida, se procede a especificar el "punto de vista". El
punto de vista especifica donde estar ubicado el ojo del observador, la direccin en la que se
encontrara observando, la orientacin y el campo de vista que se tendr. Estos elementos pueden
observarse en la figura 5. Todo este proceso, como lo mencionamos anteriormente, puede ser
simplificado con el uso de un modelador. Pero el uso de un modelador no es la nica solucin,
tambin se puede crear un lenguaje grfico, el cual permita especificar los objetos, fuentes de luz

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


178 Ray Tracing
y puntos de vista que estarn en la escena, a partir de los cuales se generara la imagen. Un ejemplo
de esta forma de crear escenas tridimensionales, por supuesto mucho mas complejas, lo podemos
encontrar en Internet: VRML (Virtual Reality Modeling Language) o Lenguaje de modelamiento
de Realidad Virtual. VRML es muy parecido al ya popular lenguaje de marcas HTML (HyperText
Markup Language) que es usado por la WWW y se espera (espero) que un futuro prximo llegue a
sustituirlo. VRML provee de un conjunto predefinido de primitivas (sentencias) a partir de la
cuales es posible formar otras mucho mas complejas que las primeras.

Despus de haber definido los objetos, fuentes de luz y puntos de vista, se pasa a la etapa
mas importante que es el de la generacin de la imagen propiamente dicha mediante la tcnica de
Ray Tracing. La generacin de la imagen se la realiza sobre un plano conocido con el nombre de
"plano de vista", el cual puede ser visto en la figura 5.

La imagen la obtenemos trazando rayos "hacia atrs" desde el ojo del observador hacia un
determinado punto de la escena, especficamente lo que se hace es generar un rayo desde el ojo del
observador hacia cada pixel de la pantalla. Si el rayo intersecta algn objeto en su travesa (por
supuesto, aquel que se encuentre mas cerca), entonces en el punto de interseccin se determina el
color que se llegara a percibir como resultado de la iluminacin directa. La iluminacin directa
(vase el capitulo sobre modelos de iluminacin y reflexin) es aquella que llega al objeto
directamente desde una fuente de luz y no como consecuencia del choque previo del rayo de luz
con otros objetos. Ahora si observamos cualquier objeto que tiene una superficie con caractersticas
reflectantes (y/o que sea ligeramente transparente), como por ejemplo los famosos adornos de
Navidad, lo que percibiremos no solo ser el color que tenga el objeto, sino que tambin llegaremos
a percibir el color de los objetos que se reflejan en su superficie. Por lo tanto, considerando las
caractersticas de la superficie del objeto, lo que llegamos a percibir es una combinacin de
contribuciones del color del objeto, del color de los objetos que se reflejan y el color de los objetos
que podemos ver a travs del objeto. Pero como podemos determinar el color de estos ltimos. La
respuesta a esta pregunta ya la tenemos. El problema original era determinar el color que se
perciba desde el ojo del observador cuando estaba mirando en una determinada direccin hacia la
escena, direccin en la cual se diriga el rayo. Cuando el objeto es reflectante, transparente o ambos
el problema de determinar estas contribuciones se reduce el problema original, solo que esta vez en
lugar de tener el ojo del observador como punto inicial, se tiene al punto de interseccin como
punto de partida, y la direccin del rayo se la considera de acuerdo a las caractersticas de la
superficie. Por lo tanto determinar el color para cada uno de estos rayos puede requerir a su vez del
trazado de otros rayos hasta un nivel preestablecido. Para determinar el color final del punto
original sobre el plano de vista, este conjunto de rayos debe ser trazado "hacia atrs" dentro de la
escena. El trazo o seguimiento de un determinado rayo finaliza cuando no existe mas objetos que
son intersectados o cuando el nivel de profundidad es tan grande que el color que se encuentre no
contribuir casi en nada en la imagen final. Todo esto sugiere la utilizacin de la recursividad para
poder simular los diversos efectos de reflejo y transparencia.

Un rayo se lo inicia en el ojo del observador y pasa (uno a la vez) por cada uno de los
puntos (pixeles) que definen el plano de vista. En el programa mas sencillo que podamos
desarrollar el rayo es trazado a travs del centro de cada pixel del plano de vista. Esto significa que
se realiza un muestreo de la escena en el espacio del objeto mediante rayos infinitamente delgados,
en otras palabras se esta realizando una discretizacion de la imagen. El proceso usa una coherencia
espacial nula (todos los rayos son trazados independientemente - so se usa informacin de los rayos
vecinos) y el muestreo provoca "aliasing".

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


179 Ray Tracing
5. Uso de la recusividad

Como lo mencionamos anteriormente, la recursividad es un elemento esencial para poder


simular objetos transparentes o con caractersticas de un espejo. Por lo tanto, podemos decir sin
lugar a dudas que Ray Tracing es un algoritmo absolutamente recursivo. La recursividad es til no
solo dentro de la tcnica de Ray Tracing, sino que tambin es un elemento indispensable para la
generacin de fractales, tal como lo veremos en el capitulo sobre Geometra Fractal.

Empecemos diciendo que la implementacon del algoritmo de Ray Tracing es dificil debido
a dos razones fundamentales:

Los clculos geomtrico - matemticos son muy elaborados y complejos para determinados
objetos.
El tiempo que tarda en generar una imagen es bastante largo, llegando a momentos a ser
proporcional al numero de objetos que se tienen especificados en la escena. Solo considere el
hecho de que ciertas imgenes se llegan a generar en das y funcionado sobre superordenadores
RISC.

Como ejemplo ilustrativo de la tcnica Ray Tracing considere la figura 6.

Rayo 1

Observador

Fig. 6. Implementacon recursiva de Ray Tracing.

El rayo 1 es trazado hacia atrs desde el ojo del observador a travs de un pixel de la
pantalla hacia un entorno que contiene esferas semitransparentes (una objeto semitransparente
presenta una superficie con caractersticas tanto reflectantes como del tipo transparente). El color
que llegara a percibir el ojo del observador a lo largo del rayo 1 ser el resultado de una anlisis de
su interseccin con la superficie del primer objeto que encuentre durante su travesa hacia el
interior de la escena. Como consecuencia del anlisis el color que se llegara a percibir es una
combinacin de tres contribuciones:

el color local debido a la iluminacin de la superficie por luz directa o ambiental.


una contribucin de color procedente de la reflexin de un rayo (rayo 2) en una direccin de

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


180 Ray Tracing
reflexin.
una contribucin de color procedente de la transmisin de un rayo (rayo 3) en una direccin
refractante.

Todos conocemos la frase de que una imagen vale por mil palabras, pero todo depende del
tipo de imagen que escojamos para sustituir a nuestras mil palabras. De igual manera podemos
decir que un algoritmo vale por mil palabras (esto solo es valido para los programadores), claro esta
si el algoritmo que escojamos es adecuado y mas claro que nuestras mil palabras. Por lo tanto
tratare de sustituir todo lo anteriormente dicho sobre Ray Tracing con un pequeo algoritmo que
muestre el funcionamiento de la tcnica. El programa completo lo desarrollaremos en el siguiente
capitulo, por supuesto basndonos en el algoritmo que se presenta a continuacin.

procedure RayTracer(origen,direccion:vector3D;profundidad:integer;var color:word)


{Parametros de entrada:
origen,direccion -> especifican el origen y la direccin del rayo que se esta
considerando.
profundidad -> nivel de recursividad que se desea.
Parametros de salida:
color -> color que se encontr.
}

var
punto_interseccion,direccion_reflejada,direccion_transparente:vector3D;
color_local,color_reflejado,color_transparente:word;
begin
{primero verificamos si el nivel de recursividad ya ha alcanzado el deseado}
if (profundidad>MAXPROFUNDIDAD) then
color:=BLACK
else
begin
{Intersectar el rayo con todos los objetos y encontrar el objeto
y el punto de interseccin mas cercano}
if (no existe interseccin) then
color:=BLACK
else {existe interseccin}
begin
color_local:={calcular el color local por iluminacin directa}
{Calcular la direccin del rayo reflejado}
RayTracer(punto_interseccion,direccion_reflejada,
profundidad+1,color_reflejado);
{Calcular la direccin del rayo que se transmite}
RayTracer(punto_interseccion,direccion_transparente.
profundidad+1,color_transparente);
color:={Combinar las tres contribuciones de color}
end;
end;
end;

Posiblemente este sorprendido, como todos cuando ven por primera vez el algoritmo, por la
simplicidad del algoritmo. Efectivamente, como lo mencionamos lneas anteriores, una de las
caractersticas fundamentales de Ray Tracing es su simplicidad y elegancia con que introduce los

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


181 Ray Tracing
efectos de cristal, reflejos y superficies ocultas. Trate de pensar donde estn estos efectos en el
algoritmo antes de continuar con la lectura.

El efecto de cristal se introduce con la segunda llamada recursiva y el reflejo se simula con
la primera llamada recursiva. La eliminacin de superficies ocultas es la recompensa que se gana
por el dificil calculo realizado para determinar cual es objeto mas cercano con que se intersecta el
rayo que sale del ojo del observador o en su defecto del punto de interseccin (para el caso de las
llamadas recurridas).

Del algoritmo podemos concluir que es necesario responder a cuatro preguntas propias del
algoritmo y una pregunta de implementaron:

Las primeras cuatro preguntas son:

Como se realiza el calculo de la interseccin del rayo con el objeto mas cercano.
Como se calcula la direccin del rayo reflejado.
Como se calcula la direccin del rayo que se transmite, y
Como se determina el color local debido a la iluminacin directa.

La pregunta de implementaron es:

Como podemos implementar este algoritmo considerando las caractersticas del hardware de
vdeo existentes.

Procederemos a responder a estas preguntas en el orden en que las formulamos, pudiendo


el lector saltar al punto que sea de su inters.

6. Interseccion de un rayo con objetos

Como lo mencionamos anteriormente, Ray Tracing requiere que los objetos sean
especificados mediante una o varias ecuaciones matemticas (en lo posible del tipo paramtrico).
Esto permitir hacer dos cosas: primero determinar la interseccin del rayo con el objeto y segundo
hallar la normal en el punto de interseccin necesario para poder aplicar nuestro modelo de
reflexin. Para los objetivos del texto se consideran a las esferas y los planos, adems de los
polgonos convexos.

6.1 Forma paramtrica de un rayo

Tal como lo sugiere el nombre "Ray Tracing" (trazo del rayo), el "rayo" es la base
fundamental de esta tcnica. Una rayo se diferencia de un vector, en que este ultimo tiene el origen
en el origen de coordenadas, en otras palabras un vector queda determinado con la especificacin
de un solo elemento del espacio vectorial, mientras que un rayo esta compuesto por dos vectores:
uno que especifica su direccin y otro que especifica su origen tal como se muestra en la figura 7.a
(para el caso bidimensional).

Por lo tanto si vamos a trabajar con rayos es necesario que lo expresemos de una manera

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


182 Ray Tracing
matemtica, para ello usaremos la forma paramtrica de un rayo. Sea Vo x o , y o y
Vd x d , y d dos vectores en el espacio bidimensional, tal como se muestra en la figura 7.a.
Dados los dos vectores debemos hallar la ecuacin del rayo. Si sumamos los dos vectores lo que
obtendremos es un tercer vector que se encontrara sobre el rayo, ahora si multiplicamos por un
escalar cualquiera t al vector direccin y sumamos el resultado con el vector origen, el vector
resultante tambin estar sobre el rayo en cuestin. Esto puede observarse en la figura 7.b. Si ahora
hacemos que t tome todos los valores posibles y repetimos la operacin anterior lo que
obtendremos es el rayo definido completamente. Matemticamente esto seria:

R Vo tVd
x, y x o , yo t xd , yd t R

que expresando de otra manera seria:

x xo t xd
y yo t yd

que es la forma paramtrica de un rayo.

y
vector origen Rayo

vector direccin

(a)

x o , yo t xd , yd

x o , yo

x d , yd

t xd , yd
x

(b)

Fig. 7. Forma Paramtrica de un rayo.

La extensin al espacio tridimensional es directa:

x, y, z x o , y o , zo t xd , y d , zd

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


183 Ray Tracing

que expresando de otra manera seria:

x xo t xd
y yo t yd
z zo t zd

Otro aspecto que debemos considerar en este punto es el hecho de que cuando se especifica
un rayo no siempre se lo hace mediante los vectores de direccin y de origen, sino mediante dos
puntos cualesquiera que pertenezcan al rayo. Por ejemplo si tenemos dos puntos V1 x1 , y1 , z1 y
V2 x 2 , y 2 , z2 en el espacio tridimensional, se pide hallar el rayo que pasa por estos puntos. La
solucin es bastante sencilla: a partir de los dos puntos determinar los dos vectores que se requieren
para especificar un rayo. Primero escogemos cualquiera de los puntos y hacemos que sea el vector

origen, por ejemplo Vo x1 , y1 , z1 . Una vez que tenemos el vector origen determinado, se
determina el vector direccin realizando la diferencia entre el segundo punto y el que hemos

escogido como origen, por ejemplo Vd x 2 x1 , y 2 y1 , z2 z1 . esto se muestra en la figura 8.

x , y , z
1 1 1 x 2 , y2 , z2

Fig. 8. Rayo en el espacio.

Debe tenerse cuidado de escoger el punto que ser el vector origen, ya que un error en esta
parte puede ocasionar errores al momento de implementar el algoritmo de Ray Tracing, de igual
manera debe tenerse cuidado en hallar el vector direccin. Siempre escoja la posicin donde se
encuentra el ojo del observador como vector origen. Retornaremos sobre este problema cuando
estemos respondiendo a la pregunta sobre la implementaron. Finalmente debemos mencionar que el
vector direccin debe ser un vector unitario (con norma igual a 1). En el caso que no lo sea se
procede a realizar la siguiente operacin:

x , yd , zd
Vd
d

Vd

donde,

Vd xd 2 yd 2 zd 2

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


184 Ray Tracing

6.2 Interseccin entre un rayo y una esfera

El primero objeto que consideraremos es la esfera. Una esfera queda completamente


definida mediante su centro x c , y c , zc y su radio R. La ecuacin de la esfera viene dada por la
siguiente expresin:

x x y y z z
c
2
c
2
c
2
R2

Primero procedamos a deducir una formula que nos permita hallar el punto de interseccin,
si es que esta existe, entre un rayo y una esfera. Para esto sustituimos la ecuacin paramtrica de un
rayo en la ecuacin de la esfera y despejamos t. Una vez que tengamos despejado el valor de t
podremos determinar si existe realmente la interseccin y despus, si es que existe la interseccin,
determinar el punto sobre la recta donde ocurre esta.

Procedamos a sustituir la ecuacin del rayo:

x xo txd
y yo tyd
z zo tzd

en la ecuacin de la esfera, con lo que se tiene:

x o txd xc yo tyd yc zo tzd zc R 2


2 2 2

tx x
x c ty d y o y c tzd zo z c
2 2 2
d o R2
tx 2tx x x x x ty 2ty y y y y
d
2
d o c o c
2
d
2
d o c o c
2

tz 2tz z z z z R
2 2 2
d d o c o c

t x t y t z 2tx x x 2ty y y 2tz z z


2
d
2 2
d
2 2
d
2
d o c d o c d o c

x x y y z z R
2 2 2 2
o c o c o c

x y z t 2 x x x 2 y y y 2 z z z t
d
2
d
2
d
2 2
d o c d o c d o c

x x y y z z R 0
2 2 2 2
o c o c o c

Esta ultima expresin constituye una ecuacin de segundo grado y la podemos escribir de
la siguiente manera:

A xd 2 yd 2 zd 2
B 2 xd xo x c 2 yd yo yc 2 zd zo zc
C xo xd yo yd zo zd R 2
2 2 2

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


185 Ray Tracing
de donde se tiene:

At 2 Bt C 0

Solucionando esta ecuacin de segundo grado se tiene>


B B 2 4 AC
t1
2A

B B 2 4 AC
t2
2A

NOTA.- Si se ha escogido el vector direccin del rayo con un modulo igual a uno entonces el valor
de A ser igual a uno y las ecuaciones anteriores se simplificaran.

La cantidad B 2 4 AC recibe el nombre de discriminante. De acuerdo al valor que tome


el discriminante se pueden dar los siguientes casos:

Si el discriminante es negativo, lo cual denotara races imaginarias, entonces el rayo nunca se


intersecta con la esfera. Con lo cual el anlisis finaliza.
Si el discriminante es igual a cero, entonces el rayo intersecta a la esfera en un solo punto. Esto
significa que el rayo pasa tangencialmente a la esfera, intersectando la misma en un solo punto.
Si el discriminante es mayor que cero, entonces el rayo intersecta a la esfera en dos puntos. Es
decir, el rayo penetra en la esfera por un extremo y sale por el extremo opuesto.

El calculo continua solo para los dos ltimos casos. Una vez que se tiene el valor del
discriminante se procede a encontrar el valor del parmetro t. En este punto es bueno hacer un alto
para analizar e interpretar el valor de t. Este anlisis servir para cualquier tipo de objeto.
Recordemos que el rayo se lo expresa usando dos vectores: el vector origen que debe especificar la
posicin del ojo del observador y el vector direccin que determina la direccin en la cual el
observador esta mirando. Si consideramos la ecuacin paramtrica del rayo, el valor del parmetro
t nos indicara la posicin sobre el rayo en la que nos encontramos. Esto puede verse en la figura 9.
Si el valor de t<0 significa que nos encontramos por detrs del ojo del observador. Si t=0, entonces
nos encontramos exactamente en el ojo del observador. Y finalmente si t>0, nos encontraremos
delante del ojo del observador.

t>0

t=0 Direccin en la mira el observador

t<0
x o , yo , zo

Fig. 9. Valor del parmetro t respecto al ojo del observador ubicado en x o , yo , zo .

Por lo tanto al encontrar el valor del parmetro t tambin se pueden dar tres casos:

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


186 Ray Tracing
t<0. Este significa que la interseccin ocurre detrs del ojo del observador, lo cual no puede
darse. No se considera este caso.
t=0. Esto implica que el objeto esta en el mismo lugar del ojo del observador y como dos
objetos no pueden ocupar el mismo espacio, no consideramos este caso.
t>0. Esto significa que la interseccin ocurre delante del ojo del observador. Este es el nico
caso que se considera.

Solo si se da el ultimo caso podemos continuar con el anlisis. Con el valor de t conocido,
este puede ser sustituido en la ecuacin del rayo para poder encontrar las coordenadas del punto de
interseccin P, en otras palabras el punto de interseccin entre el rayo y la esfera.

Una vez que se tiene establecido el punto de interseccin, el siguiente paso que se debe
llevar a cabo es la determinacin de la normal en el punto de interseccin. La normal es un vector
que tiene la caracterstica de ser perpendicular a algn punto de la superficie. Para el caso de la
esfera la determinacin de la normal es un proceso bastante sencillo. Observe la figura 10.

Radio

Rayo desde el ojo de observador


P

Punto de Centro de la
Interseccin esfera

x P , yP , zP x , y , z
c c c

Fig. 10. Determinacin de la Normal en el punto de interseccin.

De la figura podemos concluir que el vector normal a la esfera se forma entre el punto de
interseccin y el centro de la esfera. Para obtener el vector lo nico que se debe hacer la resta entre
el vector que define el punto de interseccin y el vector que define el centro de la esfera. Es muy
importante que la resta se lo realice en este orden, ya que si se lo hace a la inversa implicara que el
vector normal tiene la direccin hacia el centro de la esfera, lo que afectara al proceso de
iluminacin. Un aspecto adicional que debemos mencionar es que el nico inters que tenemos es
en la direccin del vector normal, por lo que una vez que tengamos el vector lo normalizamos con
el objetivo de reducir los clculos posteriores. Expresando lo anterior matemticamente se tiene los
siguiente:

x , y P , z P xc , yc , zc
x N , yN , zN
P

Se divide entre R para normalizar, esto debido a que la norma del vector resultante de la diferencia
coincide con el radio de la esfera.

Con esto se tiene los dos elementos esenciales para aplicar la iluminacin: el punto de
interseccin, si es que este existe, y la direccin del vector normal a la superficie en el punto de

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


187 Ray Tracing
interseccin. Como habr podido apreciar, solo fueron necesarios la especificacin del rayo (su
origen y su direccin) y de la esfera (su posicin y su radio) para determinar la interseccin entre el
rayo y la esfera.

6.3 Interseccin entre un rayo y el plano

El plano es un objeto geomtrico que divide el espacio en dos partes. El plano, a diferencia
de la esfera, se extiende hasta el infinito, es decir, es un objeto ilimitado. Un plano puede ser
determinado mediante la siguiente relacin matemtica:

Ax By Cz D 0

En total cuatro nmeros definen un plano A, B, C y D. Los primeros tres nmeros de dichos
nmeros (A,B,C) definen un vector que es normal a la superficie del plano. El factor D en la
ecuacin anterior define la distancia del plano desde el origen de coordenadas (0,0,0).

Para poder hallar la interseccin entre el rayo y el plano, procedemos de la misma manera
que para el caso de la esfera, reemplazando la ecuacin paramtrica del rayo en la ecuacin general
del plano.

Atx d x o Btyd y o Ctzd zo D 0

de donde es fcil obtener el siguiente resultado:

Ax o By o Czo D
t
Ax d By d Czd

De acuerdo al denominador de la expresin anterior se puede presentar los siguientes


casos:

Si el denominado de la ecuacin es igual a 0, el rayo y el plano son paralelos. En otras palabras,


pertenecen al mismo plano y no ocurrir interseccin alguna. El anlisis puede detenerse en
este punto.
Si el denominado de la ecuacin es distinto de 0, significa que existe un punto de interseccin
entre el rayo y la esfera, por lo que continuamos con el anlisis. La normal al plano esta
apuntando en la misma direccin que el rayo y puede ser que tenga que ser invertido para
posterior uso.

La solucin a esta ecuacin, el parmetro t, se puede calcular de manera directa puesto que
se trata de una ecuacin lineal, en la cual se conoce todas la variables: A, B, C y D definen el plano,
en tanto que x d , y d , z d , x o , y o y z o definen el rayo. Una vez que se tiene el parmetro t se
pueden dar los siguientes casos:

t<0. Este significa que la interseccin ocurre detrs del ojo del observador, lo cual no puede
darse. No se considera este caso.
t=0. Esto implica que el objeto esta en el mismo lugar del ojo del observador y como dos

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


188 Ray Tracing
objetos no pueden ocupar el mismo espacio, no consideramos este caso.
t>0. Esto significa que la interseccin ocurre delante del ojo del observador. Este es el nico
caso que se considera.

El punto de interseccin es calculado sustituyendo el valor de t en la ecuacin del rayo.


Como se menciono anteriormente, el vector normal al plano puede no estar apuntando en la
direccin correcta. Usualmente lo que se quiere es que el vector normal apunte hacia el origen del
rayo. Esta condicin es indicada cuando el denominador de la ecuacin anterior es mayor que 0. Si
es necesario invertir el vector normal lo nico que se debe hacer es multiplicar por el escalar -1.

6.4 Interseccin entre un rayo y cualquier superficie cuadrtica

La formula cuadrtica general que describe la familia de superficies cuadrticas esta dada
por:

Ax 2 By 2 Cz 2 Dxy Exz Fyz Gx Hy Iz J 0

Esta formula implica todas las posibles superficies cuadrticas, en todas la posibles
posiciones en el espacio y en todas las posibles orientaciones que pueden ser definidos con solo
diez nmeros.

Para hallar una formula general que nos permita encontrar el punto de interseccin entre el
rayo y la superficie cuadrtica, se procede de la misma manera que para la esfera y el plano. Se
sustituye la ecuacin paramtrica del rayo en la ecuacin cuadrtica general. Como resultado se
obtiene:

Ac t 2 Bc t Cc 0

donde:

Ac Ax d2 By d2 Cz d2 Dx d y d Ex d zd Fy d zd
Bc 2 Axo xd 2 Byo yd 2Czo zd Dxo yd Dyo xd Exo zd Ezo xd
Fyo zd Fzo yd Gxd Hyd Izd
Cc Ax o2 By o2 Czo2 Dx o y o Ex o z o Fy o zo Gx o Hy o Izo J

Usamos el discriminante Bc2 4 Ac Cc para determinar si existe alguna interseccin. Si este


valor es menor que cero, entonces no existir interseccin alguna entre el rayo y la superficie
cuadrtica por lo que el anlisis puede detenerse en este punto. Para el caso que sea mayor o igual
que cero, existir interseccin por lo que ser necesario calcular el valor correspondiente del
parmetro t. Si es que el discriminante es igual a cero, solo existir un valor para t. Pero para el
caso en que sea mayor que cero, existirn dos valores t1 y t 2 .

Bc Bc2 4 Ac Cc
t1
2 Ac

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


189 Ray Tracing

Bc Bc2 4 Ac Cc
t2
2 Ac

De entre los dos parmetros encontrados debe escogerse aquel que sea mayor que cero,
pero menor que el otro. Con esto garantizamos, primero, que la interseccin ocurre delante del
observador (mayor que cero) y segundo que dicha interseccin es la mas cercana al observador
(escoger el menor de entre los parmetros)..

Una vez que se obtiene el valor del parmetro t, si es que se obtiene de acuerdo a las
condiciones anteriores, se procede a determinar el punto de interseccin. Esto, como para el caso
de la esfera y el plano, se logra sustituyendo el valor del parmetro en la ecuacin paramtrica del
rayo.

Con el valor del punto de interseccin, se calcula el vector normal. Recordemos que el
vector normal es fundamental para el proceso de Iluminacin y generacin de la imagen final. Las
frmulas generales para el calculo del vector normal son:

N x 2 Ax Dy Ez G
N y 2 By Dx Fz H
N z 2Cz Ex Fy I

Para finalizar este punto, a manera de observacin, es necesario sealar que el calculo de la
normal, para cualquier de los casos mencionados y los no mencionados, producir un vector que no
esta normalizado. Por lo tanto es muy importante que antes de proceder con los clculos se realiza
una normalizacin de dicho vector para obtener el vector unitario correspondiente. De igual
manera, se debe controlar la direccin del vector, el cual debe estar apuntando siempre hacia el
observador. Un calculo muy til que puede ser llevado a cabo para garantizar este ultimo punto es
el siguiente: Si el producto punto del vector normal (unitario) y el vector de direccin del rayo
(unitario) es mayor que cero, entonces el vector normal deber ser negado para que apunte en la
direccin correcta.

7. Reflexin y refraccin de la luz

Para poder continuar se har algunas consideraciones sobre la reflexin y refraccin de la


luz.

7.1 Reflexin de la luz

Considere la figura 11. El ngulo de incidencia es el ngulo entre el rayo incidente y la


normal a la superficie reflejante, en el punto de incidencia. El ngulo de reflexin es el ngulo
entre el rayo reflejado y la normal a la superficie. En la reflexin especular (Vase el capitulo sobre
modelos de iluminacin y reflexin), o tambin conocido con el nombre de espejo, se cumple:

(1) El rayo incidente, el rayo reflejado y la normal a la superficie se encuentran en el mismo plano.

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


190 Ray Tracing
(2) El ngulo de incidencia es igual al ngulo de reflexin.

En los espejos planos se forman imgenes derechas del mismo tamao del objeto, y a la
misma distancia por detrs (simtricas) de la superficie reflejante que a la que se encuentra el
objeto colocado frente a la superficie. Las imgenes son virtuales, es decir, la imagen no puede
captarse en un pantalla porque la luz no converge en la posicin de la imagen.

Angulo de incidencia N Angulo de reflexin

Rayo Rayo reflejado


incidente

Fig. 11. Reflexin de la luz.

7.2 Refraccin de la luz

La velocidad de la luz varia de un material a otro. La luz viaja mas rpido en el vaco,
c
donde su rapidez es de c 2.998 108 m/s. Su rapidez en el aire es . En el agua su rapidez
10003
.
c c
es , y en el vidrio ordinario es aproximadamente .
1.33 15
.

El ndice de refraccin ( ) absoluto de un material se define por:

rapidez _ de _ la _ luz _ en _ el _ vacio c



rapidez _ de _ la _ luz _ en _ el _ material v

donde v es la rapidez de la luz en el material.

Algunas veces se utiliza el ndice relativo de refraccin de un material , A, con relacin a


otro material, B.

A
indice _ relativo
B

donde A y B son los ndices de refraccin absoluta de los dos materiales.

Otra interesante ley, que nos ser til para responder como se transmite un rayo de luz a
travs de un material, es la conocida Ley de Snell. Considrese que pasa de un medio A a otro
medio B, como se muestra en la figura 12. Si el B A , el rayo se refractara (inclinara) hacia la

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


191 Ray Tracing
normal N cuando entra al medio B. Si B A , el rayo se deflectara alejndose de la normal
cuando entra al medio B. En cada caso, los rayos incidente, refractado y la normal caern todos en
el mismo plano.

Si se define el ngulo de incidencia, i, y el ngulo de refraccin, r, como se muestra en la


figura 12; entonces, la ley de Snell establece que

A sen i B sen r

O, si se llama a A 1 , i 1 , B 2 y r 2 , se tiene

1 sen 1 2 sen 2

y esta forma de la ecuacin muestra que no se establece diferencia respecto a que material es el que
se llama material 1 y cual se llama material 2. Como resultado se tiene un rayo de luz desviado a lo
largo de la misma trayectoria, cuando su trayectoria es la inversa.

Medio A
Medio B r

Fig. 12. Ley de Snell.

Ahora, supngase que un rayo de luz pasa de un material de alto ndice de refraccin, y
penetra en otro con bajo ndice, como se muestra en la figura 13.

2
Refractado
2

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


1
192 Ray Tracing

Reflejado

Fig. 13. Ley de Snell.

Parte del rayo incidente se refracta y parte se refleja en la entre cara. Dado que 2 debe ser
mayor que 1 , es posible hacer 1 lo suficientemente grande para que 2 90 o . Este valor para
1 se llama ngulo critico. Para 1 mayor que esto no puede existir ningn rayo refractado, toda la
luz se refleja. Esta propiedad en la cual todo el rayo se refleja recibe el nombre de reflexin interna
total y tiene grandes aplicaciones en la comunicacin de datos para la fabricacin de la fibra ptica.

La condicin para la reflexin interna total es que 1 exceda el ngulo critico c dado por

1 sen c 2 sen 90 o

sen c 2
1

Dado que el seno de un ngulo nunca puede ser mayor que la unidad, esta relacin
confirma que la reflexin total solo puede ocurrir si 1 2 .

7.3 Calculo de la direccin del rayo reflejado

En la vida cotidiana observamos una gran variedad de objetos que tiene una caracterstica
comn: Reflejan todo lo que se ponga en su frente. El ejemplo mas sencillo es el espejo. Simular
este efecto, en un principio, puede parecer algo difcil de realizar, pero la tcnica de Ray Tracing lo
realiza de una manera sencilla y elegante haciendo uso de la recursividad.

Como dijimos anteriormente y lo recordamos en este punto, Ray Tracing inspecciona los
rayos de luz de una manera inversa, es decir desde el ojo del observador en vez que desde la fuente
de luz, esto con el objetivo de evitar el tener que analizar rayos que nunca llega a percibir el ojo del
observador. Ahora bien, cuando el rayo que sale del ojo del observador (que en realidad es
proveniente de la fuente de luz, producto de su choque con los objetos) choca con algn objeto que
tiene las caractersticas de un espejo, entonces significa que ese rayo fue la consecuencia de un otro
rayo que choco con el objeto y se reflejo hasta llegar al ojo del observador tal como se muestra en
la figura 14.

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


193 Ray Tracing
Espejo

Fig. 14. Choque de un rayo con un espejo.

Si estamos inspeccionado los rayos de luz de una manera inversa (o hacia atrs),
lo haremos tambin con el rayo previo al que sale del (en realidad que llega al) ojo del observador.
En el ejemplo corresponde al rayo R. El objetivo de analizar dicho rayo es determinar que color
esta llegando al objeto desde dicho rayo. Puesto que este objetivo es el mismo que para el rayo que
sale del ojo del observador, se procede a realizar una llamada recursiva. A la vuelta de la llamada
recursiva se obtendr el color del objeto reflejado el cual deber ser combinado con el color local
del objeto (y con el color de transparencia , si es que este existe). La ponderacin del color local
decaer cuanto mas pulido este el objeto. Otro punto que se debe sealar es que el seguimiento
(hacia atrs) del rayo, puede continuar hasta cualquier nivel preestablecido de llamadas recurridas
dependiendo de la precisin que se requiera.

En los pasos anteriores procedimos a encontrar el punto de interseccin y la normal. Si el


objeto presenta caractersticas de un espejo, entonces usando dichos valores, en especial el de la
normal, procedemos a calcular la direccin del vector que se refleja. Para el ejemplo la direccin
del vector R.

Para que sea mas clara la exposicin se usara vectores en dos dimensiones. Sea los vectores
V y N, tal como se muestra en la figura 15.

V R

R2 R2

-R1 R1

Fig. 15. Construccin del vector de reflexin R.

V es el vector que proviene del ojo del observador (para el caso del primer nivel de
recursividad), N es la normal en el punto de interseccin entre el rayo y el objeto y R es el vector
que nos interesa calcular (el vector reflejado).

De la figura se puede ver que:

R R1 R2
R1 V R2

por lo tanto:

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


194 Ray Tracing
R 2 R2 V

pero:

R2 ( N V ) N

por lo tanto:

R 2( N V ) N L

La extensin a tres dimensiones es directa.

7.4 Calculo de la direccin del rayo que se transmite

Otro de los mecanismo de transporte de la luz que examinaremos en este punto es la


transmisin especular, que es un fenmeno en donde la luz que llega a un punto sobre la superficie
de un objeto pasa a travs del objeto. Para que esto suceda, como es lgico, el objeto no debe ser
opaco a la luz. Es decir, debe ser transparente a la luz para que esta pueda viajar a travs del objeto
cuando el observador ve a travs de algn objeto transparente.

Algo que tenemos que tomar muy en cuenta es que cuando el rayo de luz atraviese a travs
del objeto, sufrir cambios en la direccin. A este fenmeno se lo conoce como "refraccin" y es
observado cuando el rayo de luz pasa de un medio de una determinada densidad a otro de diferente
densidad, tal como lo mencionamos lneas mas arriba. Esto se debe a que la luz tiene la propiedad
de cambiar su velocidad ante cambios en la densidad del medio sobre el que se desplaza. El grado
de desviacin esta relacionado con el grado de diferencia en la densidad de los dos medios.

Para poder describir la refraccin matemticamente, es necesario asignar a cada medio un


"ndice de refraccin" (IDR). El ndice de refraccin mide la velocidad de la luz a travs del medio
en relacin con la velocidad a travs del espacio vaco. El aire tiene aproximadamente un ndice de
refraccin de 1.

Usando la Ley de Snell podemos calcular la direccin del vector que se transmite de la
siguiente manera (considere la figura 13):

sen 2
21
sen 2 2


T 21V 21C 1 21 2 C 2 1 N
donde

C V N

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


195 Ray Tracing
8. Determinacin del color local

Es hora de responder a nuestra cuarta pregunta sobre como determinar el color local debido
a la iluminacin directa. Para ello usaremos lo que se vio en el capitulo sobre los Modelos de
Iluminacin y Reflexin, y aunque habr alguna redundancia en esta seccin, servir para poder
aclarar lo conceptos.

Recordemos que en las secciones anteriores se discutieron los siguientes puntos:

Geometra de la vista, que nos permite controlar que es que lo que va ha ser visible desde el
observador.
Generacin del rayo desde el ojo del observador, que usa la geometra de la vista para construir
rayos que se originan en la posicin del ojo del observador y que atraviesan el plano de la vista
y se introduce en el espacio tridimensional.
Intersecciones rayo/objeto, que nos permite determinar con que objetos se intersecta el rayo
que surge en el ojo del observador.

La pieza final que nos falta por completar, y que al mismo tiempo es la mas importante, es
el proceso de dar color a la escena, mas conocido con el nombre de "shading". Shading es el
proceso por el cual se asigna un color a los objetos que el rayo intersecta Ese color posteriormente
se lo interpretara con el objetivo de poder desplegarlo en un monitor de computadora.

Los conceptos relacionados con el proceso de dar color o "shading" es la parte mas
compleja del Ray Tracing. Los modelos que se usan para describir la interaccin de la luz con las
superficies de distintos materiales y los atributos pueden ser bastante complejos. Algunas tcnicas
estn basadas en la geometra y la fsica ptica mientras que otras son simplemente modelos
empricos. Tal como lo vimos en el capitulo sobre los modelos de iluminacin y reflexin, el
Modelo de Phong, es el que mas se usa. Como recordara el lector este es un modelo emprico y lo
usaremos para realizar el "shading". En este punto es bueno indicar al lector que debido a la
importancia del modelo de Phong lo repetiremos, aunque de una manera diferente, en el resto del
capitulo con un enfoque mas a Ray Tracing, por lo que el lector es libre de saltar el resto de esta
seccin.

Debido a la confusin que existe en lo que es y lo que no es el "shading", aclararemos este


punto. El propsito del "shading" es calcular el color y la intensidad de la luz que sale de la
superficie y viaja hasta llegar al ojo del observador, y que al final constituye lo que realmente llega
a ver el observador. El color de la luz que es percibido por el ojo es una combinacin de:

el color del objeto.


el color de cualquier luz reflejada por el objeto.
el color de cualquier luz que es transmitida a travs del objeto.

Cuando los rayos de luz (los fotones de luz) interactuan con la superficie del objeto, el
"shading" nos dice que cantidad de luz que se "propaga" desde la superficie hacia el observador.
Esta propagacin puede ser descompuesta en dos componentes principales:

propagacin especular
propagacin difusa

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


196 Ray Tracing
La luz que se propaga especularmente es direccional, mientras que la luz que se propaga
difusamente lo hace en todas las direcciones sin ninguna influencia de la direccin del rayo
incidente en la superficie. Tanto la propagacin especular como la difusa deben ser vistas en
trminos de reflexin y transmisin.

La reflexin es lo que pasa cuando se ve un espejo


La transmisin es lo que pasa cuando se ve a travs de un cristal o cualquier superficie
semitransparente.

En resumen, existen cuatro posibilidades de propagacin de la luz cuando se considera un


modelo completo de reflexin.

Para complicar aun mas las cosas, estas cuatro posibilidades deberan ser consideradas
tanto para la luz que llega directamente de una fuente de luz como por la luz que llega
indirectamente desde los objetos que estn en la escena. Por lo tanto, ocho fuentes de luz pueden
ser consideradas cuando se esta calculando el color de cada uno de los pixeles en una imagen
generada por Ray Tracing.

La mayora de los programas existentes para la generacin de imgenes (y los que


usaremos) consideran solo los siguientes:

La luz ambiental
Reflexin difusa
Reflexin especular
Transmisin especular (refraccin)

8.1 La luz ambiental

La luz ambiental es un artificio cuyo objetivo es compensar la iluminacin indirecta entre


los objetos. La luz ambiental puede ser considerada como si fueran rayos de luz que chocan en los
objetos provenientes de todas las direcciones y que son reflejados en todas las direcciones. La
intensidad de la luz ambiental que se refleja hacia el ojo del observador es independiente de la
direccin del observador y de la direccin de la(s) fuente(s) de luz. Como se sabe este componente
puede ser calculado de dos maneras:

La primera es mediante la aplicacin de la formula

I a ka I l

donde I l es la intensidad de la fuente de luz ambiental y k a es la constante ambiental. Esta


constante determina cuanto de la luz ambiental ser reflejada desde la superficie. El problema con
este mtodo de calculo es que la luz ambiental reflejada por cualquier objeto esta en funcin del
color de la luz y no en funcin del color del objeto.

La solucin a este problema es relativamente sencilla. Solo debemos considerar el color del
objeto.

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


197 Ray Tracing
I a ka I o

donde I o es el color del objeto y k a determina cuanto del color del objeto debe ser considerado
con una iluminacin ambiental. Se recomienda utilizar un valor de k a = 0.5.

Lo primero que observara el lector en las frmulas anteriores es que no se considera el


color. Efectivamente, las frmulas anteriores solo sirve para luces monocromticas. Para poder
considerar el color en esta y en las dems frmulas que siguen en el resto de esta seccin se debe
hacer uso del modelo RGB (vase el capitulo sobre teora del color). Por lo tanto se tendr una
formula separada para cada uno de los componentes cromticos. La nueva versin del componente
ambiental seria:

I a Re d k a Re d I o Re d
I aGreen k aGreen I oGreen
I aBlue k aBlue I oBlue

8.2 Reflexin difusa

La luz reflejada difusamente se refleja en todas las direcciones con igual intensidad. Por lo
tanto, cualquiera que sea la posicin del observador, la contribucin de luz reflejada difusamente
ser la misma. Es por esta razn que la direccin del ojo del observador no se toma en cuenta
dentro del calculo de este componente. Lo que si es importante es la relacin que existe entre el
rayo desde la superficie a la fuente de luz y la normal a la superficie. La amplitud de este
componente es proporcional al coseno del ngulo entre el rayo de luz incidente y la normal (esto se
conoce como la ley de Lambert). Si el rayo de luz incidente L y la normal N son vectores unitarios
(con modulo igual a 1), el coseno del ngulo entre ellos es su producto escalar. Mas aun, si N.L es
menor o igual a cero, la fuente de luz esta al lado contrario del ojo del observador respecto a la
superficie bajo consideracin, por lo que dicha superficie no recibe nada de iluminacin de la
fuente de luz que se esta considerando.

Puesto que no toda la luz que choca contra una superficie se refleja difusamente, otra
constante de absorcin, k d , se introduce dentro del modelo. Por lo tanto, la contribucin difusa
(monocromtica) es:

I d I l k d cos Li k d ( N L)

Para aquellas escenas que son iluminadas por mltiples fuentes de luz, se debe considerar
la suma de todas las contribuciones difusas (considerando todas las fuentes de luz). Cuando existe
mltiples fuentes de luz, se considera cada una por separado como si fuera la nica fuente de luz
dentro de la escena, para finalmente sumarlas todas y obtener la contribucin difusa total.

Al igual que para el caso de la luz ambiental, la formula anterior solo es para el caso
monocromtico. Para considerar el color se deben establecer una formula para cada uno de los tres
componentes cromticos RGB. k d puede tener distintos valores de absorcin para cada uno de los
tres componentes. En la practica, muchos de los programas simulan los diferentes valores de k d
introduciendo el color de la superficie en el modelo de la siguiente manera:

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


198 Ray Tracing

k d Re d k d' I o Re d
k dGreen k d' I oGreen
k dBlue k d' I oBlue

donde k d' es una constante de absorcin usada en los tres casos y I o es el color del objeto.
Intuitivamente, esto tiene sentido por el hecho de que la cantidad de luz absorbida por una
superficie depende tanto del color de la luz como del color del objeto.

8.3 Reflexin especular

La reflexin especular esta presente en aquellas superficies pulidas. Si la superficie esta


bien pulida, aparecer lo que se denomina "highlights" sobre la superficie del objeto como un
pequeo parche del color de la luz que esta siendo reflejada. Los "highlights" no toman el color del
objeto debido a que los fotones de luz que chocan contra la superficie no son absorbidos y son
reemitidos por la superficie.

A diferencia de la reflexin difusa, la contribucin de reflexin especular al color de la


superficie depende de la posicin en la que se encuentre el ojo del observador. (Vase el capitulo
sobre los modelos de reflexin).

Los "highlights" son causados por la superficie de un objeto que esta reflejando la luz
directamente al ojo del observador. El ngulo entre el rayo reflejado (R) y el rayo de vista (V)
determina la proporcin en la que la reflexin especular contribuye al color del objeto. Cuando los
vectores R y V coinciden, entonces la reflexin especular alcanza su valor mas alto. A medida que
el ngulo entre los vectores R y V se incrementa, el efecto de la reflexin especular disminuye. Al
igual que para la reflexin difusa, el producto escalar o punto se usa para determinar el ngulo
entre R y V. Siempre debe tomarse en cuenta que R y V tienen que ser vectores unitarios.

Para poder calcular el vector R, tomando en cuenta el vector de la luz L y la normal N, se


usa la siguiente formula:

R 2N(L N) L

Una vez que se tiene los vectores R y V, se puede determinar la intensidad mxima para el
componente especular en el punto que se esta considerando (para el cual se esta calculando el
color). Pero como se menciono anteriormente, el tamao del "highlight" esta en funcin de la lisura
de la superficie. Generalmente se usa el modelo de Phong para ajustar este fenmeno. Con el
modelo de Phong un nuevo factor es introducido, el cual caracteriza el material del objeto. Cuanto
mas grande es este factor (n) significara que el objeto esta mas pulido. Si n es igual al infinito
significara que la superficie esta perfectamente pulida. La expresin que se tiene para este
componente es la siguiente:

I s Il ks (R V )n

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


199 Ray Tracing
Observe que el modelo de Phong no esta basado en la fsica sino en observaciones
empricas. El resultado visual que se obtiene es bastante aproximado a la realidad, teniendo la
ventaja de que se requiere menos poder de calculo que otros modelos que estn basados en la fsica.
La constante de absorcin especular, k s , esta en funcin del tipo de material de objeto y debe ser
descompuesto en los tres componentes cromticos RGB.

Un modelo para la reflexin especular que esta basado en conceptos tericos y no


empricos es el "Modelo Torrance-Sparrow" Este modelo esta basado en el concepto de que todas
las superficies estn compuestas de "microfacetas". Estas microfacetas son bastante pequeas,
planas y perfectamente reflectantes. En superficies rugosas, estas microfacetas esta colocadas de
una manera aleatoria, lo que provoca que el rayo reflejado salga con una direccin aleatoria como
consecuencia de los mltiples choques del rayo de luz en las microfacetas. Las superficies que
estn perfectamente pulidas tendrn las microfacetas perfectamente alineadas de tal manera que el
rayo de luz incidente se reflejara inmediatamente y el color no quedara afectado por el color del
objeto. Intuitivamente puede deducir que esto requerir de mas poder de calculo para poderse llevar
a cabo.

8.4 Transmisin especular

El ultimo mecanismo de transporte de la luz que se considerara es la transmisin especular,


fenmeno en el cual la luz traspasa a travs de ciertos objetos. Por supuesto que para que esto
suceda el objeto debe ser transparente a la luz, como los cristales. Cuando se mira a travs de
objetos con estas caractersticas, se observa que por lo general los rayos de luz cambian de
direccin al atravesar el objeto. Este fenmeno ya lo vimos cuando mencionamos a la Ley de
Snell". Este fenmeno se llama refraccin y se observa, como recordara, cuando la luz pasa entre
medios de diferente densidad. La luz cambia de direccin debido a que la velocidad de la luz
cambia cuando existe un cambio en la densidad del medio por el que esta viajando la luz. La
proporcin de la desviacin de la luz esta relacionada con la diferencia existente en la densidad del
medio. Para describir la refraccin matemticamente, se asigna a cada medio un "ndice de
refraccin", mejor conocido por el acrnimo IOR. El IOR mide la velocidad de la luz a travs del
medio en relacin a la velocidad de la luz en el vaco. El aire tiene un IOR aproximadamente igual
a 1.

Ahora podemos hacer uso de la ley de Snell para calcular la direccin del vector de
transmisin. Observe la figura 13.

Por la ley de Snell sabemos que:

sen 2
21
sen 2 2

a partir de lo cual podemos calcular T:


T 21V 21C 1 21 2 C 2 1 N
donde

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA


200 Ray Tracing

C V N

En trminos de la ecuacin global para el "shading", la contribucin de la transmisin


especular es de la misma forma que el de la reflexin especular y puede ser expresada de la
siguiente manera:

I st I l k st (T V ) n

Finalmente llegamos a la expresin final:

I
Il
d do
n

k d L N k s R V k st T V k a I a
n

9. Implementacion

Es tiempo de responder a al ultima pregunta, la cual se refiere a la forma en que se debe


implementar la tcnica de Ray Tracing. Esta pregunta ser respondida en el siguiente capitulo con
el desarrollo de un programa (ejemplo) completo.

Para finalizar es bueno mencionar que todo lo mencionado en este capitulo solo constituye
la base fundamental de la tcnica de Ray Tracing. La tcnica de Ray Tracing es sencilla y elegante,
pero a medida que se desea mas realismo en las imgenes, la complejidad va incrementndose, as
como tambin el tiempo de procesamiento. Especial inters tienen las texturas, las cuales permite
aadir mayor realismo a las imgenes generadas. El proceso de aplicar una textura sobre una
superficie generalmente recibe el nombre de "mapeo de texturas" (texture mapping). En trminos
mas especficos el mapeo de texturas es el proceso de aadir mayor detalle a las superficies sin
necesidad de modelarlas como parte de la geometra de la superficie. Dos categoras generales de
texturas pueden ser definidas:

Texturas con coloracin


Texturas de perturbacin

Las texturas de coloracin cambian el color de las superficies de una manera controlada sin
afectar la geometra de la superficie. Las texturas de perturbacin, como el nombre lo sugiere,
perturba la superficie del objeto llegando a deformarla de alguna manera, como por ejemplo los
bumps, dents y los wrinkles.

Dentro de Ray Tracing tambin se habla de Ray Tracing estocstico, del motion blur para
la realizacin de animaciones, del antialiasing para la eliminacin de los "jaggies" y del Ray
Tracing distribuido.

Como todo en el mundo tiene sus defectos y el mayor de todos es la necesidad de un gran
poder de calculo.

Para uso exclusivo de la UMSS Derechos Reservados INFOGRAFIA

Você também pode gostar