
Raymond Gardener, President, Daylon Graphics Ltd.
The Past
Heightfields have not been the easiest things to work with. So far, most people have lived with four choices:
I didn't find any of these options suitable. Using a painting program required me to visualize what the heightfield would look like in three dimensions, a notorious hit-and-usually-miss affair. I thought Bryce would do, but it's a modeller -- it's forté is more on presentation. As for the high end, several hundred (or a thousand or more) dollars seemed like a lot just to work with heightfields.
The low-cost/shareware route held some promise, but the road soon turned bumpy. Some were hard to use, others were very underpowered or didn't run under Windows. And they all seemed to be pretty dated, written and supported for a while but then left alone. As academic exercises they were interesting, but...
Well, I finally got tired of compromising. So I wrote Leveller.
Of course, the road to Leveller wasn't smoothly paved either. Below is a screen shot of version 0.1, and the window is pretty much the entire program. No MDI interface, no OpenGL, no toolbars or menus. But even back then, it was obvious that the combination of realtime 3D navigation/viewing, editing, and being able to export the scene as is to POV-Ray was an improvement. Suddenly, a heightfield was something one could get very close to, to be able to feel the terrain, as much as a computer can permit that type of feel.

One feature (that was unfortunately not retained) was being able
to sculpt the heightfield by firing weapons at it. It made
Leveller fun, and suggested interesting possibilities in user
interface design for this type of program. Someday we'll revist
those ideas, and close that particular circle. But I digress...
The Present
Leveller is not a modeller like Bryce or Raydream Designer -- instead of trying to manage an overall scene, Leveller focuses on heightfield editing. If you like the kind of control a program like Photoshop gives you with bitmaps, then you'll like Leveller. What's great about Leveller is that it not only lets you shape terrain just the way you want, it lets you explore all sorts of other possibilities, like using heightfields for close-ups of bumpmapped textures for greater realism, or text that doesn't just look embossed, it is embossed. There are also plug-ins specifically designed for elevation data filtering, like adding cracks, waves, etc., and users can develop their own. Here are some examples of Leveller heightfields:

Since it's a tool for everyone, ease of use is a strong design factor. People want to feel that they're working with the heightfield, and not with the application. The user's view of the heightfield is presented in an easily navigable 3D scene and a customizable overhead 2D view where editing is done with painting-like tools. It's like Bryce's terrain editor, but more powerful. There's a few controls around the view, but by and large the work environment is very distraction-free.

The 3D scene can be navigated at any time by using the numeric keypad and the A and Z keys. The controls work identically to most video games, and take just as little time to get used to. For greater precision, there's a camera tool that can be used with the mouse. One nice thing we recently added to the scene was the Reference Shapes feature, which lets you attach a reference approximation of your final model, so you can see how the heightfield relates to it. You can insert a bridge, for example, as a simple set of polygons to make sure that a river isn't too wide or too narrow. Reference shapes let you work safely without taxing performance, so that you can see all your editing in realtime.

The 2D map pane on the right side of the document window behaves almost identically to a bitmap in a painting program. One can make selections, dig or raise elevations, smooth/sharpen part of the heightfield, etc., all with the mouse. Filters and plug-ins perform global effects that are limited to the current selection, which can be any arbitrary shape. As you work, the changes are shown live in both views.
The selection mask looks and behaves as if you were using Photoshop -- you can add or subtract from it, invert it, use the Magic Wand tool to select elevation points that are within a certain height tolerance, feather it, stroke it, etc. If that's not enough, you can also import selection masks from grayscale TGA files. The mask is an 8-bit alpha channel, which makes for some powerful creative possibilities. One could apply a filter through a gradient mask so that the filter's effect is barely noticeable at one end of the heightfield buts gets more obvious towards the other end.
Although Leveller's renderer is fairly flexible and can produce some nice-looking output, it wasn't meant to replace true rendering. Once the heightfield is sculpted to perfection, it can be exported to a variety of formats, including Pixar's RIB, DXF, TGA/POV-Ray, VRML 2.0, etc. Here's some RIB exports imaged with Larry Gritz's BMRT radiosity renderer:

The best analogy I can think of is that Leveller is to heightfields what Photoshop is to bitmaps. Adding Leveller to one's modelling suite really helps round it out. It's kind of interesting, in a sense, how the lack of tools caused most people not to exploit heightfields. Instead of realizing something was missing, an assumption was made that heightfields weren't worth fussing over too much. Leveller seems to have dispelled that, and the proof is in what people have done with it:
![]() |
Untitled
rendering by Steve Ahonen. Steve was trying to model grape jelly, I think. I liked the way he superimposed and smoothed two sets of wave patterns to create a sloshy look. Now that Leveller has more filters, he'd have more luck if he attempted this scene again. |
![]() |
Chimera
by Ken Jacobs This picture was done by using multiple heightfields separated by fog to give the apperance of a mountainous alien world. |
![]() |
Sample
noise filter picture with false coloring and edge
enhancement, Anonymous Someone took a picture I had done of Alessandro Falappa's Noise Adder filter and did some neat postprocessing in a paint program. As Leveller's own texturing and rendering capabilities improved, many people began finding its output adequate for a variety of simpler projects, saving the time of using a true renderer. |
![]() |
Garden
Fairies (detail) by Ken Tyler. Ken actually used heightfields to model the cherubs. It's the type of approach that makes sense if one doesn't plan on rendering the scene from many angles, and if the subject lends itself to being defined that way faster than by another method. Ken was able to cleverly exploit the simple fact that all 3D scenes eventually can only be seen in two dimensions. |
In Leveller, elevation data is maintained at 32-bit resolution, instead of at 8 or 16 bits. 'Elevation splitting' caused by low-res files doesn't happen. You can smooth an area, for example, and correctly sharpen it later, accenting the tiny differences in elevation that look invisible but have been properly preserved. Downsampling and other optimizations like mesh polygon reduction can be done at export time (as they should).
Because of the intended audience, performance had to be acceptable on a broad range of hardware. We do our development on unaccelerated 166-Mhz Pentiums using the stock Microsoft OpenGL libraries that come with Windows. There are slower machines, of course, but faster equipment is now also becoming mainstream. For large heightfields, we added lots of rendering options, and we tweaked several things in the 2D view like crazy. There are other optimizations we're looking at to make things faster still.
Best of all, this kind of power doesn't
come with a huge price tag. A lot of people doing 3D work are
casual users, hobbyists, artists and/or other professionals who
don't have (or may not have) the same budgets and resources as a
professional studio. The reality is also that 3D artists use a
lot of different tools, and if each one of them is expensive,
that makes it difficult to get the job done. Our philosophy at
Daylon Graphics is to make tools for everyone, and to price them
reasonably by keeping costs down elsewhere.
The Future
There are two things we're working on that will add significant power to Leveller in the near future: the P-script plug-in and a vector layer for the map view.

The vector layer will allow changes to the heightfield to be described in terms of vector shapes, simlilar to using a contour plot to describe elevations. Of course, you'll be able to do a lot more than contours -- text, for example, will be rotatable/transformable to any degree, and can be treated as text even after affecting the heightfield. This can be accomplished now by carefully translating vector graphic files into grayscale bitmaps, but the vector layer will streamline the process to let it all happen directly and immediately. It'll be heightfield editing paradise!

The P-script plug-in will provide a PostScript-style interpreter that will let anyone with a text editor and basic programming skill write Leveller filters, without having to know and use a C/C++ compiler. Because it's an interpreter, one can make changes and try them out immediately. There will be several included sample scripts to get people up and running quickly. Because the interpreter is a plug-in, people will be able to use other scripting systems if they want. If I ever get the time (or perhaps some clever person will do this), a VB-style scripting system would be choice. Using HF-Lab scripts is already possible through our HF-Lab plug-in, and they can be nested.
As time goes on, we find ourselves paying more attention to getting around the intrinsic limitations of heightfields, such as not being able to describe more arbitrary shapes like asteroids or rock bridges. Our Cylinder plug-in, for example, bends the heightfield in an arc and converts the result to a triangle mesh. The number of triangles is usually a lot, but as we explore polygon reduction techniques (or if third parties do), the situation will get better. We've always seen Leveller as being a catalyst to help create meshes, instead of always being stuck with elevation data. Elevation data is easy to edit and store, which is one reason heightfields are so popular, but meshes and curve patches allow full creative control.
Maybe the best thing about Leveller is that it's really market-driven. Almost everything that has gone into it has been in direct response to someone's feature request. This is the sort of natural evolution that we want to have, because it has resulted (and will continue to result) in a truly useful tool.
Information:
| Product name | Leveller 1.1 |
| Vendor | Daylon Graphics Ltd. |
| Licence fee | $34.95 US |
| Platforms | Windows 95, 98, and NT 4.x |
| Demo available | Yes, at http://www.daylongraphics.com/products/leveller/download/lev10demo.zip |
| Product Web site | http://www.daylongraphics.com/products/leveller/ |