Author:

Felix Brendel

Supervisor:

Prof. Gudrun Klinker

Advisor:

Sven Liedtke

Submission Date:

15 May 2018


Abstract

Procedural content generation in games can be used to generate a more flexible and interesting environment for the player. This work explains the fundamentals of procedural generation while showing different kinds of generation methods. The midpoint displacement method and noise functions for generating terrain on a flat surface are shown and the problems of projection onto a sphere are explained. As a result methods of adapting the generation process to generate the terrain directly on the sphere are discussed and compared to each other. The hierarchical structure index tree is introduced which is used to allow for adaptive level of detail. The performance for different implementations are compared to each other and the visual results are shown. Additionally, for all relevant topics, sample implementations are provided and some programming techniques that proved helpful or more efficient are introduced.

Results

Tree based level of detail

using the index tree

Fractal coastlines

Coloring based on satellite

images of the earth

Using preexisting geometry


Summary (From the thesis)

In this work a broad overview of the fundamentals and different methods of procedural generation was given. The different types of procedural generation were discussed and its usages shown. The problems arising when mapping flat textures onto a sphere where explained using the two projection methods mercator projection and peirce quincuncial projection. To avoid projection issues the terrain was generated directly on the sphere. For that, different kinds of spherical meshes have been introduced and compared to each other. Since the icosahedron has a relatively consistent vertex density it was chosen as a base mesh for the planet generation. To be able to have a adaptive level of detail, the index tree was introduced and it was explained how it can be used to increase or decrease the LOD in specific areas. To generate the actual elevation information, two methods were presented. The first one is based on 3d noise functions. By adding multiple layers of noise with different wavelengths and scaling them accordingly, a fractal noise can be created to mimic the fractal looking coastline shapes on earth. The second approach, the midpoint displacement method, generates a fractal noise incrementally. An advantage of using the midpoint displacement method is, that it can work with preexisting elevation information. To explore this, a mechanism to store and load elevation data was shown and the elevation data from the earth was used to demonstrate the ability to load the earth's elevation up until a certain level of detail and from that point on generate the remaining geometry using midpoint displacement. Both methods work directly on the sphere and no projection is required. A method involving another noise function was shown to achieve a varying level of detail across the surface of the planet so that some areas appear rougher and some are rather flat. Using gradients, the vertices could be colored in with colors that resemble satellite images of the earth to look more realistic. To avoid strips with the same color an additional mechanism to add variance to the colors was shown. The different methods and implementations were then compared to each other and the results were discussed. This work serves as a foundation for future research allowing the generation of more realistic earth-like planets.