FreeFlight - An Interactive 3D Model of Austria

A picture of the author, Jakob Maier
Jakob Maier
Apr 14, 2025

Content

Introduction

FreeFlight is a C++ project that uses OpenGL to create a dynamic and interactive 3D model of Austria. By utilizing web map tiles, FreeFlight integrates a dynamically loaded digital elevation model and aerial or statellite imagery, allowing users to explore a detailed and realistic landscape. Currently, FreeFlight is limited to Austria by the available high-resolution elevation data, however the scope of the renderer can easily be extended by configuring a different tile server.

The end goal is for FreeFlight to become a flight simulator, allowing the user to fly various airplanes with realistic, physics-based flightmodel over the actual terrain of the world. This feature is still very much work in progress.

I wrote some more about this project here.

As you can see, FreeFlight also has a realistic atmosphere that simulates different times of the day:

Technology

Part of any terrain renderer is some technique of managing 'level of detail' (LOD), a way of rendering terrain that is closer in more detail. In this implementation I use a Quadtree data structure, which lines up perfectly with the concept of tiled web maps.

Here you can see how tiles of different resolution are selected based on view height and angle:

The loading of tiles is handled in a seperate thread. This loading thread downloads the tiles, saves them on disk and caches them in ram, which can then be queried by the main thread. The main thread holds the OpenGL context and uploads the tiles as textures to the GPU. If a tile is not yet in ram cache, the main thread requests it and falls back to rendering the tile with a lower resolution texture that is already in ram cache.

Download

Currently, FreeFlight is available as a desktop application for Windows and can be downloaded here for free. Please mind that the whole project is still very much work in progress. I would definitely welcome any feedback, so please don't hesitate to send me an email!

↑ back to top

© 2018 - 2025 Jakob Maier
kontakt & impressum
edit