# HeightfieldTesselator

from pandac.PandaModules import HeightfieldTesselator

Class : HeightfieldTesselator
Description : Converts a height field in the form of a greyscale image into a scene consisting of a number of GeomNodes.
The tesselation uses an LOD algorithm. You supply a "focal point" (X,Y) which tells the tesselator where the bulk of the detail should be concentrated. The intent is that as the player walks around the terrain, you should occasionally move the focal point to wherever the player is. You should not move the focal point every frame: tesselation is not that fast. Also, changing the focal point may cause popping, so it is best to minimize the number of changes. There are a number of parameters that you can use to control tesselation, such as a target polygon count, and a visibility radius.
The heightfield needs to be a multiple of 128 pixels in each dimension. It does not need to be square, and it does not need to be a power of two. For example, a 384 x 640 heightfield is fine. Be aware that tesselation time is proportional to heightfield area, so if you plan to use a size larger than about 512x512, it may be desirable to benchmark.
Altering parameters, such as the poly count, the view radius, or the focal point, does not alter any GeomNodes already generated. Parameter changes only affect subsequently-generated GeomNodes. It is possible to cache many different tesselations of the same terrain.

## Inheritance:

HeightfieldTesselator: Namable
Namable:

## Methods of HeightfieldTesselator:

generate
getElevation
heightfield
setFocalPoint
setHeightfield
setHorizontalScale
setMaxTriangles
setPolyCount
setVerticalScale
setVisibilityRadius

## Methods of Namable:

clearName
getClassType
getName
hasName
operator =
output
setName

generate NodePath HeightfieldTesselator::generate(void); Description: Generates a tree of nodes that represents the heightfield. This can be reparented into the scene.

getElevation double HeightfieldTesselator::get_elevation(double x, double y); Description: Fetches the elevation at (x,y), where the input coordinate is specified in pixels. This ignores the current tesselation level and instead provides an accurate number. Linear blending is used for non-integral coordinates.

heightfield PNMImage &HeightfieldTesselator::heightfield(void); Description: Returns a reference to the heightfield (a PNMImage) contained inside the HeightfieldTesselator. You can use the reference to alter the heightfield.

setFocalPoint void HeightfieldTesselator::set_focal_point(int x, int y); Description: Sets the focal point. The tesselator generates high-resolution terrain around the focal point, and progressively lower and lower resolution terrain as you get farther away. The units are in pixels.

setHeightfield bool HeightfieldTesselator::set_heightfield(Filename const &filename, PNMFileType *type = ((void *)(0))); Description: Loads the specified greyscale image file into the heightfield.

setHorizontalScale void HeightfieldTesselator::set_horizontal_scale(double h); Description: Sets the horizontal scale. The default scale is 1.0, meaning that each pixel in the heightfield is 1x1 panda units wide.

setMaxTriangles void HeightfieldTesselator::set_max_triangles(int n); Description: Sets the max triangles per geom.

setPolyCount void HeightfieldTesselator::set_poly_count(int n); Description: Sets the polygon-count target. The tesselator usually manages to come within about 20% of the target, plus or minus.

setVerticalScale void HeightfieldTesselator::set_vertical_scale(double v); Description: Sets the vertical scale. The default scale is 255.0, meaning that each as the gray value ranges from (0-1), the elevation ranges from (0-255) feet.

setVisibilityRadius void HeightfieldTesselator::set_visibility_radius(int r); Description: Sets the visibility radius. Polygons that are completely outside the radius (relative to the focal point) are cropped away. The cropping is imperfect (all approximations are conservative), so this should be used in conjunction with a far clipping plane, fog, or some other visibility limiting mechanism. The units are in pixels.

clearName void Namable::clear_name(void); Description: Resets the Namable's name to empty.

getClassType static TypeHandle Namable::get_class_type(void); Undocumented function.

getName string const &Namable::get_name(void) const; Description:

hasName bool Namable::has_name(void) const; Description: Returns true if the Namable has a nonempty name set, false if the name is empty.

operator = Namable &Namable::operator =(Namable const &other); Description:

output void Namable::output(ostream &out) const; In the absence of any definition to the contrary, outputting a Namable will write out its name. Description: Outputs the Namable. This function simply writes the name to the output stream; most Namable derivatives will probably redefine this.

setName void Namable::set_name(string const &name); Description: