Abstract
Este proyecto consiste en la realización de una herramienta de generación de
escenarios exteriores. Dicha herramienta cuenta con la algoritmia necesaria para la
generación de los elementos pertenecientes a distintas capas del escenario, las cuales
incluyen la generación de orografía o elementos de terreno, la generación de cuerpos de
agua como ríos y lagos, y la generación de caminos.
Uno de los principios de diseño fundamentales del proyecto es la generación onthe-
fly, es decir, la capacidad de generar los resultados en ejecución únicamente a partir
de los datos mínimos que permitan la reproducibilidad de dicha generación. Asimismo,
uno de los objetivos principales es que la herramienta permita una interacción rica y
dinámica. Esto incluye por un lado que el usuario sea capaz de controlar los resultados a
generar con una gran variedad de parámetros, y por otro lado que el impacto de los
cambios en dichos parámetros sea visible inmediatamente en los resultados.
La generación de la orografía se realiza a partir de un algoritmo de generación
de ruido de Perlin fractalizado, el cual permite disponer de una gran variedad de
parámetros de entrada con los que el usuario controla las características del terreno,
entre los cuales se incluyen principalmente la altura media del terreno, la planaridad, y
la rugosidad del mismo. Esto se completa con un sistema de edición multi-zona que
permite la definición de varias zonas de terreno, cada una con sus propias características
orográficas.
La generación de cuerpos de agua consiste en la generación de ríos y lagos
mediante algoritmos de inundación. Por un lado, un lago puede ser generado indicando
el punto desde el cual generarlo y la altura del nivel del agua que se desea que tenga.
Por otro lado, un río puede generarse indicando el punto de origen del mismo, a partir
del cual se elabora el curso del río siguiendo el camino de máxima pendiente negativa,
recurriendo a la inundación para la generación de lagos en los puntos de mínimo local,
incrementando la altura de los mismos hasta encontrar de nuevo el curso de salida de
dicho mínimo local.
La generación de caminos se realiza según un algoritmo de búsqueda A*,
utilizando la distancia euclídea como función de coste y estimación. El algoritmo se
amplía con restricciones en la máxima pendiente que puede tomar el camino, y con
penalizaciones de coste para caminos generados sobre cuerpos de agua a modo de
puentes.
Finalmente, el trabajo se completa con la creación de una herramienta de
exportación que permita la inclusión de los mapas generados a escenas de otros
proyectos como videojuegos o películas. Esta herramienta consiste en una biblioteca en
Python que hace uso del SDK de Autodesk para la generación de modelos en formato
FBX, de uso extendido en la industria.---ABSTRACT---This project consists on the development of an outdoor scenario procedural
generation tool. The algorithms developed in this tool are capable of generating several
layers of elements, which include the generation of orography or terrain, the generation
of water bodies such as lakes and rivers, and the generation of roads or paths.
One of the main design values of this project is on-the-fly generation, that is, the
ability to generate the results in execution time solely from the minimum data that
makes possible said generation and its reproducibility. Moreover, one of the main
objectives is that the tool offers a rich and dynamic interaction. This means, on one
hand, that the user is able to control the results via a sufficiently large set of input
parameters, and on the other hand, that the impact of changes made in said parameters
can immediately be seen in the results.
Terrain generation is handled by a fractalized Perlin noise algorithm, which
offers a great set of input parameters to control the shape of the terrain, such as its
average height, flatness and roughness. This is completed with a multi-area editor,
which allows the definition of several areas of terrain, each one of which has its own
orographic characteristics.
The generation of water bodies consists on the generation of rivers and lakes via
flooding algorithms. On one hand, a lake can be generated by indicating the point from
where to flood the terrain and the height at which to do so. On the other hand, a river
can be generating by indicating its source point, from where the algorithm generates its
course by following the course of maximum negative slope, making use of a flooding
mechanism to generate lakes in local minimum points, increasing these lakes’ height
until the course away from the local minimum is found.
Road generation is handled via an A* search algorithm, using the euclidean
distance as the cost function. Said algorithm is extended with restrictions over the
maximum slope of the road, as well as with cost penalties for paths generated over
water bodies as bridges.
Finally, the project is completed with the creation of an exporting tool that
allows the generated map to be included in external projects such as video games or
films. This tool consists on a Python library that makes use of Autodesk’s SDK for the
generation of models in FBX format, which is widely used in the industry.