Scenery System for MSFS Developers
From X-Plane Wiki
This page tries to explain some of the differences between X-Plane's scenery system and MSFS's scenery system; the intended audience is third party scenery developers.
Differences of Approach
Perhaps the most important structural difference between the X-Plane and MSFS scenery systems is that MSFS integrates and processes scenery data while the sim runs, while X-Plane scenery is pre-processed. Some examples:
- With MSFS, you can specify a water polygon as part of scenery - this data will be merged with land-class data when scenery is loaded. In X-Plane, you specify a water polygon when you build a mesh file; that data has already been merged by the time your .dsf file is ready for distribution.
- With MSFS, land-class, orthophoto, and DEM data are combined when the sim runs to create the final mesh. With X-Plane, this data is combined when you create your finished DSF scenery file.
- With MSFS, objects are placed on terrain while you fly (auto-gen); with X-Plane, objects are placed on terrain when the DSF file is built (pre-gen).
The X-Plane approach has strengths and weaknesses and a few big implications for scenery developers:
- Overall, scenery add-ons must be more monolithic for X-Plane than for MSFS - see integrated mesh vs. layers below. There may be categories of MSFS scenery that cannot be created as ship-alone products on X-Plane. For example, you cannot create scenery that only improves land class data without also providing a mesh in X-Plane.
- In some cases, processing time for scenery data is a non-issue for X-Plane. For example, you can input very complex coastlines to X-Plane's scenery tool; that expensive polygon processing is done during scenery creation and a finished mesh is created.
See Anatomy of the X-Plane Scenery System for the various types of add-ons that can be created.
Comparison of Architecture
Irregular Mesh vs. Dynamic Mesh
X-Plane's terrain meshes are pre-defined in a DSF file - they are not created by X-Plane from raster elevation data. For this reason, any water-tight mesh can be used in X-Plane. We say that X-Plane uses an irregular mesh because the Laminar-provided mesh-creation tools create irregular meshes and the default scenery that ships with X-Plane uses irregular meshes, but it might be more correct to say that we use a mesh of any form.
X-Plane uses an irregular mesh because it can provide superior accuracy for a given vertex count, relative to a regular grid. With an irregular mesh:
- Mesh triangles edges can be placed along any polygonal border. This means that polygonal water bodies and orthophotos efficiently shape the mesh.
- Mesh triangles can fit the contours of terrain.
- We can reduce mesh triangles where they aren't adding value (e.g. flat locations).
X-Plane has support for detail-removing LOD in version 8 and static LOD in version 930 (that is, you can provide alternate meshes in a scenery single DSF file and X-Plane will pick between them based on view distance). The scenery tools, as of this writing, have relatively limited support for mesh LOD.
Mesh textures in X-Plane are used directly as part of the mesh - the mesh is more like a big model in that regard. (Compare to MSFS, where the final terrain texture for an area may be built up and pre-mixed from multiple layers.) This means that the performance of a mesh scenery may be improved by careful texture planning. A small number of large textures will outperform a large number of small textures, by reducing batch count to the graphics card.
X-Plane 9 can "page" textures, that is, load lower and higher resolution versions as the user flies. This feature is only available for .pol and .ter textures, that is, base mesh imagery and overlay imagery - it is not available for 3-d models. Paging is done on multiple cores, so flight can be very smooth even with a lot of imagery on a multi-core machine.
For best texture performance, use .dds files - this saves time calculating mipmaps, provides higher compression quality (pre-compressing using a slow offline algorithm reduces artifacts) and improves paging speed.
Integrated Mesh Tiles Vs. Layers
An X-Plane base mesh covers a 1x1 degree "square" of the world (they're actually not square when viewed in 3-d). The entire mesh for this degree must come from one file, and that mesh must be "integrated" - that is, it contains all land-use, orthophoto, and elevation data, as well as polygonal features like water.
For this reason, you cannot combine an orthophoto add-on and a mesh add-on for the same area in X-Plane; for base meshes you must combine any land-use/orthophoto customizations with mesh improvements.
It is possible to make "overlay" scenery, and overlays can "drape" orthophotos over the mesh. However, the performance of "draped" orthophotos is significantly lower than base mesh orthophotos; for a large area a base mesh is a must for good framerate. Draped orthophotos are targeted at localized modeling, e.g. to customize the surface area of an airport.
Pre-Generation Vs. Auto-Generation
X-Plane does not have auto-gen as it exists in MSFS. With X-Plane scenery, all model, road and vegetation placements (sometimes collectively called 'clutter') have their locations specifically defined in a scenery file. Scenery files might have hundreds of thousands of model placements.
Clutter in X-Plane is defined by an abstract placement and an art asset. That is, while you must specifically provide lat/lon coordinates for all houses in your scenery files, you can refer to a single separate model for the house - you do not have to copy the house's geometry into the scenery file.
It is possible to replace, augment, or customize the actual models used in this process. All art assets go through a library system, which lets third parties utilize X-Plane built-in art assets by reference, or let third parties augment X-Plane's built-in art assets.
Land-Class vs. Terrain
X-Plane's scenery system does not distinguish between land-class and orthophotos as a way of covering the mesh. Instead, any given part of the mesh is covered with a "terrain" (defined by a .ter file); the terrain definition will specify the texture res for repeating textures, physical properties, etc.
X-Plane can support both land-class and orthophoto-style texturing. For land-class textures, the terrain file specifies a texture size and orientation and that they should wrap around to form repeating tiles. For orthophoto-style texures, you can specify the coordinate placement of the texture on the terrain in your scenery file.
Anatomy of the X-Plane Scenery System provides a road map to the various components of the X-Plane scenery system; this can help you locate the useful parts of the scenery system.
Scenery System Frequently Asked Questions answers some questions about the capabilities of the scenery system.