Escolar Documentos
Profissional Documentos
Cultura Documentos
Capitulo 9
RAY TRACING
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.
Uno de los mayores intereses que se tiene dentro del rea de la infografia es la creacin de
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.
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.
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
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
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.
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.
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
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
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
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 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
B
A
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
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.
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.
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 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
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
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".
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.
Rayo 1
Observador
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:
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.
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
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:
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.
Como podemos implementar este algoritmo considerando las caractersticas del hardware de
vdeo existentes.
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.
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
R Vo tVd
x, y x o , yo t xd , yd t R
x xo t xd
y yo t yd
y
vector origen Rayo
vector direccin
(a)
x o , yo t xd , yd
x o , yo
x d , yd
t xd , yd
x
(b)
x, y, z x o , y o , zo t xd , y d , zd
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
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
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.
x xo txd
y yo tyd
z zo tzd
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
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
At 2 Bt C 0
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.
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
x o , yo , zo
Por lo tanto al encontrar el valor del parmetro t tambin se pueden dar tres casos:
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
Punto de Centro de la
Interseccin esfera
x P , yP , zP x , y , z
c c c
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
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.
Ax o By o Czo D
t
Ax d By d Czd
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
La formula cuadrtica general que describe la familia de superficies cuadrticas esta dada
por:
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
Bc Bc2 4 Ac Cc
t1
2 Ac
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.
(1) El rayo incidente, el rayo reflejado y la normal a la superficie se encuentran en el mismo plano.
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.
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
.
A
indice _ relativo
B
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
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
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
Reflejado
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 .
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.
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.
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
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).
R R1 R2
R1 V R2
por lo tanto:
pero:
R2 ( N V ) N
por lo tanto:
R 2( N V ) N L
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.
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
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.
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.
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 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 luz ambiental
Reflexin difusa
Reflexin especular
Transmisin especular (refraccin)
I a ka I l
La solucin a este problema es relativamente sencilla. Solo debemos considerar el color del
objeto.
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.
I a Re d k a Re d I o Re d
I aGreen k aGreen I oGreen
I aBlue k aBlue I oBlue
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:
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.
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.
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
Ahora podemos hacer uso de la ley de Snell para calcular la direccin del vector de
transmisin. Observe la figura 13.
sen 2
21
sen 2 2
T 21V 21C 1 21 2 C 2 1 N
donde
C V N
I st I l k st (T V ) n
I
Il
d do
n
k d L N k s R V k st T V k a I a
n
9. Implementacion
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:
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.