plane icon Welcome to Microsoft Flight Simulator’s SDK Q&A Platform!

You have questions regarding the SDK? DevMode Tools? SimConnect? You would like to submit an idea for future improvements, seek help or exchange knowledge? You’re in the right place.

Please take a moment to read the platform’s guidelines before you get started!


tsgucci avatar image
tsgucci asked tsgucci commented

Instance with symmetry and nodes

I am trying to utilize the ability to use instances where possible. I understand the basics, some object I simply copy as an instance and thickmarking the "Keep Instances" in the Babylon exporter really generates a smaller file which indicates the instances are recognized.

But what about if I have an object which is a completely the same, just mirrored. Like this wall part. It is symmetrycal.

I have tried several ways but looking at the other methods are not working properly

Symmetry modifier is not recognized as instance

Mirror modifier is not recognized as instance

Copy as referenced and a Mirror modifier over it is not recognized either.

Mirror button from the toolbar than select as instance is recognized as an instance but the "good old" 3ds max kicks in and all normal are multiplied with -1. The object looks great in 3ds max, but in the simulator all polygons are flipped.

Is there any way to achieve a mirrored instance?

There is one other topic. The SDK mentions a lot of times the nodes. Like here:

Most probably my 3ds knowledge is lacks some basics but what do you mean by that? (e.g. "However, on the right, the black boxes describe how this single object has been split into smaller objects that can now be clipped by the camera easily. "


"you can clearly see that the amount of nodes introduced by instances (for the pillars) would have a negative effect due to the sheer number of nodes required "

Does it mean one node is gltf object? Like you build your airport in one single 3ds project but exports into several objects (gltf)? One node is the model root? Is it a dummy or a simple layer?

Thanks a lot!


1634240259136.png (696.5 KiB)
10 |10000

Up to 5 attachments (including images) can be used with a maximum of 4.8 MiB each and 23.8 MiB total.

1 Answer

virtuali avatar image
virtuali answered tsgucci commented

I think this definition of what Nodes are is quite accurate:

Nodes are the items in the 3ds max that have a one to one correspondence with objects in the scene. Every procedural object, light, camera, helper object, etc. that appears in the viewports has an associated node. The node stores many properties that allow the item associated with the node to relate to the scene. These are properties such as a transform controller, a material used for rendering, a visibility controller, hidden/unhidden sate, frozen/thawed state, wireframe color, and many more.

So, basically, everything in see in the Hierachical view it's a Node.

Dummies/Points are nodes too so, for example, if you have some hierarchy like a Dummy containing another Dummy containing a Mesh, that's 3 nodes because, to all of them you might have apply some kind of transformation (scale, rotate, etc.) and they all affect each other in cascade.

Layers are NOT Nodes, they are just an abstraction to help you organize stuff in Max, but they have no relationship to what gets exported.

There are many issues at play when balancing the usage of Instances, the object size (so they might culled more/less effectively) the instance size, the saving of using Instances compared to the overhead of using lots of Nodes, so you must really judge depending on the situation.

I guess that, if you have 1000 instances of a 4-sided object, it's *likely* ( I can't say for sure though, manybe some dev from Asobo might chime in ) the overhead of dealing with 1000 Nodes, even if they are Instances, might not be worth the saving of instancing and, possibly, it might just be easier to Attach them all and just draw thos 4000 polygons together. However, this would change if those polygons are very close together and cover a rather small place, or they are spread around the whole airport. In the latter, the camera culling might work better if they were nodes.

Instead, if you have many objects with a more significant polygon count, like 100 identical objects of 2000 polygons each, it would be a perfect case for Instancing.

But, that kind of object might even work better if it was exported as a separate .gltf, using multiple LODs.

This last question is for Asobo: is Instancing only useful when many identical objects are exported in the same .glft ? Or, is exporting the object separately with its own guid (likely in multiple LODs) and including it multiple times in the .BGL an even better optimization method ?

Or, to express it in a slightly different manner: Is DirectX Instancing used when the object is inserted multiple times in the scenery from a single .gltf, or only when we have "Instances" of it in a single large .glft that contains it and other objects too ? Or is it both ?

Lastly, I don't know if there's a better way to optimize symmetric objects. Usually, exporting mirrored objects always gives bad results in Max, because what the Simmetry modified does, is to add a transformation with a reversed scale ( usually -1 in all axes ), which cause game engines to display objects with flipped normals, so you'll probably have to apply an Xform modifier first, then collapse it to an editable Mesh/Poly. In that case, you'll end up with a separate reference object, from which you could create its own separate Instances. Not sure if there's a way to keep a common Instancing but with different simmetry, probably not.

1 comment
10 |10000

Up to 5 attachments (including images) can be used with a maximum of 4.8 MiB each and 23.8 MiB total.

tsgucci avatar image tsgucci commented ·
Hi Umberto!

Thanks for the detailed answer! You helped a lot!

0 Likes 0 ·

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 5 attachments (including images) can be used with a maximum of 19.1 MiB each and 23.8 MiB total.