MODELING SIMPROPCONTAINERS

SimPropContainers are a combination static objects or SimObjects which are put together within SimPropContainer Objects in The Scenery Editor. What this means is that instead of building an entire airport building (for example) as a single monolithic model, you instead model the parts of the building as individual models with their own LODs, and then put them together within the Scenery Editor to create a single SimPropContainer object.

 

 

Overview

In Microsoft Flight Simulator 2020, airport buildings were generally comprised of large meshes with a lot of details, and as such were often very expensive in terms of framerate and memory. Their large dimensions meant that many of the smaller elements were displayed at all times, regardless of the distance to the camera or the size on screen of those elements, and for very large buildings the LOD system didn't help much since the camera could be close to one part of the building but far from another - so the full LOD0 for the building would be loaded into memory since some of it was occupying a large size on screen. Let's look at an example, from KLAX (Los Angeles International) airport, which has a lot of elements to add detail:

Example Of  A Typical Detailed Model From MSFS2020

 

 

Creating The SimPropContainers

The object pictured above is comprised of approximately 300,000 polygons, 98 materials and 147 textures. This is quite "heavy" for such an object and so for the current version of Microsoft Flight Simulator 2024 things have changed to a more "modular" system that permits better polygon, material and texture management. Let's have a look at how we'd build the above model using multiple objects, starting with the model itself in our 3D tool of choice (3DS Max or Blender):

Elements To Be Turned Into SimProps

 

The framed elements represent the parts that can be separated from the "core" building, and turned into independent models with their own LODs and materials (but sharing textures where appropriate). So, cars, lights, pillars, stairways, walls, etc... can all be separated into individual elements which will then all be exported as single objects to be added to the scenery editor as part of a SimPropContainer object, and then these elements can fade and LOD independently, even though they are considered part of a single object. The image below shows some examples of these elements:

Example Of  Individual SimProp Model Elements

 

Once you have identified all the elements that can be separated out you will be left with a "shell" of the object containing the large-scale planes (walls, floors, ramps, etc...) which will look something like this:

Example Of  A Typical SimProp Building "Shell"

 

The images below shows a further example of a building from KLAX. Here we show the full building before being prepared as a SimPropContainer, then the various "prop" objects that were created from it, and then finally the building "shell" (which will also be a seperate object):

Brief SimProp Creation Example

 

 

SimPropContainer LODs

The image below shows a single SimPropContainer with each of the different LODs separated out:

SimProp Object LOD Example

In this example, you can see clearly the decreasing complexity as you move up through the LODs, and the table below shows the statistics for each LOD so you can get an idea of the kind of reductions you should be aiming for:

 

Statistic LOD0 LOD1 LOD2 LOD3 LOD4
Polys 1734 729 527 177 23
Tris 3996 1598 1066 330 46
Edges 3788 1711 1210 555 72
Vertices 2185 1058 759 446 52

 

The next table gives you the approximate maximum number of vertices that can be displayed per LOD depending on the current Size On Screen percentage:

 

Screensize Vertex Count Limit
15% 5000
50% 60,000
100% 250,000
140% 500,000
200% 1,000,000
280% 2,000,000

 

LOD Materials And Textures

When it comes to materials and textures, how they should be created will depend largely on the object they will be used for. For generic and tiling textures, it is important to share them as much as possible between the different SimPropContainers. For example things like concrete, brickwork, metallic textures, etc... that are used on large surfaces should be shared whenever possible. However, for the smaller objects that will disappear quickly from view, it is preferred to have a single material and unique game texture. Such objects would be traffic cones, electrical panels, fire hoses, signs, etc...

 

 

Exporting

When it comes time to export the different models that you wish to be used as part of a SimPropContainer, you will need to export each LOD as a unique glTF, and ensure that you create the appropriate XML for the collection of files. Below are the steps for this for both 3DS Max and Blender. Note that if the model is to be used as a SimObj, then you will also need to export the animations as a separate glTF file.

 

After exporting the gltf files you'll find that there are .gltf and .bin files for each LOD, and optionally an XML file for each object if the object is static with no animations. You can find more information about the structure of this XML from here: Model XML For Scenery Setup

 

To add the objects into the simulation to be used within a SimPropContainer, please see these sections:

 

3DSMax Export SimPropContainer Objects

The 3DS Max Multi-Exporter

If you are using 3DS Max then you should follow these steps:

  1. In the Multi-Exporter window, select each of the objects that you wish to export.
  2. Set the LOD minSize value for each of the LODs being exported.
  3. Generate the XML file(s) for the SimPropContainer objects.
    IMPORTANT! This step is only required if the object is static and does not animate. If the object is a SimObj, then you will need to create the XML manually, as explained here: Scenery XML And Model CFG
  4. Export the objects for the SimPropContainer.

 

Blender Export SimPropContainer Objects

The Blender Multi-Exporter

If you are using Blender then you should follow these steps:

  1. In The Blender Exporter window, click the Reload LODs button (ensure that each object has the correct naming, ie: prefixed with x0_, x1_, etc... or suffixed with _LOD0, _LOD1, etc...).
  2. Select all the LODs that you wish to export.
  3. Set the LOD minSize value for each of the LODs being exported.
  4. Generate the XML file(s) for the SimPropContainer objects.
    IMPORTANT! This step is only required if the object is static and does not animate. If the object is a SimObj, then you will need to create the XML manually, as explained here: Scenery XML And Model CFG
  5. Export the objects for the SimPropContainer.