Techniques for Heightmap Synthesis
And now, for another deviation from algorithmic music. As part of my research in building virtual worlds, I am exploring effective methods of creating interesting and detailed heightmaps for procedural terrain.
My earlier posts showed off some landscapes that were created using spectral synthesis and terrain deposition. I am now exploring methods that I hope will bring greater realism to the heightmaps. Having developed a set of algorithms that use Brownian motion (random walks) as well as certain erosion techniques to create features in the land, I began testing various heightmaps by walking over the resulting terrains.
Brownian random-walking deposition seems to create much more believable terrains than spectral synthesis or particle deposition alone. Application of erosion and smoothing algorithms then reduces the sharpness of the terrains appropriately.
Below are a few of the heightmaps that were generated by my algorithms (note that the colors were chosen arbitrarily by the program):
All of the heightmaps were generated using custom-built random walk, erosion, and smoothing algorithms with varied parameters. A "randomize" filter was then applied by a third-party texturing program, which helped create isocontours (plateaus, essentially) for added realism. Though the filter is very nondescript, from what I can tell, it uses a technique much like a tolerance bucket-fill to "randomize" the image. I will try to write my own version of this algorithm so that it can be applied automatically to the heightmaps.
While these heightmaps represent a great step forward in creating believable terrains (personally, I love number 4), they are still far from realistic. Real land has far more intricacy and fractal dimension. I will continue looking for new and better algorithms to create more realistic worlds.