I quote directly from the Povray documentation.
"A height field is essentially a one unit wide by one unit long square
with a mountainous surface on top.
The height of the mountain at each point is taken from the color number
or palette index of the pixels in a graphic image file"
Or how about this?, taken from
http://www.cs.otago.ac.nz/graphics/Mirage/node59.html
"A Height field is a two-dimensional array in X and Y. The array values represent the Z value of a surface at each point."
Both definitions sum it up pretty well. The first is Povray specific and the second is more general.
By far, the most common use is for creating landscape scenes. Depending on the options you choose you can create rocks, caves, treacherous mountain ranges, gentle rolling hills, desert plains, ocean floors, etc. There are other uses too, some of which we explore in these tutorials.
In Povray you create a height field using the height_field keyword. The data for the height field
can be provided in more than one way, probably the most common is using an external image file. Given a
2-dimensional image file(x and y dimensions), Povray will create a 3-dimensional object by assigning
a y-value to every (x,
z) pair in a manner described in the height field definitions above.
(remember that y is "up" in POV-Ray).
NB:
This definition is somewhat simplified. More details will be given later.
Let's say you have an image file called MYHF.BMP. To create a
height field using this file you would type the following:
height_field{ bmp "MYHF.BMP" texture{pigment{color rgb 1}}}
Note that this is the bare minimum, but it's enough to get started. There are many options that can be
used with height fields, some of which we will introduce as we need them. For the full syntax
refer to the Povray documentation.
The image files used for height fields are standard image files e.g. bmp, tga, png, jpeg, tiff, etc. You can create images using practically any image-editing program you like. I generally use GIMP but even the most simple paint program will suffice, and of course you can always use our dear old friend PovRay! Although creating a source-image is not complicated, it does take some time and practice to get a feel of how your 2D image is going to look when rendered as a 3D height field. I will provide some images for getting started and then give you some tips on creating your own. In addition, there are programs available whose sole purpose is to create images that can be used as height fields. (See the Links section).