Introduction: Why Build Custom Scenery for FlightGear?

FlightGear is one of the most capable open-source flight simulators available, offering a global terrain, realistic flight dynamics, and a deeply customizable environment. While the base installation includes a large amount of default scenery, many pilots quickly discover that certain regions, airports, or landmarks lack detail or accuracy. Creating your own scenery packages allows you to bring local airfields, your home city, or fantasy landscapes to life with the precision and flair you want. Beyond personal satisfaction, sharing your work with the community helps every pilot enjoy a richer, more varied simulation experience.

This guide provides a comprehensive walkthrough from understanding FlightGear's scenery architecture to packaging your creation for public release. Whether you are a first-time scenery builder or an experienced modder looking to refine your workflow, the steps and best practices below will help you produce professional-quality results.

Understanding FlightGear Scenery Packages

FlightGear scenery is organized into a hierarchical directory structure. Each scenery package (or tile) contains data that defines terrain elevation, ground cover (such as forests, urban areas, water bodies), airport layouts, runway surfaces, taxiway markings, and 3D objects like buildings, towers, and vegetation. The simulator uses these files to render the world in real time.

Core Components of a Scenery Package

  • Terrain data – Elevation grids (usually derived from SRTM or ASTER DEMs) that define the shape of the land. In FlightGear this is stored in the .btg (Binary Terrain Grid) format.
  • Land cover textures – Images that map onto the terrain based on land-use classifications (grass, desert, pavement, etc.). These are typically .rgb or .png files.
  • Object placement files – XML-format .stg files that list the positions and types of static objects (buildings, lights, runways, navigational aids).
  • Airport definitions.apt or .dat files (depending on schema version) that describe runways, taxiways, gates, and frequency data.
  • Material definitions.mat files that bind textures to terrain types and define visual properties like specularity and transparency.

FlightGear loads scenery tiles on demand based on the aircraft’s position. Each tile is identified by a grid coordinate (e.g., +37-122). Understanding this system helps you organize your work and ensure your scenery appears exactly where you intend.

Prerequisites and Tools

Before diving into creation, set up your toolchain. While you can get by with only a text editor and image software, the following tools will greatly improve your efficiency and quality.

Essential Software

  • TerraGear – FlightGear’s dedicated scenery generation toolkit. It processes raw elevation and land-use data into .btg files. Available for Windows, Linux, and macOS.
  • QGIS (or similar GIS software) – For viewing, editing, and exporting geospatial data. Useful for aligning OpenStreetMap features with your scenery boundaries.
  • Blender – For creating custom 3D objects (hangars, control towers, static aircraft). Export as .ac (Ac3D) format for best compatibility.
  • Image editor (GIMP, Photoshop, or Krita) – For painting textures, editing orthophotos, and creating ground decals.
  • Text editor (VS Code, Notepad++, or any plain-text editor) – For writing .stg, .xml, and material files.

Data Sources

  • OpenStreetMap (OSM) – Free, community-driven vector data for roads, buildings, land-use areas, waterways, and more. Export regions via OSM Export or use Overpass API for large areas.
  • SRTM / ASTER DEM – Elevation data at 30-meter resolution (SRTM) or higher. Available from USGS EarthExplorer or LP DAAC.
  • FlightGear Scenery Database – The official Scenery Portal provides ready-made tiles, but you can also examine them to understand best practices.
  • Official FlightGear Wiki – The Scenery page contains detailed technical references and tutorials.

Step-by-Step Guide to Creating Your Scenery

Follow this structured workflow to avoid common pitfalls. We will build a typical small airport with surrounding terrain and local objects.

1. Define Your Area and Gather Raw Data

Decide the geographic bounds of your scenery (e.g., a 5 km x 5 km square around your target airport). Use QGIS or a simple script to download the corresponding elevation tile (SRTM .hgt file) and an OSM export covering that bounding box. Ensure your projection is WGS84 (EPSG:4326) to match FlightGear’s coordinate system.

For airports, you can also download the existing .apt file from the FlightGear repository if one exists, then modify it. This saves time on runway layout.

2. Prepare Elevation and Land Cover

TerraGear requires a Digital Elevation Model (DEM) in .grib, .hgt, or .tif format, plus a land-cover raster that classifies each pixel (e.g., 1 = urban, 2 = forest, 3 = water). You can create the land-cover raster by rasterizing OSM polygons in QGIS. Use the gdal_rasterize utility or the QGIS “Rasterize” tool. Assign values that match the convention expected by FlightGear (see TerraGear documentation).

Run TerraGear using the elevation and land-cover rasters. The command might look like:

terragear --work=/path/to/work --area=37,-122,5 --dem=dem.tif --landcover=cover.tif --output=./scenery

This generates .btg files for the specified tile(s). Verify that the terrain appears correctly in FlightGear by placing your output folder in $FG_SCENERY.

3. Design Ground Textures

FlightGear uses a material system where each terrain type references a texture image. You can create custom textures to replace or augment default ones. For instance, you might paint a high-resolution orthophoto of your airport area and assign it as a “runway” or “apron” material. Save textures as square, power-of-two dimensions (e.g., 1024x1024) in .rgb (SGI) format, though .png also works.

Create .mat files that define how these textures map onto the terrain. Example material file entry:

material "Grass" {
  texture "grass_rgb.png"
  ambient 0.6 0.6 0.6
  diffuse 1.0 1.0 1.0
  specular 0.0 0.0 0.0
  shininess 5
}

Place the .mat file and textures in the same directory as your terrain tiles.

4. Build Airport Layouts

Airports in FlightGear are defined in .apt or .dat files using a specific syntax (see the Airport Data Format on the wiki). A minimal airport file specifies the airport name, elevation, runway coordinates, surface type, and lights. For example:

1000 myAirport
1 123 45.678 9000 150 0 0 0.00 0 0 0 0
15 33

Use the fg-airportedit tool or a simple text editor to create or modify these files. Place them under a directory structure like Airports/1/2/3/ where the ICAO code (or custom identifier) determines the subfolders.

5. Add 3D Objects and Static Elements

For objects such as hangars, jetways, fuel tanks, or wind socks, you can either place pre-made objects from the FlightGear object database or create your own in Blender. Export as .ac (Ac3D) format; FlightGear reads this natively. Create a .stg file that lists each object with its latitude, longitude, altitude, rotation, and scale:

OBJECT_STATIC Models/Hangar.ac 37.619 -122.384 10.0 0.0 0.0 0.0 1.0

Place the .stg file alongside your terrain tile. Objects can be grouped into a single .stg for your tile or split into separate files for organization.

6. Test Iteratively

Load FlightGear with your scenery directory set in the FG_SCENERY environment variable or via the --fg-scenery command-line option. Fly around your airport at different times of day to check for texture tiling issues, incorrect elevation, or missing objects. Use the built-in --log-level=debug to catch file loading errors. Adjust your data and repeat until everything looks correct.

Advanced Techniques

Once you are comfortable with the basics, you can push your scenery further.

Photorealistic Textures Using Orthophotos

Download satellite imagery (e.g., from USGS NAIP or free sources) and orthorectify it using QGIS. Tile the orthophoto and assign it as the primary terrain texture for your area. This yields stunningly realistic ground depictions, especially for airports. Be mindful of file size and license restrictions: only share imagery that is public domain or for which you have permission.

Custom 3D Terminal Buildings

Model detailed buildings in Blender with glass, signage, and night lighting (using emissive materials). Export with LOD (Level of Detail) variants to maintain performance. You can also add animated jetbridges or rotating radar antennas using FlightGear’s animation system (XML-based).

Seasonal and Night Textures

FlightGear supports seasonal texture swapping. Create summer, winter, and spring variants of your ground textures and specify them in the .mat files with texture-season tags. Similarly, add night textures to make your scenery come alive after dark. The simulator will automatically switch based on date and time.

Sharing Your Scenery with the Community

After thorough testing, prepare a release package that others can easily install.

Packing and Compressing

Structure your files according to FlightGear’s expected layout. The root of your scenery package should contain a Objects/, Textures/, Airports/, and a Terrain/ folder. Avoid placing files outside these directories. Compress the folder as .zip or .tar.gz.

Documentation

Write a README.txt or README.html that includes:

  • Description of the scenery (airport name, geographic area, features)
  • Installation instructions (copy folder to $FG_HOME/Scenery or add via launcher)
  • Required dependencies (e.g., models from the official object database)
  • Known issues and credits (data sources, tools used)
  • Licensing information (recommended: GPLv2 or Creative Commons)

Upload Locations

  • FlightGear Scenery Portal – The official Scenery Portal is the primary distribution platform. You need to register an account and submit your package for review. The portal ensures automatic downloading by the launcher.
  • GitHub (or GitLab) – Ideal for version control, collaborative development, and tracking issues. Use a repository with a clear name like fg-scenery-kbdl. Provide release archives with semantic versioning.
  • Community Forums – The FlightGear Forum has a dedicated “Scenery” section. Post screenshots, a brief description, and a download link. Be responsive to feedback and updates.

Engaging with the community not only helps others but also brings you valuable suggestions for improvement.

Troubleshooting Common Issues

Even experienced builders run into problems. Here are solutions to frequent pitfalls.

Missing Textures or Pink Objects

If objects appear pink, FlightGear cannot find the referenced texture. Check that the texture path in the .stg file or .ac model is correct and that the texture file exists. Use absolute paths during development, then change to relative paths for distribution.

Elevation Mismatches

If the airport runway is floating above or buried below the terrain, the elevation in the .apt file may be incorrect. Verify the DEM elevation at that point using QGIS or a simple elevation lookup tool. Also check that the terrain tile’s .btg file covers the exactly same bounding box as your airport.

Performance Slowdowns

If frame rate drops near your scenery, you may have used too many high-polygon objects or huge textures. Reduce texture sizes to 1024x1024 or 512x512, and use LOD models that switch to simpler versions at distance. Also minimize the number of light sources and shadow-casting objects.

Scenery Not Appearing at All

Run FlightGear with the --verbose-scenery or --log-level=scenery flag to see which tiles are loaded. Ensure your terrain tile is named correctly (e.g., +37-122.btg for tile at latitude 37°N, longitude 122°W). Double-check file permissions and directory structure.

Community Resources and Further Learning

The FlightGear community is active and helpful. Bookmark these resources:

Consider joining the FlightGear IRC channel for real-time assistance. Many veteran developers are happy to review your scenery and offer suggestions.

Conclusion

Creating your own FlightGear scenery packages is a deeply rewarding way to contribute to the open-source flight simulation ecosystem. Starting with a small area and a simple airport, you can gradually add detail through custom textures, 3D models, and seasonal variations. The process teaches you about geospatial data, 3D modeling, and simulator internals, all while producing tangible results that enhance your own flights and those of fellow pilots.

The FlightGear community thrives on user contributions. Every custom airport, improved terrain tile, or new object set makes the simulator more immersive. So plan your first project, gather your tools, and start building. Your local airport—or any place you love to fly—can become a showcase of your skills and dedication.