Monografias.com > Computación > General
Descargar Imprimir Comentar Ver trabajos relacionados

3D: Trazado de rayos (parte 2)



Partes: 1, 2

    Esta es la segunda parte de trazado de rayos. Asumimos que si vas a leer este white paper ya leíste la primera parte, en la que te damos una pequeña pero concentrada introducción a este fascinante mundo del 3D. En este white paper vamos a ver como es el algoritmo en pseudo código, y vamos a explicar como se logran las técnicas más interesantes y que nos otorgan la mejor calidad a nuestras imágenes: el antialiasing, el desenfoque en movimiento y la profundidad de campo.

    Como ya mencionamos en la parte 1, el algoritmo de trazado de rayos propiamente dicho es costoso en su ejecución, y tiene una eficiencia O(n2). En este punto podemos notar un gran problema: si queremos implementar videojuegos o realidades virtuales con este técnica vamos a necesitar una capacidad de procesamiento que pocas computadoras personales tienen hoy en día (fines del 2007). Ya calculamos que para una escena simple con un resolución nativa tenemos alrededor de 78 millones de rayos por cuadro (frame), y no consideramos rayos recursivos. Para lograr los tan preciados 24 cuadros por segundo nos van a hacer falta varias cosas, que las enumero en:

    • un algoritmo optimizado (parte lógica)

    • hardware potente

    • implementación nativa en placas de video

    Quizás el recurso que más nos beneficie es el de un algoritmo optimizado. Optimizar un algoritmo puede requerir varios pasos y un toque fundamental en nuestra manga, que es la creatividad. Las optimizaciones enunciadas en general para el trazado de rayos son de tipo espacial.

    El algoritmo de trazado de rayos es muy elegante, dada su simpleza y recusividad.

    ¿Por qué es un algoritmo recursivo? Porque en su definición se autoinvoca una cantidad determinada de veces, lo que nos abstrae de la enorme complejidad de armar un árbol manualmente.

    Supongamos que "tiramos" un rayo por pixel. Cuando ese rayo choque contra el objeto más cercano a la cámara, desde ese punto de choque "rebotarán" muchos más rayos, y cada uno de estos también rebotará. Si lo pensamos detenidamente, se forma una estructura de árbol, donde cada nodo es un rayo, y el nodo raíz es el primer rayo que tiramos por el pixel. Los hijos de cada nodo van a ser los rayos que se forman a partir del choque de este con un objeto.

    Ahora pasemos al pseudo código:

    Monografias.com

    La función peso calcula un factor de peso para el color con respecto a la profundidad del rayo. Cuanto más profundo sea el rayo, más pequeño va a ser este factor. Es decir que peso(p) nos devuelve un valor numérico flotante entre 0.0 y 1.0, que constituye una ponderación para el color adquirido.

    Como ven, el algoritmo es muy simpático y cuesta creer que un código tan escueto tenga la potencia que tiene. Obviamente que nos estamos olvidando de las funciones para describir los objetos, las texturas, las luces, etc. Pero la idea está en el algoritmo.

    Objetos tridimensionales

    Un detalle que no podemos olvidar mencionar en este artículo es el aspecto formal matemático que hay detrás de esto. Para representar los rayos, los objetos, los colores, los efectos, etc. necesitamos una herramienta que nos permita hacerlo usando números. Así, un rayo va a ser un conjunto de números, los objetos también van a ser un conjunto de números, y así podemos seguir. Lo importante del uso de las matemáticas en este sentido es que hay una rama de ellas que se ocupa de describir objetos geométricos: la GEOMETRIA ANALITICA.

    Aunque el nombre nos asuste un poco, con su aplicación vamos a poder hacer todo lo que comentamos antes, hacer intersecciones, representar objetos tridimensionales, luces, humo, niebla, fuego, partículas, resplandores, etc.

    Los objetos más comunes que se pueden encontrar en un paquete de raytracing son:

    • las esferas

    • los planos infinitos

    • los triángulos

    • los conos

    • los cilindros

    • las elipsoides

    Cada una de estas figuras tiene una función que la representa. Por ejemplo, la ecuación de una esfera es:

    Monografias.com

    También parece complicada, pero créanme que en un tiempito se nos hace familiar y hasta le empezamos a poner nombres(¡¡??). Bueno, no es para tanto. Nadie quedó internado por programar un trazador de rayos en varios meses. Pero si lo hacemos en unos pocos días la historia ya es distinta. No se aceptan quejas de ningún tipo, nada de reclamos si tía elipsoide los persigue, eh!!

    OK, volvamos a Tierra. X, Y, Z son variables, mientras que xc,yc, zc son el centro de nuestra esfera. radio lo dejo para que lo adivinen.

    La ecuación de un plano es X:

    Monografias.com

    Las letras en mayúscula son las variables, mientras que las minúsculas a, b, c, etc. son los números que nos van a determinar la inclinación y posición del plano.

    Partes: 1, 2

    Página siguiente 

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter