Hosting by PhotoTangler Collage Maker

 Submitted by , posted on 04 March 2001

 Image Description, by In previous IOTDs, many people asked what algorithm Terragen is using to calculate its textures. Since i didn't dare to post YALS (Yet Another Landscape Screenshot), i prefered to send this one (which is a top view of my terrain) with a short description of how i'm texturing it (i don't know if Terragen does the same thing, but the results look quite similar). First, before you ask: 1. It is realtime rendered, and actually quite fast (there is around 8000 triangles in this frame). I expect 150 fps on a P2-400+GeForce. Brute-force method: no LOD (yet). 2. It is not using a Terragen's texture. Terrain textures are completely procedurally generated. 3. No demo yet, but i'm working on one. Still needs a few weeks of work. Now, some words about the technic: I'm using a set of 3 parameters: elevation, slope and exposition/ orientation for each texel. Designers can use a script language to describe how to texture-map the terrain. It is done, as Terragen, with materials layers. To each layer is associated a texture map (grass, rock, mud), some conditions about the elevation, slope and exposition, and for each parameter, a min/max blending coefficient too. The influence (ranging from 0.0 to 1.0) of a given layer is calculated, for a texel, by interpolating the 3 blending coefficients. Then, we get the final color of the texel with a standard n-blending function. It is also possible to specify specific texture maps for some texels, as shown with the muddy road in the shot. A simple script example would be: ``` Grass { Slope { angle_min:0 # min angle condition (degrees) angle_max:31 # max angle condition (degrees) blend_min:0.9 # blending for min angle blend_max:1.0 # blending for max angle } } Sand { Slope { angle_min:31 # min angle condition (degrees) angle_max:90 # max angle condition (degrees) blend_min:0.8 # blending for min angle blend_max:1.0 # blending for max angle } Elevation { height_min:0.0 # min height (in meters) height_max:10.0 # max height (in meters) blend_min:1.0 # elevation blending is identiy blend_max:1.0 } } Rock { Slope { angle_min:31 # note that these are the same angle_max:90 # parameters than for sand. Only blend_min:0.8 # the elevation condition blend_max:1.0 # changes. } Elevation { height_min:10.0 # min height (in meters) height_max:10.0+ # max height: above 10 meters blend_min:1.0 # elevation blending is identiy blend_max:1.0 # too } } ``` I let you, as an exercise, imagine what sort of terrain this would result in :)

 [prev] Image of the Day Gallery www.flipcode.com [next]