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.
|