next up previous contents
Next: 4.4.3 Selección de software Up: 4.4 Uso del cluster Previous: 4.4.1 Ray tracing: una   Índice General

4.4.2 La técnica de ray tracing

El algoritmo de ray tracing fue propuesto por primera vez en 1968, por Appel4.9, aunque inicialmente su uso era únicamente en la detección de superficies ocultas.

El ray tracing es actualmente la simulación más completa de un modelo de iluminación y reflexión por computadora. El algoritmo básicamente supone que un observador ve un punto en una superficie como resultado de la interacción de dicha superficie en ese punto con rayos que emanan de otros puntos de la escena.

El ray tracing va más allá que otras técnicas, pues en vez de considerar únicamente la interacción de los puntos de la superficie con la iluminación directa de las fuentes de luz, se toma en cuenta que en general, un rayo de luz puede alcanzar la superficie indirectamente por reflexión en otras superficies, transmisión a través de objetos parcialmente transparentes, o una combinación de ambos. Esto se denomina iluminación global, pues la luz se origina del ambiente de la escena, en vez de hacerlo por interacción local de la superficie con la iluminación directa de las fuentes de luz.

Este método tiene algunas desventajas, la más importante de las cuales es su gran requerimiento de procesamiento, tomando tiempos muy largos (horas o días) para calcular imágenes.

Sin embargo, su ventaja más significativa a nivel algoritmo de graficación es que representa una solución parcial al problema de la iluminación global, combinando en un solo modelo la remoción de superficies ocultas, el sombreado debido a iluminación tanto directa como global, y el cálculo de sombras. Una ventaja adicional es que el algoritmo es muy fácilmente paralelizable, como se verá más adelante.

El algoritmo de ray tracing trabaja completamente en el espacio de objetos. En un punto del plano de imagen, se obtienen las superficies visibles, así como el color e intensidad en el punto, trazando un rayo hacia atrás, desde el ojo o cámara, a través del punto de interés, y hacia la escena.

Si el rayo intersecta un objeto, entonces se realizan cálculos locales para determinar el color que resulte de la iluminación directa en el punto. Si es parcialmente reflejante, parcialmente transparente, o ambos, el color del punto en el plano de la imagen incluirá una contribución de los rayos reflejados y transmitidos. Estos deben trazarse hacia atrás a partir del punto de intersección para descubrir sus contribuciones. Determinar el color de estos rayos puede a su vez requerir el trazado de más rayos en intersecciones con objetos. Para determinar completamente el color del punto original en el plano visible, este juego de rayos deben trazarse hacia atrás dentro de la escena. El trazado de un rayo en particular termina cuando no se intersectan más objetos (en cuyo caso se asigna al rayo un color de fondo), o cuando el rayo está separado del observador por un número tal de intersecciones que su contribución de color se considera despreciable.

Se lanza un rayo desde el observador hacia cada punto a definir dentro del plano de imagen, pasando por el centro de dicho punto o pixel. Esto significa que la escena será muestreada en el espacio de objeto por rayos infinitamente delgados. En el proceso se tiene coherencia espacial de cero, es decir, todos los rayos se trazan independientemente sin utilizar información de rayos vecinos). Esto produce aliasing4.10, lo cual representa una desventaja; por otro lado, hace que la implementación paralela sea trivial, y el proceso fácilmente distribuible.

Existen una gran cantidad de programas y paquetes, tanto comerciales como gratuitos, que emplean el ray tracing, así como variantes y combinaciones con otras técnicas como la radiosidad y el trazado por líneas de rastreo.

Si bien, como ya se describió, el algoritmo de ray tracing es relativamente sencillo a nivel básico, en realidad éste puede complicarse, según se incrementa la cantidad de comportamientos visuales que el programa debe manejar, sus capacidades de manipulación de objetos, y la eficiencia de la implementación.

Ya que el desarrollar un programa de ray tracing se considera fuera del alcance y enfoque de este proyecto, así como por consideraciones de tiempo, se optó por utilizar un paquete existente de ray tracing y buscar adaptarlo a una máquina paralela para mejorar su rendimiento.


next up previous contents
Next: 4.4.3 Selección de software Up: 4.4 Uso del cluster Previous: 4.4.1 Ray tracing: una   Índice General
2002-05-15