Started: | 2013/03/04 |
Genre: | Terrain Generator |
Language: | C++, C# |
Members: | Andreas Reich Johannes Jendersie |
The Minimal Spanning Tree Based Height Map Generator is a collection of experiments with the aim to create realistic appearing landscapes. One part of the project is a C++ library which generates a height map and the second part is a gui with a map preview. The whole preview (2D + 3D Map + Sky) is just one single pixel shader. No part of the project ever renders geometry.
Many common terrain generators use a value noise (1/f fractal noise) with extra parametrizations or try to apply erosion on such a noise. Using a value noise as a height map is already a sufficient for many maps, but always looks like clouds. So the terrains have a height self similarity and smoothness which lacks reality.
The basic idea to improve such noises is to use a distance field to create mountain chains. A common choice is the usage of a Voronoi diagram or better to say the distance field from that diagram. If the Voronoi diagram is created from a point set the result is a so called Worley noise.
It is also possible to compute a distance function to an arbitrary shape which leads us to the Minimal Spanning Tree (MST). I observed that such a graph structure is very similar to ridges on real mountains. The idea is to use a point set which can be interactively changed to model a realistic looking landscape.
Now it would appear natural if we can take the vertices of the graph and move them to model a terrain. Since it is more intuitive to edit mountains instead of valleys the generator can be used inverse to create the inverse distance function f(x,y) = -d(x,y).
Currently the tool allows for layered editing of a terrain with different blending techniques in the layer stack. Just adding one simple noise to the MST produces the following:
More detailed technical explanations can be found in the following posts:
- The MST Distance Field
- Height map rendering without geometry
Final feature list + Download