Artificial terrain/landscape generation is one of those topics which perennially fascinates me. Since high school I’ve been intermittently looking at the various algorithms used to generate terrains for games, architectural proofs, and computer-generated art. All of the ones I’ve seen documented have been variations on fractal techniques, or applications of Perlin noise generators– all methods attempting to imitate the appearance of the end product of millions of years of natural processes. Surely someone has attempted to go ahead and simulate the actual processes? The lack of responses to my google searches indicate otherwise.
My meager knowledge of geological processes (gained mostly from watching a few PBS specials about rivers) informs me that the most important factors in the development of a landscape are: tectonic activity, wind erosion and deposition, water activity (precipitation, river sedition and erosion, ocean weathering, etc.), and climate. Sure there are other factors, e.g. human activity, but these are the most important. To simulate these processes accurately is a formidable task, but rough approximations should be sufficient to generate realistic landscapes.
I have a few very rough proposals on how to go about simulating these processes. First, using a mesh/heightfield model would be very inconvenient for simulating all of these processes except for climate and tectonic activity. On the other hand, a volumetric model is amenable to all of these processes. So, one could simulate the first process, the tectonic activity that will provide the unweathered bones of the landscape, using wavelets (an earlier post on the rationale) or some other fractal or multiresolution process. I prefer a multiresolution technique, because at least theoretically, you might be able to start from a random process model for the coefficients of the particular type of landscape you’re aiming for– flat, mountainous, what type of interfaces or faults are present, what type of minerals are in the rocks.
A simple multiresolution/fractal approach is probably insufficient for the incorporation of certain weathering effects — perhaps the climate, which affects the landscape more globally than locally, might be drafted into such a random process model, but it’s stretching credibility to believe that e.g. river flow patterns could be convincingly added into the same model. Maybe you could use a separate model, but then determining how the two models should interact (e.g. ensuring a river flows up and then down a mountain) would be nontrivial.
Instead, maybe a good approach for weathering is to (very coarsely) simulate the physics of the weathering processes. Here you’d have to take into account such things as the type and disposition of the rocks in the landscape, and maybe use various evolution PDEs with tunable parameters to simulate weathering. For example, for the rivers, an initial parameter could be the velocity of the water, a random starting point at a relatively high location would be chosen, and some PDE (one that tracks local geodesics, for example) used to ensure that the river took the path of least resistance to an appropriate lower point (branching if appropriate), and portions of the river’s course could be ‘eroded’ depending upon the hardness of the material present. Subtleties such as the deposition of bars (important because this factors in the formation of meanders and ox-bows) could be handled with auxiliary PDEs. This process could be iterated to simulate the passage of years. Similarly, a prevailing wind pattern could be established, and used to drive a PDE that gouges appropriate amounts of material from the landscape.
An ambitious undertaking, but conceptually simple; devilish only in the design/coarsening process for the PDEs. The main disadvantage of this approach — that it isn’t a one shot process — means that it couldn’t be used in real-time applications, but the advantages: extensibility — more weathering processes could be layered on –, realism, and support for nontrivial geometries such as caves, suggest that it could be useful in off-line applications.
Possibly relevant posts: