Terrain Studio
Introduction
The Terrain Studio project is the culmination of many other terrain projects. The goal of this project is to take technology developed in previous projects, and to develop a single terrain manipulation environment. It is expected that this project will require refactoring some of the terrain technology and developing new pieces of technology to reach its goals.

The initial planned feature set is:

  1. The ability to load DEM, DTED, and SRTM files.
  2. The ability to display the terrain in 2D as color shaded height maps.
  3. The ability to derive 3D representations from the terrain, which could be exported as a 3D model format.
  4. The ability to save the terrain into a single more friendly terrain database / file format.
This basic feature set will then allow me to add various terrain algorithms for testing and research when needed.

The GUI with no terrain files loaded. VPF derived coastlines and political boundaries can be seen.

Basic Application
A basic fltk application was written which supports tabs for 2D and 3D views, a tree view for displaying the terrain tile names, and a set of menus for controlling the application. The final application may be a .NET C# application, but for now this is a relatively good application.

Loading Terrain
Support for loading the DEM, DTED, and SRTM terrains was added quite quickly due to the previous projects which had developed all of this core technology. This core technology supports geoids, datums, projections, the terrain formats, and the necessary conversions.

All that need to be done was to develop a collection class for managing all of the terrain cells together.


DEMs of Hawaii loaded and displayed as hashed cells over the coastlines.

2D Display, Coastlines and Boundaries
Next, a 2D interactive display of the loaded terrain tiles was added. The 2D display is all done via OpenGL to maintain a interactive manipulation of the display. Initially, all it supported was displaying the tiles as hashed cells, and offered a longitude/latitude overlay on the screen. The user can interactively pan and zoom around the map.

Quickly, it was discovered that without some form of geographic reference information, that the 2D display was a bit confusing. To resolve this, I developed a Vector Product Format loader and a bunch of vector feature display classes to support importing coastlines and political boundaries. (Click here to read about the VPF work.) The first image on the right shows the coastlines and political boundaries of Africa. All of the coastlines and political boundaries are stored in a tiled format, with multiple levels of detail to keep performance at a maximum level. A nice side benefit of this is that I can now add VPF loading to the application when I see a need/desire.

The coastline, political boundaries, and longitude/latitude overlays can all be toggled on or off.


Hawaii DEMs displayed as color shaded height maps. The yellow line seen running through the image is a line of latitude from the latitude / longitude overlay.

Heightmap Displays & Colormaps
Next, the 2D display was extended to support shaded height map displays. A shaded image of each tile is generated on-the-fly. Lighting / shading is added to the images using the height map gradients. These images are then managed internally as 2D texture maps, allowing for extremely fast manipulation of the 2D view.

Colored height map displays are only as interesting as the color map used, so the application supports loading XML formatted colormap tables. The Northeastern Ohio image to the right used a custom color map, loaded by the user in the application, to better illustrate the location of the shoreline.

3D Display: Coming Soon
The next step is to add generating the 3D display of a region. It will most likely use some of the work from my Iterative TIN project.


Northeastern Ohio and Lake Erie displayed as color shaded height maps.

glenn@raudins.com