The Persistence of Ignorance

Menu Home

Heightfield-based Isosurfaces

Geomorph + Gimp + MegaPOV 1.2.1, 2007-2008 (501 K)

My experiments with Geomorph derived on this technique, and the results seemed good enough to create a kit based on the environment of the Project Tierra. But last summer, when I had it almost finished, I lost inspiration due to some problems with the technique, and I abandoned it. Now I returned to this project to finish it at last, and here are the results.

The idea is to create landscapes with isosurfaces based on height fields, adding detail with pigment functions. The main motivation was to be able to add detail only on the vertical parts, not into the flat areas of the landscape. This is normally not possible, as there isn't any internal function to get the isosurface slope. But we can use a heightfield bitmap as main function for the isosurface, and use the slope information of the heightfield to add the detail to the isosurface.

And as a picture is worth a thousand words, here are some to illustrate the technique: the first image shows the isosurface using the heightfield as the only funtion of the isosurface (it took 3 minutes); the second image adds turbulence to the heightfield function (and took 7 minutes); the third image adds also the slope-based detail (24 min.); finally, the last image is a veriant or the third with some faked forest (1h13m).

demo-00 demo-01 demo-02 demo-03

The results are far from perfect nor fast, but at least you can get more natural-looking landscapes: soft on the flat areas and rocky on the vertical parts. The ZIP file contains a demo for the technique, and some auxiliar scenes to generate the bitmaps. Look at the included README.txt and the code comments for more details.

Credits: The castle used on the image ''hf2iso-070220-1.jpg'' is a model downloaded from Time Ref, a medieval history site with some castles in POV-Ray format.

UPDATE 02/14/09

Just added some more shots I did later in 2008, and also others with a nice plane model that Ian MacKay kindly sent to me last year. I wanted to add a fake pilot into it, but then I got some Real Life attack, and also his code was, much like mine, difficult to read... perhaps because we both use a lot of trial&error with CSG objects.

WIPS, tests and other images:

hf2iso-070210-2 hf2iso-070211-1 hf2iso-070212-1 hf2iso-070214-1 hf2iso-070214-2 hf2iso-070220-1 hf2iso-070309-1 hf2iso-070317-1 hf2iso-070320-1 hf2iso-070321-2 hf2iso-070322-1 hf2iso-070424-1 hf2iso-070426-1 hf2iso-070516-1 hf2iso-070530-1 hf2iso-080221 hf2iso-080222 hf2iso-080226-26h SE-5a-into-hf2iso-01 SE-5a-into-hf2iso-03 SE-5a-into-hf2iso-04

This site uses CMS Made Simple
© 1996-2016 Jaime Vives Piqueres

Creative Commons License