Jump to content
  • Advertisement
Sign in to follow this  
  • entries
  • comments
  • views

A model of British Columbia

Sign in to follow this  


I am finally getting around to writing another entry. I hoped that I would post more frequently but I guess this is the best I can do for now. Recently, I have been busy improving the terrain rendering engine of Geist3D for a research project to model costal surveillance scenarios. The most interesting challenge was to generate a model of the coastal regions of British Columbia using digital elevation models (DEM) and Landsat7 satellite images.

I am basically using the same patch-based LOD algorithm as for planet rendering except that the terrain is flat and that the vertices come from a file rather than a noise function. Rendering really wasn't much of a problem as most of the tessellation algorithm was already implemented in Geist3D. In a nutshell, a separate thread reads terrain patches from a file and then generates the triangles meshes as a user navigates the scene.

The challenge was to generate the huge quad tree necessary to represent the terrain at all levels of detail. For that, I built an application that merges the DEM files and satellite images into a single file in the Geist3D terrain format. Each vertex contains the elevation and three color values. Since the DEM files and pan-sharpened satellite images have approximately the same resolution, each vertex in the final model has a unique color.

The screenshots are from a model covering the entire coastal region of British Columbia at 15 meter spatial resolution. The simulation runs in real-time on a dual core 2.1Ghz Pentium processor using an ATI 1950 Pro (256MB) graphics adapter. The terrain file is 3.1GB in size and contains 652,434 patches. After startup, Geist3D pre-allocates 1200 terrain chunks on the GPU which occupy approximately 68MB of graphics memory, leaving plenty of room for other objects. Even at the highest resolution, which consumes all 1200 patches, the frame rate consistently remains above 20 frames per second.

There are numerous details involved in building this model including sharpening the satellite images and smoothing the transitions between different levels of detail. If you have any questions about how it's done, send me a message. You can find a little more information and some movies at www.geist3d.com

I will post again soon and introduce the recent improvements to the Geist3D planet rendering engine. The planets now include tree cover....
Sign in to follow this  


Recommended Comments

There are no comments to display.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!