# Modeling SimPropContainers SimProp Containers are a combination static objects or SimObjects which are put together within [SimProp Container Objects](../../../devmode/editors/scenery-editor/objects/simpropcontainer-objects/) in [The Scenery Editor](../../../devmode/editors/scenery-editor/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 {{< glossterm >}}lod{{< /glossterm >}}s, 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 {{< glossterm >}}lod{{< /glossterm >}} system didn't help much since the camera could be close to one part of the building but far from another - so a large number of polygons would be computed and some memory would be used for objects that are at the opposite end of the building, and either not visible or meaningless from the user point of view.   Another benefit of SimProp Container objects is that many sub-objects can be shared between SimProp Containers and general scenery by creating your own [SimProp Libraries](../../../devmode/editors/project-editor/asset-types/#h2). Thanks to libraries, those objects that you use frequently do not need to be modeled multiple times and any improvements you make on those models will automatically propagate to the scenes that use them.     ### Creating The SimPropContainers Let's look at an example SimProp Container, from KLAX (Los Angeles International) airport, which has a lot of elements to add detail: {{< image-center src="images/3_Models_And_Textures/Landscape/SimProps/simprop_1_example_highpoly.png" alt="Example Of A Typical Detailed Model From MSFS2020" >}}   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): {{< image-center src="images/3_Models_And_Textures/Landscape/SimProps/simprop_2_find_parts.png" alt="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 {{< glossterm >}}lod{{< /glossterm >}}s 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 {{< glossterm >}}lod{{< /glossterm >}} independently, even though they are considered part of a single object. The image below shows some examples of these elements: {{< image-center src="images/3_Models_And_Textures/Landscape/SimProps/simprop_3_elements.png" alt="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"](images/3_Models_And_Textures/Landscape/SimProps/simprop_4_shell.png "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): {{< image-center src="images/3_Models_And_Textures/Landscape/SimProps/simprop_5_example.png" alt="Brief SimProp Creation Example" >}}     ### SimPropContainer LODs The objects placed within SimProp Containers should adhere to the general LOD guidelines given here: - [LOD Technical Information](../lods/lod-technical-information/)   However to aid with their creation here is an example of a single object to be used in a SimPropContainer with each of the different {{< glossterm >}}lod{{< /glossterm >}}s separated out: {{< image-center src="images/3_Models_And_Textures/Landscape/SimProps/simprop_6_lods.png" alt="SimProp Object LOD Example" >}}   In this example, you can see clearly the decreasing complexity as you move up through the {{< glossterm >}}lod{{< /glossterm >}}s, and the table below shows the statistics for each {{< glossterm >}}lod{{< /glossterm >}} so you can get an idea of the kind of reductions you should be aiming for:   {{< table-wrapper >}} | 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 | {{< /table-wrapper >}}   The next table gives you the approximate maximum number of vertices that can be displayed per LOD depending on the current [Size On Screen](../lods/lod-selection-system/) percentage:   {{< table-wrapper >}} | Screensize | Vertex Count Limit | |------------|--------------------| | 15% | 5000 | | 50% | 60,000 | | 100% | 250,000 | | 140% | 500,000 | | 200% | 1,000,000 | | 280% | 2,000,000 | {{< /table-wrapper >}}     #### 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... Again, the [LOD Technical Information](../lods/lod-technical-information/) guidelines should be followed as much as possible.     ### 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 {{< glossterm >}}lod{{< /glossterm >}} as a unique {{< glossterm >}}gltf{{< /glossterm >}}, and ensure that you create the appropriate XML for the collection of files. Below are the steps for this for both [3DS Max](../../plugins/3ds-max-plugin/the-3ds-max-plugin/) and [Blender](../../plugins/blender-plugin/the-blender-plugin/). 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 {{< glossterm >}}lod{{< /glossterm >}}, 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](../../../content-configuration/models/scenery-model-files-setup/)   To add the objects into the simulation to be used within a SimPropContainer, please see these sections: - [Creating A Scenery Object](../../../devmode/editors/scenery-editor/objects/scenery-objects/#create_object) - [Creating A SimObject](../../../devmode/editors/scenery-editor/objects/simobj-objects/#creating)   #### 3DSMax Export SimPropContainer Objects {{< image-center src="images/3_Models_And_Textures/Landscape/SimProps/simprop_7_3dsmax.png" alt="The 3DS Max Multi-Exporter" >}} If you are using 3DS Max then you should follow these steps: 1. In the [Multi-Exporter](../../plugins/3ds-max-plugin/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. {{< callout context="caution" title="IMPORTANT!" icon="outline/alert-triangle" >}} 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](../../../content-configuration/models/scenery-model-files-setup/) {{< /callout >}} 4. Export the objects for the SimPropContainer.     #### Blender Export SimPropContainer Objects {{< image-center src="images/3_Models_And_Textures/Landscape/SimProps/simprop_8_blender.png" alt="The Blender Multi-Exporter" >}} If you are using Blender then you should follow these steps: 1. In [The Blender Exporter](../../plugins/blender-plugin/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](../../../content-configuration/models/scenery-model-files-setup/) 5. Export the objects for the SimPropContainer.