Resumen
Este trabajo estudia un método para la generación
automática de Lightmaps para conjuntos genéricos de geometría y
su utilización en entornos de visualización en tiempo real y
simulación, utilizando las últimas técnicas de renderizado
mediante Hardware T&L y VertexBuffers.
Desde el punto de vista de las aplicaciones gráficas se observan
dos frentes claramente diferenciados: la generación gráfica
precalculada y la generación en tiempo real. Se entenderá por
generación precalculada a todo proceso gráfico que basándose en
unos procedimientos previos, elabora información gráfica
tomándose para ello el tiempo necesario y que será utilizada
posteriormente para aplicaciones no interactivas, las cuales
reproducirán dicha información en modo "play-back".
Por otro lado, generación en tiempo real será aquella que,
basándose en una base de datos, elabora información gráfica lo
suficientemente rápido como para dar una respuesta inmediata al
usuario de modo que le permita interactuar con los datos
generados.
Por un lado están los desarrolladores de hardware, que tratan de
incrementar la capacidad de cálculo de sus dispositivos y por
otro los programadores de software, que implementan algoritmos que
aprovechen dichos dispositivos. Algunas veces, estos algoritmos no
son más que ingeniosas ideas que consiguen resultados
sorprendentes con un mínimo coste, como el Lightmapping.
Las motivaciones para el desarrollo del proyecto han sido:
- Los Lightmaps son de clara utilidad, indispensables para
obtener ciertos objetivos hoy día. Son efectivos y
eficientes, y se utilizan en mayor o menor medida en la
practica totalidad de los entornos 3d en tiempo real de
calidad.
- Existe una falta de información acerca de los problemas que
aparecen en el desarrollo de la técnica, más aun cuando se
pretende utilizarla con sistemas optimizados como Hardware
T&L o VertexArrays.
- Las implementaciones que en un mayor o menor grado se
acercan a los objetivos que aquí se plantean no son
públicas, sino que han sido desarrolladas por empresas como
producto comercializable.
1 Técnicas de iluminación
1.1 Iluminación tradicional a nivel de vértice
Descripción:
Se basa en calcular en tiempo real la influencia que las luces
tienen sobre los vértices que componen un objeto. Una vez
obtenida esta información, se combina con la de los materiales de
la superficie y se calcula el color final del vértice. A lo largo
de un polígono formado por, por ejemplo 3 vértices, se
interpolarán los valores obtenidos para cada uno de ellos.
1.2 Lightmapping
Descripción:
Técnica basada en pre-calcular información lumínica para
almacenarla en bitmaps y usarla después en tiempo de ejecución
junto con las texturas base del objeto y así conseguir un efecto
de iluminación a nivel de píxel.
x
=
Figura Aplicación de un lightmap
La mayor utilidad de los
lightmaps aparece a la hora de dibujar entornos con un bajo número
de polígonos, en los que el tamaño de los mismos es bastante
grande. En este tipo de polígonos, los vértices están muy
separados unos de otros, lo que hace que la iluminación
tradicional a nivel de vértice no proporcione todo el detalle
necesario.

Figura Comparativa:
Iluminación a nivel de píxel y de vértices
En
la primera figura se aprecia un gradiente de color suave y
detallado. Además puede apreciarse el destello especular
producido por la luz de la escena. La
segunda fotografía muestra la misma malla dibujada con iluminación
por vértice. El gradiente de iluminación es más tosco y pueden
apreciarse discontinuidades en el mismo. Además, el efecto de
destello ha desaparecido.
2
Arquitectura del software
El objetivo del proyecto
es generar un paquete de software (LightmapGen!) encargado
de posibilitar el uso de lightmpas en entornos de visualización
en tiempo real. El software tomará una serie de entradas. En
nuestro caso van a estar compuestas por la escena que se quiere
iluminar. Será procesada y como salida se dará el conjunto de
lightmaps asociados así como información adicional que permitirá
recuperar dichos lightmaps para ser utilizados en el proceso de
dibujado.

Figura Funcionamiento
básico del sistema. Inputs & Outputs
3 Resultados

Figura Escena para la
comparativa en 3dsMax

Figura Iluminación a nivel
de vértice (izda) y procesada con LightmapGen! (dcha)
|