|
The Genesis Toolkit
October, 11 1998 July, 26 1998 June, 20 1998 The Genesis Tools:
The Vegetation Package:
ROUGHThe job of ROUGH is to create a map of the heightfield. There are different types of vegetation in a landscape.
On rocky areas for example there will be less vegetation than on plane areas.
The vegetation is also changing at different height levels.
ROUGH makes a map of the landscape, this map is a GIF-file and can be used as an image_map for POVRAY, or as a plantmap for GEN. Each of these area types has its own color index in the resulting GIF file.
The -r option can be used to fine tune the roughtness detector to your requirements. The higher the value, the more vegetation will be detected.
GENThe job of GEN is to compute object positions for objects, which are to be set onto the surface of a heightfield. The output of GEN is an include file (.INC) containing all objects.GEN needs some informations about the heightfield: The max. input file size supported is 2000x2000 pixel. Options for GEN:
EXAMPLE:
The Heightfield Size
The PlantmapThe plantmap tells GEN where to set the objects on a height field. In this example, i took the output file of ROUGH and draw some red areas with a paintprogram (palette index 4 in the gif file).EXAMPLE: -mmap.gif -p4 The file map.gif is used as plant map and objects are planted at palette index 4.
Space between the objectsThe option -s is used to control the average space between the objects.The smaller the value, the more objects.
Random PlacementThe option -rp is used to avoid or allow ramdomized placement of the objects.It is used like a flag: The option -rp does not change the amount of objects.
Random RotationThe option -rr is used to avoid or allow ramdomized rotation of the objects.It is used like a flag: Each object will be rotated around its Y-axis (randomly 0...360deg) before it is placed. The OutputfileThe result of GEN's job is an include file for POV-Ray. It contains all objects with the current positions on the heightfield. The includefile will look like this:
object{o01 translate<26.262139,7.031357,306.000076>}
object{o01 translate<30.433226,3.125048,245.732643>}
object{o01 translate<36.720893,3.515679,239.608036>}
object{o01 translate<35.880596,5.468833,247.161550>}
object{o01 translate<37.751442,3.906310,354.641423>}
object{o01 translate<43.295404,3.906310,239.690802>}
: : : : : :
: : : : : :
: : : : : :
object{o01 translate<468.526063,5.078202,433.829356>}
CUTTERThe idear of CUTTER is to cut away all objects which are invisible for the POVRAY camera, or which are to far away to be visible. This will decrease the total amount of objects in the final POVRAY scene and helps to save memory, parsing and render time for a scene.
To do this CUTTER needs some informations: I have added a simple parser to read POVRAY camera declarations. Just name the file with the camera declaration and CUTTER will try to get all needed values. Options for CUTTER are: -i name of the INC-file, including all objects -o name of the output-INC-file, the visible objects -p name of the POV-file, including the camera declaration -e max distance limit (0 no limit, 1...~ value for limit) -s min distance limit (0 no limit, 1...~ value for limit) The camera parser of CUTTER is really stupid. Every expression should be in a single row and you may not use any arithmetic expression in a vector. Comments with // are supported, those with /*...*/ not. I.e. this is a valid camera:
camera {
// location<100,20,120> // this comment is OK
location<360,3.80,75>
direction <0,0,1>
up <0,1,0>
right <1.3333333,0,0>
look_at <118,20,230>
}
This one is not valid:
camera {
location<360-17,3.80+clock*100,75-(clock*100)>
direction <0,0,1+1> /* this comment is not OK */
up <0,1,0>
right <1.3333333,0,0> look_at <118,20,230>
}
GIF2TGA / TGA2GIFGIF2TGA converts GIF heightfields into TGA heightfields. The Usage is:GIF2TGA.EXE infile.gif outfile.tga TGA2GIF converts TGA heightfields into GIF heightfields. The Usage is:
TGA2GIF.EXE -iinfile.tga -ooutfile.gif
-i specifies the input TGA file
-o specifies the output GIF file
HFMERGEHFMERGE is a tool to merge two heightfields or make some manipulations. You can add two heightfields, make a subtraction, shift a heigthfield up or down, scale it, cut it at a level and so on.Options for HFMERGE:
When using method 1...5 make shure that both heightfields have exactly the same resolution!
Sample ObjectsThis objects are designed to be small in memory, so that a large amount of them can be used.
|
- Duisburg Germany |