SCENERY LODs
NOTE: Due to the addition of SimPropContainers to the simulation, this page is only relevant to the legacy method of modelling scenery, ie: large-scale modelling.
In order to ensure optimal performance in Microsoft Flight Simulator 2024 for the models created for your add-ons (scenery, airports, aircraft, etc..) it is important to have a series of LODs created for each model. This is because levels of detail will be loaded into memory only when necessary, ie: only the data necessary to display a model will be loaded into memory at any time. To make sure this actually functions as designed by optimising performance, it is important that lower resolution LODs use less memory. Note though that the sum of the LODs in memory can still be relevant if an object is instantiated multiple times all around the player. In that case, multiple (or even all) LODs may be loaded and displayed at the same time, thus exist in memory at the same time, making optimising everything of paramount importance.
It should be noted that if you are in possession of a licensed copy of the Simplygon SDK, then you can make use of the Microsoft Flight Simulator 2024 AutoLod feature for scenery instead of following the recommendations here. For more information, please see:
LOD Files
LOD files are stored as separate glTF files (one for each LOD) in the Models folder for the package. They are then referenced from the <model_filename>.xml using the <LODS> element. You can find an example of how to set this up here:
For an explanation of how LODs are selected for display in the simulation, what is expected from each LOD in terms of materials and polygons, and how the XML file minSize parameter is used, please see the following page:
General Recommendations
The following are some general recommendations that should be considered when creating model assets:
- We suggest that you create at least 4 LODs, except for very small or simple prop items, which can get away with 2-3.
- In general, we recommend tweaking your LODS in the "high" quality setting, which is neutral for LOD selection (meaning a LOD with 50% "minSize" will switch at 50% size on screen), and reduces the quality of only some textures.
- You should try and share textures between different models and model LODs.
- Remove textures you may not need at a distance, such as a normal map, and try very hard to avoid creating extra textures at a smaller resolution, this will just increase total memory usage. Prefer simply removing textures whenever possible.
- Use appropriate texture resolutions for your textures. It is usually not necessary that all textures in a material have the same resolution.
- Use metallic/roughness/… material settings instead of textures when possible.
- Every LOD should further reduce most - if not all - of its Performance Metrics if possible. The main considerations are texture memory used, the number of faces, and the number of draw calls. Typically, the number of vertices is at least halved with every LOD.
- Minimize skinned mesh usage. In Microsoft Flight Simulator 2024, compared to regular objects, they consume a significant amount of CPU and memory, so use them only if mesh deformation is necessary. Skinning can often be avoided on lower resolution LODs. Also note that when a skinned mesh is moved with bones that are somewhere else completely in the hierarchy, you can have an issue where the skinned mesh disappears when looking at it because the bounding box used for camera frustum culling is in a completely different location from the vertices. To avoid this, make sure that the skinned mesh node itself is part of the hierarchy, such that the bounding box moves with it whenever possible.
- To make sure the last LOD is useful, the second-to-last LOD should have a "minSize" of at least 1%, but preferably be higher.
- The last LOD should have approximately 150 triangles, 1 material and - ideally - shared textures with other LODs. Also note that:
- Since there are many objects far away, reducing them to one draw call is important.
- Its "minSize" property is ignored, it is always set to zero.
- If you do need a partially emissive or metallic last LOD, consider using a very small texture rather than creating a second material.
- You are not forced to keep the same node/instance structure in all LODs.
- Reducing the number of vertices and draw call on each LOD will bring you to a point where the instances could be merged together, and - if possible - they should be.
- Low poly LODs can sometimes be created with no texture at all, and you can simply use the vertex color to give the correct impression when viewed at a distance. However, this is not as important in MSFS 2024 as it was in previous versions of the simulation, especially if the textures used are shared between with LODs.
- If a model has lights, all its LODs will also need lights, otherwise you will see the lights "pop" into the scene as the LOD changes.
- All scenery model LODs, with the exception of objects that aren't important for collision, need colliders. You should prefer using the collision shapes - rectangle, cylinder, sphere - over collidable materials. This is explained in more detail here: Collision Handling
Airport And Scenery SimPropContainers
An airport can contain many models, and in previous versions of the simulation the recommendation was to merge these together to create a single large model. However in Microsoft Flight Simulator 2024, the "correct" method for creating airports and scenery is now to use SimProp Containers. The concept here is to create a lot of smaller asset "parts", each with their own set of LODs, and then connect them all together to make the final airport or scenery object. This method means that the SimProp Container object will show multiple different LODs for the individual LODs that comprise the objects inside the container, removing the amount of LOD "popping" and permitting increased detail of the parts closest to the camera, while also optimising performance.
For more information on setting up and creating SimProp Container objects in the Simulation, please see here:
LOD Animation
If you have any animated scenery elements it should be noted that the Microsoft Flight Simulator 2024 engine will perform some optimisations on them based on their size on screen and distance from the camera. What this means is that:
- As objects get further from the camera, animations will begin to "frame skip" and instead of updating every frame, they will update every N number of frames (the exact value depends on the distance). So, a 100 frame animation may play 1 animation frame every simulation frame up close, but then play 1 animation frame every five simulation frames when far away (frames are interpolated so it would play frames 1, 5, 10, 15, etc...).
- When the object is considered as less than 1% of the screens size then the animation will not be shown and the object will appear static.
The values used for these optimisation are based on the bounding sphere of the object which is calculated automatically by the engine based on the object mesh.