MULTI-EXPORTER

The Microsoft Flight Simulator 2024 Multi Exporter, as its name suggests, is for exporting multiple glTF files at the same time. It was built to make exports easier, especially for big scenes with a lot of LODs, such as scenery and planes. However, it can be useful for even the smallest of scenes.

NOTE: The multi-exporter is the recommended mechanism for exporting glTF from 3Ds Max. The other available exporter is the the MSFS2024 Utilities tool, which is actually what the Multi-Exporter uses "under the hood". However, this tool has many options that are not used for Microsoft Flight Simulator 2024 glTF, and only exports one file at a time. Therefore it is highly recommended that you stick to using the multi-exporter for everything.

 

The multi-exporter option will be available after installing the 3DS Max plugin and can be found in the top menu under MSFS2024 > Multi Exporter.

 

 

 

The Multi Exporter has an Scene hierarchy based export View (primarily for exporting scenery objects), a User defined layer based export View (primarily for exporting SimObjects), and an Options Menu for controlling certain aspects of the export process based on option presets. Exporting scenery using this tool is very straightforward, however exporting SimObjects can be a little more complicated. To help with this, you can find a tutorial outlining the general process for using this tool to export an aircraft SimObjects on the following page:

 

The Multi-Exporter Main View

When you first open the multi-exporter, you will be presented with the following window:

The Important Features Of The Main Multi-Exporter View

 

In this window you have these three main sections:

  1. Main panel: In this panel the you will find all the glTF files listed.
  2. Export: Here you have multiple buttons that are used to export the glTF files using different criteria.
  3. Log: This window will contain important information related to the use of the multi-exporter window, including information about any issues or errors.

 

The Secondary Features Of The Multi-Exporter Window

 

The window also has the following secondary elements that will be important when exporting:

  1. Top bar: The options here are used to modify the list view in the main panel.
  2. Tools: Here you can find some of the additional tool available to you when setting up the exports, specifically the Export Options and the Scene Efficiency tool.
  3. Progress bar: Every time an action is performed the progress bar will be updated.
  4. Menu bar: Here you can find the Texture Tool as well as a tool to resolve unique IDs.

 

 

The Scene Hierarchy View

In the main section of the multi-exporter there are two tabs you can select from to setup the export. In this section we'll be looking at the Scene Hierarchy Based Export tab, which is primarily designed for exporting scenery and static objects. For SimObjects, please see the section on The User Defined Layer View.

The Scene Hierarchy Based Export Tab

 

This Scene Hierarchy Based Export view relies on the names of your root nodes in your scene. If your scene object's name starts with x0_ or ends with _LOD0 it will be considered a LOD0 (x1_ and _LOD1 will be LOD1, and so on). The rest of its name defines its category so that all the objects from the same family (ie: different LODs of the same asset) will be sorted together in a list based on all the root objects in your scene Note that if an object doesn't have LODs it will be shown alone in its own category.

NOTE: You can conform the layers of your scene to the structure shown in the Objects list by clicking the Conform Layers button in the bottom right. This will create a layer for each category and each LODs group and put the corresponding Nodes on the correct layers. Objects not represented in the list will be put in the default layer 0. It should be noted that this cannot be undone.

 

From the Scene hierarchy based view you can select the items in the list that you want to modify in multiple different ways:

  • by clicking the check-boxes on the left of each item
  • by selecting the root and clicking the Hierarchy checkbox.
  • by clicking an item to select it (it will be highlighted), and you may use either Shift or Ctrl to select multiple items this way.

 

All the items will appear in a list in the main window:

The Item List In The Scene Heirarchy Based View

  1. Hierarchy

    This display the objects in scene (and may be filtered). If an object is parented to another, only its parent will be shown here. This is why only hierarchy roots will appear in the list. If objects follow LOD naming conventions (ie. _LOD[NUM] suffix or x[NUM]_ prefix) they will be listed under the same model name. The XML and in-simulation model name will be the group name.

    1. Checkbox shortcut: toggle checked state of selected items in list
       
  2. ~Efficiency

    This is the estimated efficiency of the final model. This is based on the number of vertices in the final model against the number of triangles. If more vertices are shared between triangles, the mesh will be more efficiently processed by the GPU. For that reason you should always try to weld vertices in your geometry, and also in your UV channels and vertex color channels.

    1. Inspect hierarchy: This button will display statistics only for the current object's hierarchy. This will also allow you to remove existing vertex channels (UVs and vertex color AND alpha). Note that it is not possible to clean the vertex alpha channel any other way in 3DS Max. See here for more information: Scene Efficiency
       
  3. ~Draw count

    This is the estimated draw count of the final model. A high draw count can adversely affect performance especially on lower LODs seen at a great distance. To mitigate this issue, you can collapse your meshes into one instead of having multiple meshes. Keeping instances will also help, as each instance shares the same draw call. Too many draw calls will affect performance negatively, and too many separate objects will also affect performances negatively too (since a separate transform will need to be computed by the CPU), so you have to find the right balance.
     

  4. ~Vertex count

    This is the estimated number of vertices of the final model. More vertices means more processing power is required. To help deal with this issue, the simulation is always trying to keep a reasonable amount of vertices on screen by automatically switching to a lower LOD when necessary. For that reason you should always provide multiple LODs for your models.
     

  5. LOD Min size %

    This is the screen size limit before LOD switching will occur. Note that if you set a limit that is too low, LOD switch will be forced by the simulation. If no lower LOD is found, the model will simply disappear. The value displayed here will be adjusted according to the estimated vertex count, but - since this is not fully accurate - you should always double check results in the simulation yourself.
     

  6. Path

    This is the export path for the glTF model. The glTF final name is the one displayed in the Hierarchy column (so the final name will be path/[hierarchyName].gltf).

 

While editing items in the list view you can right click on items to get the following options:

The RMB Menu In The Scene Hierarchy Based View

  • Select in scene: select selected item(s) in list in viewport.
  • Open export folder: open explorer at location pointed by export path.
  • Export selected: export glTF and XML files for selected item(s).
  • Export selected (Gltf only): export glTF file(s) for selected item(s).
  • Export selected (XML only): export XML file(s) for selected item(s).

 

Once you have selected the item(s) in the object list that you want to edit, you have the following options:

  1. Auto LODs

    Use this option to generate LODs automatically. LODs will be created when building package in the simulation.
    NOTE: Auto-LODs is only available with a Simplygon licence and with the Simplygon SDK properly installed and activated. See here for more information: Using Simplygon To Generate LODs). 

  2. LOD Min Size (%)

    Set the minimum size value of the selected items. This is the minimum size the LOD will be displayed at before switching to a lower LOD. LOD size on screen is based on the LOD’s bounding sphere against the screen height (For example: setting a min size of 70% will allow the LOD to remain visible until its bounding sphere height takes down to 70% of the screen height). See here for more information: LOD Selection System
     

  3. Adjust Bad Value(s) To Minimum Safe

    Clicking this button will change all values of the selected items, if they are not set properly (the ones displayed in red or not set at all). All other values will be kept. The resulting values are adjusted according to the estimated vertex count. Since this is not fully accurate, always double check the results in the simulation.
     

  4. Keep Transform

    With these buttons you can toggle whether to keep the object's position / rotation / scale in space. By default scale and rotation will be kept, but not position.
     

  5. Export Options

    From this drop down you can control certain aspects of the export process based on option presets. You may edit presets using the Export option button in the Export tools section (see here for more information: Option Preset And The Options Menu).
     

  6. Export Path

    Here you can set, edit, or remove the export path applied to the selected items.
     

  7. Conform Layers

    Clicking this button will create a scene layer for each export model and each LOD and put the corresponding objects in the right layers. Objects not represented in the list will be put in the default layer 0. This can be useful if you want to translate the current list to the User Defined Layer Based Export tab.

 

The general workflow is to select the items you want to edit, and then set the options that you require for them, then apply those options, before exporting. Note that you can filter the list of visible items to make them easier to edit by using the filter options at the top of the list:

The Filter Options For The Scene Heirarchy Based View

  1. Filter toggle: Toggles whether to use or bypass the current filters
  2. Only Exportable: Selecting this will display only valid objects. A valid object must have an export path.
  3. Only visible in scene: Selecting this will display only those objects that are visible in the scene.
  4. Only LODs (with number selection): Selecting this will show only properly named LODs of the given LOD level number. If the number is set to -1, then all LOD levels will shown.
  5. Name filter: Here you can enter name and press Enter to filter the list entries.

 

When finished the model can then be exported. For more information see here:

 

The User Defined Layer View

The User Defined Layer Based Export view allows you to create export presets - and groups of presets - that will make it easier to export a large numbers of objects, animations, etc... and assign them all specific characteristics without having to edit them individually. This view is primarily designed for exporting SimObj Objects. For scenery and static objects, please see the section on The Scene Hierarchy View.

The User Defined Layer Based Export Tab

 

This exporter relies on scene layers being selected and added to a Preset, and as such requires your scene to be split into the relevant layers before using it. If you didn't set up your layers you can normally use the Conform Layers button to automatically set them up. This should work as long as you have used the appropriate naming convention, ie: the object's name starts with x0_ or ends with _LOD0 for LOD0 objects (and x1_ and _LOD1 for LOD1 objects, and so on). This naming is required for the Conform Layers button to work correctly. Any object that is not named with the LOD suffix/prefix will be placed in the default layer "0".

 

All objects will appear in a list in the main view of the tab:

User Defined Layer Based Export List View

  1. Name

    This displays the name of the objects in the scene and their hierarchy.

     
  2. Path

    This is the export path for the glTF model. Note that changes to the path applied to groups will propagate to children in the group.

    1. Toggle Checked State: This checkbox is used to check/uncheck objects in the list.

 

While editing items in the list view you can right click on items to get the following options:

The RMB Menu In The User Defined Layer Based Export View

  • Rename selected: rename selected item(s) in list.

  • Remove selected: remove selected item(s) in list.

  • Duplicate selected: duplicate selected item(s) in list.

  • Add new preset: add a new glTF to export.

  • Add new group: add a new group. Export options are set on groups.

  • Open export folder: open explorer at location pointed by export path.

  • Export selected: export glTF file(s) for selected item(s).

 

You can use the Edit Selected Lines toolbar to set properties on selected item(s) in list:

The User Defined Layer Based Export Edit Selected Lines Options

  1. Duplicate/Remove

    These buttons are used to wither duplicate or remove selected items.
     

  2. Export Options

    This is used to control certain aspects of the export process based on option presets. You may edit presets using the Export option button in the Export tools section (see here for more information: Export Options).
     

  3. Export Path

    From here you can set, edit, or remove the export path applied to all selected items.

 

The general workflow when using the Presets view is as follows:

  • First ensure that your objects and animations, etc... are all on the appropriate layers.
  • Once you have everything on layers, you would create your Groups using the Group button. This will open an explorer window where you can select the folder that you wish the glTF to be exported to. For example, a group for animation, a group for the base aircraft, a group for a livery, etc...
  • In each group, create your presets by using the New button. An explorer window will open where you can give a name for the glTF to be exported (note that the path will be ignored and the file will be saved to the group folder path location).
  • Select the preset by clicking on it (it will be highlighted, and you may use either Shift or Ctrl to select multiple presets at once), then in the layers section, check each of the items to be added to the preset(s), before finally clicking the Apply button. Note that you can expand the layer hierarchy with the Expand All button and contract it again with the Collapse All button.
    • Repeat this step for each of the different presets that you wish to edit.
  • Once all the presets are set up, you can then select each of the groups and choose the appropriate Option Preset for it. For more information on this, please see here: Option Preset And The Options Menu
  • When finished the model can then be exported. For more information see here: Exporting

NOTE: You can add a preset outside of a group, in which case you can set the path as well as the glTF name. However you cannot give it any custom Option Preset, and presets outside of groups will always use the "default" options.

 

 

Exporting

Once you have set up the options for each item in the The Scene hierarchy based export View or The User defined layer based export View, you can then go through the export process. Exporting is controlled by the buttons and options in the Export section of the multi-exporter:

 

 The Export Models Options

  1. Export checked: Export all models checked in the list.
  2. Export selected: Export all models selected in the list.
  3. Export visible in list: Export all models visible in the list with the applied filters. If you wish to export all while keeping your filters you may use the toggle button.
  4. Export models as glTF: If this is selected then all models will be exported.
  5. Generate/Update XML: If this is selected then the associated XML file for models will be created / updated with new glTF models (only available from The Scene Hierarchy View).
  6. Generate TextureLib: This will generate an associated texture XML file for each texture used. This can also be done from the Texture tool (available from the Utilities menu) which allow more control to set flags on textures.

 

The general export process is as follows:

  • Click the Open Texture Tool button to open the Texture Tool and set up the FLAGS and Ansiostropic values for the textures and export xmls for your textures.
  • If you don't want to use the Texture Tool, you can check the Generate TextureLib option. This is necessary the first time you export the glTF files, as it creates the Texture XML files that are required by the simulation for optimising textures. Subsequent exports of the same project do not need to have this ticked.
  • Check the Generate/update XML button (only available from The Scene hierarchy based export View as SimObj objects require a more customised XML file: see here for details: Model XML Properties). This will generate an XML file with the required LOD details, something like this:
    <?xml version="1.0" encoding="utf-8"?>
        <ModelInfo guid="{1b7127b5-7223-4980-8cc0-3b5417cb2412}" version="1.1">
            <LODS>
                <LOD minSize="0" ModelFile="Cube_LOD0.gltf"/>
                <LOD minSize="1" ModelFile="Cube_LOD1.gltf"/>
                <LOD minSize="2" ModelFile="Cube_LOD2.gltf"/>
            </LODS>
        </ModelInfo>

 

Note that on export, the bottom of the multi-exporter will show an output log where you can track any issues and see if the export has been successful or not. The log can be cleared by clicking the Clear button at the very bottom.

 

 

Export Options

The Export Options menu allows you to change the export options directly from the multi-exporter and is opened by clicking the Option button, at the bottom of the window.

 

This menu has a preset field on top with an immutable default entry. The default entry shares all its options with the base Babylon Exporter, and changes here to the default values will be saved for the whole Babylon Exporter as well.

Preset Export Options Settings Tab

 

You can create you own Option Preset by clicking the + button, giving a name, and then pressing Enter. If you need to rename the Option Preset, you need to select it and simply type the new name in the name field itself and then press Enter. If you need to remove an Option Preset, you can click the - button. Note that these options will not work for the default setting.

 

The options available to you on the Settings tab are as follows:

  • Autosave 3ds Max File: When this is checked, the scene will be saved after Exporting.
  • Export Hidden Objects: When this option is checked, any hidden objects on layers will be exported along with everything else.
  • Export As SubModel: When this option is checked, you are flagging the exported model as being a "submodel". This option should only be checked if you are using the Submodel Merging and without it, you will not be able to merge any models within the simulation. Note that this option will also require that your model hierarchy all falls under a dummy object named "Root".
  • Remove LOD Prefix: When this option is checked, the names of all objects will be "cleaned" to remove the LOD prefix/suffix. This can be useful as it means that in the Model Behaviors XML you can target a single object and have it act across all LODs.
  • Flatten Nodes: - This option is only available in the The Scene Hierarchy View, and cannot be used with the Keep instances option. This will collapse all meshes in the hierarchy, which helps improve performances a lot and should be set whenever possible. It will keep all gizmos such as collision gizmos, lights, and dummys, but will simply parent them to the newly created collapsed mesh. If there is no mesh in the hierarchy, it will parent all objects to the first one it finds.
    NOTE: collision gizmos will not work if not parented to a mesh!
  • Keep Instances: This option cannot be used with the Flatten Nodes option. When checked, this will keep instances in the glTF, which may help with performance if multiple objects are instanced in the scene. Note that too many instanced objects may actually impact performance negatively, as it means the CPU has to calculate each object transform separately every frame. It is preferrable to use this option only on objects that have a high draw count.
  • Export Material: This option can be used to export the mesh without materials (the mesh will be blank).
  • Normal Map Convention: This must be set to Directx for exporting glTF to use in Microsoft Flight Simulator 2024.
  • Asobo Unique ID: Usually IDs are created from the object name, however if the model uses objects that share a name then the exporter will stop and give you a warning, since this means that there will also be node names that are the same and not unique. Checking this option will mean that when you export a glTF using the exporter, each node will automatically have a unique ID assigned to it and these IDs will be validated as part of the export process.
  • Animation:
    • Export: Animation will be exported along with everything else.
    • Not Export: No animations will be exported.
    • Export ONLY: Only the animations will be exported. Note that for this to work you must have the Asobo Animation Retargeting option checked in the Advanced tab.
  • Use PreExport Process: When enabled, this option will do the following:
    • lock the file
    • execute modifications on the file
    • export the file
    • fetch the *.max file
    Additionally, enabling this will give you access to the following options:
    • Merge Containers And Xref: When checked, this option will merge any Containers and Xref into the scene, export the merged scene, then reopen the original scene.
    • Apply Preprocess To Scene: When this is checked, all preprocessing will also be applied to the scene after exporting.
      IMPORTANT! This cannot be undone, so take care when checking this option as it could break your scene.
    • Bake Animation Options: These options can be used to bake animations on every key-frame in the timeline, preventing some potential animation problems within the simulation. Note too that some meshes with constraints will only work in the simulation when the animation is baked. The available options are as follows:
      • Do Not Bake Animations - No animations will be baked.
      • Bake All Animations - All animations will be baked.
      • Selective Bake - Only those nodes with the object property babylonjs_BakeAnimation = true will be baked.

 

There is also an Advanced tab, with the following options:

Preset Export Options Advanced Tab

 

  • Write Textures: When this is checked, textures will be written to the folder specified for the Texture Path.
    IMPORTANT! Using this option will convert any textures that are not PNG or JPG/JPEG - for example TIFF images - into PNG when writing them to the given texture path, which may not be what you want.
  • Texture Quality: Sets the texture quality on export between 0 and 100. Normally you would keep this at 100.
  • Overwrite Texture: When enabled, this permits the export to overwrite any textures already in the output directory.
  • Texture Path: Sets the path where you wish to export all the textures. This path is only used when the Write Textures option is checked.

 

 

Scene Efficiency

The scene efficiency can be checked at any time by using the mesh inspector tool. This is opened by clicking the Check Scene Efficiency button underneath the main view, or by clicking the little efficiency icon in the ~Efficiency column when in The Scene Hierarchy View.

How To Access The Mesh Inspector

IMPORTANT! The statistics shown by this tool can only be partially correct because it would take too much time to compute the final number of vertices and draw count that the mesh will end up with after export. For that reason you should only trust the final in-simulation statistics. However this tool can give you some useful insights before getting to that stage.

The Mesh Inspector Window

The options available at the top of this window are as follows:

  • Refresh: Refresh the list in the main view.
  • Display Per-Channel Statistics In List: When selected, this adds a detailed view of channels to the list in the main view. You will need to refresh list after you change this option. Disabling this option will display a more compact view and may help get a better grasp of the scene. Note that you can still see some statistics in the compact view by hovering the mouse over the vertex count or the object name.
  • Expand/Collapse All: Exapands or collapses the list hierarchy.

 

The rest of the window is occupied by the list of objects int he scene, and columns listing their approximate statistics, which can then be checked and expanded upon (assuming you have Display Per-Channel Statistics In List checked). Expanding the stats for a single object will show a colour-coded sub-list of elements:

Colour Coded List Of Object StatsNOTE: The Vertex Color channel displays both vertex color and vertex alpha channels. It is possible to use unwrap the vertex colors but unfortunately the alpha channel will be left unaffected. For that reason you should make sure the channel is clean before starting to work with vertex colors.

 

The colours used here are:

  • Green: Optimimal
  • Orange: Can be optimised further but is useable
  • Red: Unoptimised and should be improved before exporting

 

When checking the stats, you can quickly check the model itself to see what the issue is (or isn't) by double-clicking on the object. This will select the object in the scene and you can check to see if the values shown in the Mesh Inspector are legitimate or not. For example, say you had an object with the UV1 showing yellow and the Vertex colour showing red, eg:

Bad Stats Example

After checking the scene, you discover that the UV1 vertices aren't welded (which you fix) and then you see that the Vertex Colors are all white with 100% opacity. This means the channel can simply be removed, which you do from the Mesh Inspector using the X button to the right of the statistic. After refreshing the Mesh Inspector once more, the stats look like this:

Corrected Stats Example

This results in an object that is three times more optimised than before. Using this technique will help your meshes appear at a greater distance with more fidelity in the simulation.