Skip navigation

En la edición de 1984 de SIGGRAPH se presentó un artículo que presentaba varias bolas de billar, las cuales al verse de primera instancia pareciera que fueran reales. Efectos como el motion blur, sombras difusas, reflecciones y highlights en las superficies de las geometrías eran algunas de las características más sobresalientes sobre una nueva técnica de trazado de rayos distribuidos.

¿Y cómo es que se logran resultados tan realistas? Seguro estarán preguntándose esto después de ver una imagen generada hace ya más de 20 años, y bien, la respuesta se encuentra en un algoritmo para la creación de imágenes foto-realistas conocida entre el mundo de los gráficos por computadora como RayTrace, y en este espacio te voy a explicar el método que la computadora sigue para rastrear de los rayos de luz por una escena con el fin de poder calcular los colores que van en cada píxel a través de una serie de artículos que te ayudarán a entender para que sirven los miles de valores configurables en motores como el famoso Mental Ray de Mental Images o el inigualable VRay de Chaos Group.

Primero que nada hay que entender a qué nos referimos con “realista”. Cuando hablamos de algo realista nos referimos a una imagen que es indistinguible de lo que vemos en la realidad. Y lograr ese tipo de calidad es la meta de los motores de RayTrace.

El rastreo de rayos se fundamenta en la creación de imágenes simulando el comportamiento de la luz y de como interactua esta con nuestros ojos o con el lente de una cámara. De tal modo que podemos ejemplificar este modelo de la misma manera en la que funciona una cámara, y para ello hablaremos aquí del modelo más sencillo, el modelo de “pinhole camera” la cual consistía en tener un plano con un químico que reacciona con la luz dentro de una caja que tendría perforado un pequeño orificio que se mantendría abierto de manera momentánea para poder dejar pasar la luz, y una vez ocurrido esto, sólo ciertos rayos de luz llegarían a la superficie del plano para poder actuar junto con el químico y mostrarnos una imagen.

En los gráficos por computadora, el modelo de “pinhole camera” es el utilizado con mayor frecuencia debido a su simplicidad y a las ventajas que ofrece. Cuando los rayos de luz entran por el orificio, estos rebotan hasta encontrar un punto en el plano con el químico, que el reaccionar con la luz nos da un color en especifico, y es por esta misma razón que si muchos rayos golpean el mismo lugar obtendremos como resultado el color blanco. Teniendo como premisa como funciona este procedimiento, podemos trasladar esta simulación a la computadora para la generación de imágenes foto realistas.

Digamos que tenemos esta escena:

La lámpara que se encuentra en medio se encuentra lanzando rayos de luz en todas direcciones, hay rayos de luz que golpean el espejo y por ello que tenemos reflejos, hay rayos que golpean al sillón y rebotan en una nueva dirección, y otros que llegan directamente a nuestro ojo. Si pudieramos seguir a cada uno de los rayos que emite la lámpara nos daríamos cuenta de que rebotan n número de veces antes de llegar a nuestros ojos, y mientras rebotan, la información, o el color que carga cada rayo cambia en cada rebote. El modelo de rastreo de rayos donde se siguen a todos los rayos definidos para una fuente de luz se le conoce como Forward RayTracing.

Sin embargo existen rayos que nunca llegan a nuestros ojos. Lo cual haría inútil el tener que calcular la trayectoría de todos los rayos en el escenario de que no todos llegan a nuestra vista. Es por ello que para fines de cómputo de trazado de rayos se emplea un modelo de Backward RayTracing, donde se define un plano que representa el rango de visión, y todo lo que veamos dentro de ese rango será lo que se calculará. Para cada punto dentro del plano, se hace un rastreo en reversa hasta la fuente de luz para poder definir el color que ocupará ese punto.

A grandes rasgos así es como funcionan los motores de trazado de rayos, se toma un punto dentro de una matriz de pixeles, para después evaluar de donde viene la luz que está tocando ese punto, si viene directamente de una fuente de luz, si antes de llegar a nuestro ojo está rebotando con algún objeto, si es un punto donde no llega luz (lo que significaría que es una sombra), etc.

Mientras vayamos avanzando en esta serie de artículos seguro encontrarás bastante interesante cómo es que la computadora simula mundos en tercera dimensión, así como la manera en la que la luz interactua con el mundo real. Cualquier duda o comentario es bien recibido en las páginas de contacto que puedes encontrar en este sitio.

Omar Espinosa
Estudiante de 5to Semestre

https://zeekindustries.wordpress.com
http://twitter.com/zeekindustries

One Comment

  1. Hola. Muchas gracias por tu artículo.
    Estoy intentando comprender esto y hacer path tracing en webgl comenzando antes por entender raytracing.
    ¿Hago bien comenzando por tener un quad frente a camara con la informacion de las normales y la profundidad de la escena para poder empezar a lanzar rayos.?
    ¿la direccion del rayo para un pixel dado sería el vertexPosition*World*View*Proyection normalizado no?


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: