Converting high-density scenes for use in UE4

Hello folks! I’m doing some R&D for the company I work for to see if UE4 is something we can benefit from. I make my own personal projects with UE4, so I’m really hoping I can make a case to use it at work. We basically do arch-viz of sports stadiums.

In my experimentation, one of the biggest hurdles I’ve run into is the seating in our stadiums. I’m not sure to how to go about bringing in 50,000+ stadium seats into Unreal. Making low poly LODs is easy enough, but Unreal doesn’t handle that number of actors well. Is my terminology correct if I say this is an issue of too many draw calls?

I’ve thought about combining groups of seats into a single object, but I’m not sure that’s the optimal solution. That would complicate our instancing and add a lot of additional steps if we ever needed to go back and change something like a design feature on an individual seat.

Does anyone have any insight on this type of problem? I don’t know if I just need to wait for computer tech and UE4 to advance further, or if there is a solution I can employ now…

Thanks for your time =)

You are correct, you are rapidly blowing drawcalls on these seats. If the seats are individual meshes, you may use Instanced Static Meshes or Hierarchical Instanced Static Meshes. All of the meshes will have the same material and shape, but they can have a different Transform (location, rotation, and scale). You create a blueprint with an instanced static mesh component. Then you ‘add instanced’ to add another instance of that mesh to the blueprint.

Edit: I forgot to mention that the instanced static mesh will use one draw call (it will save you an enormous amount of overhead).

Great- It certainly was my intent to do that type of instancing, but I may not have been doing it properly. I will look into it further.

Should I expect UE4 to handle 50,000 instanced static meshes? (Assuming the seats in question have appropriate LODs and might only be a dozen triangles when hundreds of feet away).

To correctly instance:

  1. Add an instanced static mesh component
  2. Pick your base mesh and material (they can’t change).
  3. Click the + to add an instance.
  4. Set the instance transform
  5. Repeat

For 50,000 instances, you may want to generate them in a loop of some sort. It should be able to handle 50,000 meshes as long as your PC can run the triangles. You will not be limited by draw calls because the mesh and material are instanced. I’ve run around 20,000 trees before with minimal frame-rate hit and I know they had quite a few triangles up close (I was using hierarchical instanced static mesh components).