Best method for importing thousands of mesh objects from 3d app?

So I’ve got a 3Dmax scene of a sports stadium, with thousands of stadium seats placed very precisely. What is the best way to import them into UE4? It wouldn’t be practical for me to collapse them into a smaller group of meshes, nor to import a single seat and have to re-position them for the entire scene.

Is there a better way?

(At this stage I’m not concerned with performance issues that may arise from too much geometry, I’ll tackle that later)

First, figure out what the total tri count of all the seats are, if it’s really high, then work on lowering it. Using individual seats will kill performance so you then need to combine the seats into groups. Maybe something like 10-20 groups would be OK. Depending on the stadium layout you might be able to just work on one quarter of the seats and then you would copy and mirror those groups to the other 3/4 of the stadium. At the very least you can probably do that with half. You have to do it properly now because the performance would be so bad otherwise.

Thank you, but my question isn’t really about performance.

Lets presume that the number of seats I’m adding to the scene won’t be an issue. With that assumption in mind, I need to know how to import a large quantity of meshes that all retain their correct positions. I’m also assuming (correct me if I’m wrong) that UE4 would handle this better if those seats were all instances of the same static mesh.

So since it isn’t an option for me to import a single seat model and re-position it for the entire stadium, is the next best option to collapse groups of seats into mesh objects?

The only reason to have the individual seats is because it would only keep one in memory(instanced), which would save memory. Each seat would still count as a draw call, even having like say 1,000 would slow down performance significantly. I’ve done stadiums in the past where putting 90,000 seats in there isn’t an option.
It would be better to take the hit in memory than it is to take the hit in draw calls.

we also have this kind of problem. and we solved it like this:

first of all , you need to move all non-instanced objects to world center and export these in one fbx, the reason for this is that if you don’t place these objects into world center UE4 will use world center as object’s pivot. and of course if you don’t have instance at all, then just export everything into one fbx.

then in UE4, import this fbx, make your materials, and put all imported assets into a level and set all these assets’ position to (0,0,0), then it’s all placed correctly.

if you moved all objects to world center before export, then you need a script to export all objects as actors to t3d format, we’ve write our own script to do this and put content directly into clipboard, so all we need to do is import fbx, export scene to t3d format into clipboard, and ctrl+v in UE4Editor, then all objects are placed precisely as in 3d app.

one big problem is that t3d format don’t have any information about instances for instancedstaticmesh. so we have another script to export these instances. but we have to manually ctrl+v for every instancedstaticmesh.

to all other ue4 users, this is not a standard game level assemble method, but no matter how advanced is the UE4Editor, assemble a complex scene are not easy as in 3d apps.

you can easily get the t3d format from UE4Editor, just select some actors, CTRL+C, then paste in some text editor. this formats are really simple.

I recall seeing a thread about a script someone wrote that imports full scenes (maybe even in real time) from their 3D package, not sure if it was a max script though…might be worth searching the forums.

Ah, it was a maya script but might be worth having a look anyway as they have released the source code: m2u interactive sync script for Maya -> UE4 - Work in Progress - Unreal Engine Forums

I don’t know if this would be helpful…!!
Introducing 3ds MAX to UE4 FBX and t3d Exporter MaxScript

Thanks every one =) I’ll spend some time today going over these options.

in 3DS max would it not be easiest to highlight ALL meshes in the scene and combine them? Then it would be one large mesh you can import and everything will still be in it’s proper position.

True only if performance is no object… The tri count would be brutal, since nothing would be instanced and nothing would ever be occlusion-culled.

I would say that, unfortunately, the best way of doing this would be exporting individual seats as meshes and re-placing them in Unreal, simply because you can use something like the foliage tool to make them instances of one another. It’s inconvenient but probably the only practical way of doing it.

But, yeah, if (as the OP said) we’re presuming that performance is a non-issue then exporting the entire thing as a single static mesh with just dozens and dozens of material elements is the surest way of doing it.

By the way, as far as improving performance in Unreal when you have many objects–all it does is combine the meshes, like with foliage or the Instance Static Mesh Blueprint. It reduce the draw calls by combining them.