Amazed by the isosurface landscapes by Christoph Hormann, I tried to emulate his project Landscape of the week, and create an automated, parametrized scene to generate random landscapes.
It took me some time to get a setup fast enough to generate a landscape per week, but finally I learned to use isosurfaces with pigment funtions and complex sloped textures, and also developed other interesting techniques and little tricks.
Here are the succesive landscapes from past weeks. As you can see, I’ve abandoned the weekly updates some time ago. But recently I resumed this project, and I hope to release a second version. At the end of this page you can find the source code for the first version.
Source Code
At the moment is very messy and not very well planed, but I hope it will be useful at least to give some ideas to other landscaping adicts. It doesn’t necessarily renders any of the images showed.
These are some details about the techniques used:
- Isosurface terrain based on simple pigment functions. The best results are obtained when multiplying two or more pigment functions, but I keep it using only tow to get faster results.
- Isosurface water based on averaged cosines with turbulence and random scaling.
- Two types of media clouds: isolated cumulus done with spheres and the object pattern, and cirrus layers done with a spherical shell.
- Sky sphere and sun placement done with Skylight.inc, replacing the sun color with the Blackbody() macro from Lightsys.
- Trees placed with trace(), optionally following the fields patterns on the terrain. The only tree defined uses a quick noisy isosurface.
- Houses placed with trace(), optionally following the fields patterns on the terrain. The basic house provided is a mesh created with Wings3D.
- Simple haze done with ground fog.
- Control parameters with radomized values for all the main features: just change some seeds to obtain a different landscape.
Please, look at the include files for more details. If you only want to use it to trace landscapes, make a copy of tierra.pov and play with the parameters and random seeds (there are some hints on the comments). Be sure also to donwload Lightsys, as it is needed by many of the include files.