Generación procedimental de contenido en el desarrollo de

Anuncio
Generación procedimental de contenido en el
desarrollo de videojuegos
Rodrigo Baravalle1 , Claudio Delrieux2 y Cristian Garcı́a Bauza3
1
Universidad Nacional de Rosario
Universidad Nacional del Sur
3
CICPBA, UNICEN
2
Resumen Se presenta una biblioteca de desarrollo para utilizar técnicas de generación procedimental en la creación de texturas de materiales,
junto con un editor que hace uso de ellas. La propuesta puede ser utilizada por programadores, incluyendo la funcionalidad en sus desarrollos y
por diseñadores, utilizando el editor provisto. Aprovechando la capacidad
de cálculo de las placas gráficas actuales, la solución fue implementada
en GPU a través de scripts de shading Cg.
1.
Introducción
En un principio los videojuegos debieron construir representaciones gráficas
de objetos con recursos muy limitados. Esto motivó la aparición de un conjunto
de nuevos algoritmos para obtener buenos resultados a un costo computacional
aceptable (ver por ejemplo demoscene4 ).
Por otro lado, con el paso de los años, estas limitaciones han sido menores,
aunque la calidad gráfica requerida va en aumento. La complejidad creciente de
la generación del contenido multimedia para lograr recrear escenas ha hecho que
surjan técnicas complementarias, buscando un modelado más automatizado y
escalable.
Entre los elementos que conforman el contenido multimedia de un juego
encontramos desde los personajes a los niveles, desde los sonidos a las imágenes
de texturas. Estas últimas, pueden ser divididas en dos conjuntos: estáticas,
y procedimentales. Las primeras no presentan un comportamiento dinámico y
generalmente están representadas por mapas de pixeles (imágenes), almacenadas
y distribuidas en el paquete del juego.
Las texturas procedimentales en cambio, son generadas a partir de un algoritmo. Las ventajas de estas es el ahorro de memoria y espacio en disco (al no
almacenarse, el disco no se utiliza), ya que son calculadas durante la ejecución
del programa; y por otro lado la diversidad de elementos alcanzada, sin necesidad de intervención durante el proceso. Por ejemplo, el espacio ocupado en
la memoria de la GPU por 50 texturas de 512x512 pı́xeles es de 50MB. Si bien
dichas memorias cada vez son mayores, también ocurre esto con los escenarios de
los juegos. Otra ventaja que puede mencionarse es el ahorro en ancho de banda
4
http://en.wikipedia.org/wiki/Demoscene
de GPU, o en algunos juegos online donde parte del contenido es transferido del
servidor al cliente, debido a que no se necesita transferir las texturas.
Adicionalmente, los algoritmos de generación de texturas procedimentales
pueden ser utilizados en editores que provean a los diseñadores nuevas formas
creativas, utilizando generación procedimental a través de un editor y guardando
las imágenes en mapas estáticos, logrando una solución hı́brida.
2.
Antecedentes y propuesta
El modelado procedimental ha estado presente en el desarrollo de video juegos. El juego Rescue on Fractalus5 (desarrollado para la primera generación de
consolas), utilizaba técnicas fractales para crear montañas. Igualmente, la labor
artı́stica humana nunca ha podido ser reemplazada y a medida que los escenarios
en juegos se hicieron más complejos, se ha requerido un número cada vez mayor
de artistas, superando por mas del doble al número de desarrolladores en los
equipos.
Está claro también que con esta complejidad de escenarios, el espacio ocupado (memoria, disco) por el contenido de los juegos ha ido creciendo de manera constante. Puede ser útil comenzar a ejercer un control sobre los recursos
utilizados, y un método sencillo es la utilización de técnicas procedimentales.
Por ejemplo, en juegos estilo RPGs, es posible diseñar el transcurso del juego,
logrando mantener el misterio sobre posibles niveles u objetivos distintos, y facilitando el desarrollo de nuevas misiones, agrupadas bajo paquetes de expansión,
el cual también representa un interés económico para la empresa desarrolladora
[7]. Hay otros casos actuales, como el juego Roboblitz6 que genera sus texturas
algorı́tmicamente o el juego 3D Krieger7 que ocupa solo 96 kb.
Si bien es cierto que durante mucho tiempo el costo computacional de elementos procedimentales no permitió su utilización de manera masiva, la aparición
del hardware programable está ayudando a superar esta dificultad. Proponemos
aquı́ un trabajo basado en el modelado por Fourier para generar contenido procedimental, en particular texturas de materiales. El mismo garantiza que cualquier imagen en dos dimensiones puede ser representada con diferentes funciones
seno en distintas fases y amplitudes [5]. Estas funciones pueden obtenerse con
el cálculo de la Transformada de Fourier. Gracias a este modelo, sabemos que
la composición de funciones muy simples pueden lograr resultados que muestran
complejidad. Otros modelos, pueden observarse en el capı́tulo 4 de [3], en [4],
o en [6]; sin embargo, la mayorı́a de estos modelos falla a la hora de presentar
sencillez de sı́ntesis, además de poder de control sobre los materiales representados, o bien el modelo sólo esta diseñado para un material en particular. Se
procede a presentar entonces una biblioteca que permite modelar y sintetizar
distintos tipos de materiales contando con las ventajas de un modelado procedimental, además de un editor que hace uso de la misma. Es posible representar
5
6
7
http://en.wikipedia.org/wiki/Rescue on Fractalus
http://www.roboblitz.com/
http://en.wikipedia.org/wiki/.kkrieger/
materiales existentes en la naturaleza, como madera, mármol, granito, arena,
agua o vegetación; y otros que son producto del ser humano, por ejemplo telas
o mosaicos. Los mismos son generados a partir de distintas funciones simples,
las cuales reciben distintos parámetros que son propuestos en el modelo. De esta
forma, las texturas pueden variar durante el transcurso del juego, permitiendo
que el desarrollo del mismo pueda afectarlas de acuerdo a los sucesos de manera
dinámica.
Debido a los costos computacionales de las texturas procedimentales, se realiza una implementación en hardware paralelo que sintetiza las texturas en el
pipeline de la GPU. Gracias a esto, la sı́ntesis de los materiales tiene lugar en
tiempo real.
3.
Desarrollo
El modelo matemático que permite la implementación de las ideas expuestas
resulta muy simple. El esquema básico del mismo es presentado en la Figura 1.
Figura 1. Esquema básico del modelo
En el gráfico se observa una base de texturas, la cual está formada por una
cantidad fija de elementos que intentan capturar las principales caracterı́sticas
morfológicas de los materiales que se buscan. Una aplicación ligada a la biblioteca
(como el editor) puede solicitar la sı́ntesis de un determinado material, el cual
luego es sometido a operaciones de manera dinámica (sı́mbolo + del gráfico)
para en última instancia producir la imagen solicitada. Las operaciones fueron
implementadas en el lenguaje de shading Cg, el cual permite que las texturas
sean computadas en la GPU.
Por medio de la aplicación de operaciones básicas de texture mapping como
escala, rotación y traslación, además de combinación de elementos del conjunto, a
través de operaciones aritméticas, se obtiene la sı́ntesis de los distintos materiales.
Los elementos de la base están divididos principalmente en dos clases, una de
ellas utiliza funciones definidas en base a ecuaciones matemáticas basadas en
funciones seno mientras que la otra utiliza el método Spot Noise [2], lo cual
añade cierto nivel de realismo a los materiales finales.
El editor fue desarrollado en el entorno Qt. La aplicación consta de un ABM
de texturas, permitiendo ubicarlas en una escena 3D. Cada textura puede ser
modificada permitiendo establecer los parámetros que la definen, en tiempo real.
Dicha implementación confirmó las ideas presentes en la teorı́a respecto a la
sencillez y flexibilidad de sı́ntesis de materiales. El editor entonces, permite el
cálculo de las texturas en la GPU gracias a la utilización de la biblioteca.
4.
Resultados
En la Figura 2 se muestran las texturas logradas para los materiales de
mármol, madera y granito.
Figura 2. Mármol, madera y granito generados
Además de los materiales naturales se generaron también algunos sintéticos,
demostrando la capacidad del modelo. Algunos resultados obtenidos pueden verse en la Figura 3.
Se observan en la primer fila, un tipo de mármol, la corteza de una palmera
y un tipo de granito; mientras que en la segunda fila fueron sintetizados nubes,
mosaicos, vegetación y arena. Como ejemplo, la imagen que representa la corteza
de una palmera, fue sintetizada a partir de la utilización de dos texturas, ambas
con una rotación diferente aplicada. El agregado de una textura de spot noise,
produce las caracterı́sticas estocásticas deseadas en este tipo de materiales.
Por ejemplo para generar la textura de madera de la Figura 4, la sı́ntesis que
se utilizó es:
sin(αu + βsin(u) + γsin(v)).
Donde α, β, γ son parámetros controlables.
Se debieron setear los siguientes parámetros para sintetizar el material:
(1)
Figura 3. Distintos materiales generados
Parametro α, para establecer la forma sinusoidal inicial de la estructura base
de la textura (imagen de la izquierda de la Figura 4).
Parametro β, con valor cero, con lo cual el parámetro γ hace que la función
sin(v) actúe como la función turbulencia, produciendo funciones seno repetidas a lo largo de la coordenada u; ver segunda y tercer imagen (desde la
izquierda) de la Figura 4.
Parámetro γ, como fue mencionado en el ı́tem previo.
Parámetro turbulencia, con un valor cercano a cero, por ejemplo 0.1.
Parámetro color RGB, imagen de la derecha de la figura mencionada.
Figura 4. Pasos para la obtención de una textura de madera
En la Figura 5 se observan capturas de pantalla del software desarrollado,
con una textura sintetizada de ejemplo.
5.
Conclusiones y perspectivas
La biblioteca introducida presenta la ventaja de contar con un diseño e implementación sencillos. Además, la calidad de las texturas resulta buena teniendo
Figura 5. Capturas de pantalla del software desarrollado. A la izquierda, la ubicación
de la textura en la escena. A la derecha, la definición de los parámetros de la textura
con el preview de la misma
en cuenta lo escaso de los parámetros que deben ser introducidos y las operaciones simples con las que se cuenta en el shader. Por otro lado, se cuenta con la
desventaja de una elevada generalidad en las operaciones que no permite capturar determinados detalles de texturas especı́ficas, debido a que el modelo se
constituye a partir de operaciones y funciones simples, que buscan captar las
caracterı́sticas principales de los materiales.
La implementación demostró ser lo suficientemente sencilla como para poder
ser utilizada en tiempo real, lo cual torna al modelo atractivo en el desarrollo de
video juegos. El ahorro de espacio y ancho de banda resulta considerable respecto
a las texturas convencionales. El principal trabajo a futuro está representado por
la extensión del modelo a tres dimensiones.
Para mejorar al editor se pueden añadir funcionalidades a medida que se utilice por diseñadores, los cuales podrı́an proponer el agregado de las mismas. Esto
ayudarı́a a alcanzar una mayor flexibilidad en el diseño de materiales. La combinación de shaders, por ejemplo por medio de una estructura de grafo, permitirı́a
aumentar la diversidad de materiales, facilitando la libertad del diseño.
Referencias
1. Perlin, Ken: An image synthesizer. SIGGRAPH ’85: Proceedings of the 11th annual
conference on Computer graphics and interactive techniques 287–296
2. Van Wijk, Jarke J.: Spot noise texture synthesis for data visualization. SIGGRAPH
’91: Proceedings of the 18th annual conference on Computer graphics and interactive
techniques 309–318
3. Ebert, David S. and Musgrave, F. Kenton and Peachey, Darwyn and Perlin, Ken and
Worley, Steven: Texturing and Modeling: A Procedural Approach (2002). Morgan
Kaufmann Publishers Inc.
4. Lefebvre, Laurent and Poulin, Pierre: Analysis and Synthesis of Structural Textures.
Graphics Interface 2000 Proceedings 77–86
5. Watt, Alan and Watt, Mark: Advanced animation and rendering techniques (1992).
ACM Press.
6. T. Roden and I. Parberry: Clouds and Stars: Efficient Real-Time Procedural Sky
Rendering Using 3D Hardware (2005). Proceedings of the 2005 ACM SIGCHI International Conference on Advances in Computer Entertainment Technology.
7. Doran, Jonathon and Parberry, Ian Towards Procedural Quest Generation: A Structural Analysis of RPG Quests (2010). Technical Report LARC-2010-02.
Descargar