Generación automática de lightmaps para sets de gometría genéricos en tiempo real

Iñaki Ayucar Torres (2003)

Facultad de Informática web3D-ehu

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)

Herramientas y tecnologías usadas
MS Visual C++
Bibliografía especialmente relevante
----
Links especialmente relevantes
----

 


web3D-ehu  última revisión: April 10, 2007