Association for Computing Machinery
Página principal
Professional Chapters
OrganizaciónEventosRegresar a página principalSIGGRAPHEnglish version


¿Comentarios, sugerencias?
Contactanos

mcc@siggraph.org.mx


#4 - Diciembre 94
Boletín Anterior

Raytracing y POV

Siguiente Boletín

 

Eduardo Llaguno
ellaguno@softtek.com

El proceso de generación de imagenes (rendering) conocido como RayTracing se basa en una simulación de la realidad física en la cual existen o bjetos tanto opacos como translucidos y rayos de luz. Los objetos translucidos pueden ser simulados con diferentes indices de refracción, los rayos de luz son e mitidos por fuentes de luz matematicamente descritas y debe existir una definici ón de una camara virtual, tal como en cualquier algoritmo de generaciñon de imag enes en 3D.

Los rayos de luz son "seguidos" en su camino hasta que "chocan" ( o interseccionan) con un objeto dado de la escena. En ese momento, tomando en c uenta el color del rayo de luz incidente, tomando el vector normal a la superfic ie del objeto en el punto de impacto, las propiedades fisicas de la superfice de dicho objeto se caluclan tanto los colores como la direcciones de dos nuevos ra yos: el rayo reflejado y el rayo refractado (que es como aquellos rayos que al e ntrar al agua "doblan" de dirección).

Sin embargo, la simulación final de la reflexión y refracción de los rayos se realiza inversamente a como ocurre en la naturaleza, ya que de otra manera el proceso se vuelvemente en extremo prohibitivo en calculos aun para la imagen más sencilla de imaginarse. Al salir un rayo de luz de una fuente de luz, podemos calcular sus impactos o intersecciones con los diversos objetos de la escena y continuar entonces este proceso con los rayos reflejedos hasta que alguno de los rayos impacte a nuestra cámara virtual. Obviamente de seguir este proceso muy pocos rayos (si es que alguno) entrarian en nuestra camara virtual, por ello se sigue el proceso inversamente: se toma por hecho que debe entrar algun rayo de luz a traves de uno de los pixeles de la image n y se calcula "hacia atras" para ver de que objeto o superficie proviene dicho rayo. Al encontrar la superficie y el punto de la superficie en cuestion se puede calcular el rayo original a partir del cual se reflejo y el rayo de reflexión que se combino con el primero y se toman en cuenta las propiedades de la superficie de acuerdo tambien a las fuentes de luz definidas en las escena.

Aun siguiendo el proceso inverso de simulación del RayTracing, el algoritmo consume grandes cantidades de tiempo en calcular una sola imagen (es común esperar el orden de horas para una sola imagen). Por ello se han ideado varios esquemas de optimización. Uno de los más básicos es el cálculo de arbol adaptativo : si hacemos un diagrama a partir de uno de los rayos que entra a la cámara, y le asociamos en un diagrama de arbol a los rayos que "genera" de manera inversa al encontrar una superficie de interseccion, y proseguimos de manera recursiva con estos rayos d e la misma manera obtendremos un arbol de rayos, en donde cada uno de ellos, ent re este más profundamente situado, contribuira menos con el color final del pixe l asociado. Una solución cruda a esto es cortar el arbol a partir de cierta altu ra, una solución más elegante y precisa es ir cortando las ramas(esto es , dejar de calcular los rayos asociados) que contribuyen con porcentajes minimos al col or final.

Otra técnica muy recurrida de optimización tiene que ver con el asi gnar cajas (bounding box) a cada objeto para así evitar los complejos calculos de intersección con rayos que pasan muy por fuera o lejos de las superfice del ob jeto. Así primero se calcula si el rayo tiene una interseccion con la caja, y si no la tiene, se hace entonces la suposición que el rayo no intersectara al obje to. De otra manera, se procede a realizar el calculo necesario de intersección c on todas las superficies del objeto. Algo muy importante es la colocación o crea ción adecuada de estas regiones para ser los más pequeñas posibles y simultaneam ente envolver o englobar totalmente al objeto al que estan asociadas.

Un probema tambien común en la generación de imagenes por computadora es la creación de "jaggies", o el aliasing que se da en su forma más simple debido al tamaño finito de los pixeles de los monitores lo que causa efectos tipo de "escalera" en las lineas que no son perfectamente verticales ni horizontales. Esto se da especialmente en las lineas divisiorias en la imagen entre diversos objetos. Los procesos que evitan o resuelven estos problemas son conocidos como tecnicas de antial iasing. Un proceso para resolver esto en la tecnica de RayTracing es llamado sup ersampling y lo que realiza es que en vez de calcular un solo rayo por cada pixel de imagen, se calculan más, típicamente nueve subdividiendo al pixel en nueve regiones en una malla de tres por tres( se considera que el pixel es realmente un cuadrado), y finalmente realziando un promedio ponderado de los colores que cada rayo regreso al pixel.

Sin embargo, bajo ciertas condiciones esta tecnica no resuleve todos los problemas de aliasing y se recurre entonces a un refinamie nto de la tecnica anterior que es llamada supersampling estocastico en el cual los nueve pixeles en lugar de ser enviados a traves de una malal predefinida dent ro del pixel, se envian a traves de puntos estocasticos dentro del pixel.

Estas técnicas de antialiasing obviamente introducen la necesidad de realizar una mayor cantidad de calculos, por lo que una técnica de optimización involucra calcular el color de un rayo que intersecta al pixel en su región central y de otros cuatro rayos en las esquinas del pixel. Si los colores de estos rayos no difieren mucho se toma un promedio ponderado de los colores de otra manera se subdivide el pixel en regiones y se vuelven a calcular mas rayos.Esta técnica es conocida como supersampling adaptativo.

Efectos que el RayTracing normal no es capaz de simular son la difracción de la luz (cuando se rompe en varios colores)y los efectos ambientales de luz (como el que una pared blanca toma un tinte rosado al acercarsele un objeto rojo, aun cuando al pared no es un reflector perfecto de luz). Para efectos como objetos pulidos como espejos, y la refraccion de luz de ntro de objetos trasnlucidos da resultados muy realistas.

El paquete "Persistence of Vision Ray Tracer (POVRay)" es un programa de freeware que permite crear ascenas de un realismo emvidiable, mejor incluso que muchos paquetes comerciales, utilizando técnicas de Raytracing (combinada con otras técnicas para aumentar el realismo). Las escenas se generan mediante archivos con los descriptores de la misma, definidos en un lenguaje propio y escritos con cualquier procesador de texto que pueda grabar el texto en ASCII. Cuando se quiere generar escenas de u n modo gráfico pueden usarse herramientas de modelaje como MORAY (shareware) que permite modelar la escena en su totalidad (editando y asignando materiales, luces, camaras y objetos). Otra forma de generar escenas es editandola en un paquete de modelaje que pueda grabar archivos de "3D Studio" usando el "3ds2Pov" que convierte un frame deseado de la escena a un archivo de POV.

Aunque su principal orientación es hacer "stills" (imagenes fijas), manipulandolo en forma adecuada pueden generarse secuencias de imagenes para generar animaciones. El resultado final se compone de sombras, perspectivas, reflexiones y refracciones de luz muy cerca de ser perfectas. Cuando uno comienza a usar POV no comienza de cero, incluye una serie de escenas que pueden ser usadas para generar una nueva.

-Permite incluir librerias de objetos, colores y texturas predefinidas, que facilitan la creacion de escenas

-Las imagenes que generan son de color de 24 bits

-Pueden crearse terrenos suaves usando bitmaps de altura (height fields)

-Permite hacer operaciones booleanas entre objetos

-Entre las primitivas de objetos que tiene están: triangulos, esferas, planos, cajas, toroides, superficies cuádricas y cuárticas.

-Patrones procedurales para materiales:agata, cuadricula, granito, gradientes, leopardo, mandelbrot, marmol, cebolla, punteado, madera entre muchos otros.

-Cuanta con tutorial y manuales para aprender a usarlo.

El POV es un programa abierto, se provee con el código fuente en "C".

la técnica utilizada es de una gran fidelidad, pero aun así el proceso de generar una imagen es muy lento, se ha optimizado mucho el código de la versión 1 a la 2, contando ahora con asignación de "bounding boxes" automática, además de que los procesos se han eficientado.

El POV se ha convertido en un estandar para muchos artistas que continuamente generan nuevas escenas y las ponen a disposición del público a traves de Internet y otros servicios electrónicos de información.


©Todos los derechos reservados, se prohibe la reproducción salvo permiso por escrito del autor.
©All rights reserved, any copying or duplication of this material is prohibited without written authorization by its author.