Download

Shouldn't instances from Max be converted into instanced static meshes?

I’ll ask out here in the open before I submit a bug report.

I have a file with 1700 instanced objects in Max.

These come in via Datasmith as 1700 staticmeshactors, which apparently generate over 5000 draw calls.

So, instancing isn’t automatic in Unreal, like it is with Unity?

Why doesn’t Datasmith import this as what is apparently called InstanceActor, or at least have an option for it?

We bought an asset as a workaround right now, but still it feels a bit odd.

Also, I’m not sure if it is because of the asset we bought, but you can’t see the original mesh or material slots at all in the InstanceActor, which is quite horrible.

EDIT: Am I mistaken or does Epic not provide a native way of editing instances and instantiated actors? Each asset I’m looking at is calling the instanced actors something different and view their details differently… this really seems quite a mess! What am I missing?

instanced 3ds max nodes will convert as actors referencing the same static mesh asset. is this what you have or you are referring to another type of entity?

Right, and for Unity, that would seemingly be enough, because Unity automatically batches draw calls on objects which reference the same static mesh.

But unless I’ve been fooled by “stat scenerendering”, I had to purchase the following asset to get my framerate back up:

I’ve filed a bug report on this anyway.

Well, its not a bug per say… there are considerations into this. For 4.22 we have rewritten how railclone and forestpack are translated to Datasmith. In those cases we create Hyerarchical Static Mesh Instances (if this is the type of entities you looked for). However with 3ds max nodes/instances, its not that simple. Many of those nodes could have different materials. Its true that we could optimize this somehow. But still, you would lose access to the individual objects so it really depends what you want to do in Unreal.

We are looking at adding extra functionality in a dataprep pipeline that should let user make that decision at import time. That can be scripted via python in the moment.

These weren’t Railclone objects, just Max instances, but good to hear that’s also being looked into! That asset I linked to is able to collapse and uncollapse all my objects in the level with matching meshes and materials to instances in one button click, and seems to be blueprint only, not python.

I was just surprised it wasn’t a fully implicit thing, so I guess it’s just another layer of complexity with Unreal to add to the pile one needs to keep track of.

i have been told that auto instancing has been done for 4.22 so it should work without intervention