Stadium Crowd system in Unreal

Hi,
I’m a Technical Artist at Rainbow Studios, we make Motocross/Supercross racing games (MX vs ATV series). The event types are 70% indoors, like in Football/Baseball stadiums and 30% outdoors.

We recently switched to using Unreal Engine - until then we’ve always used our in-house engine. I have been trying to come up with a good solution to generating our stadium crowd, which is quite large with 50,000+ billboards to fill up the stadium.

So far, here’s the 2 methods I tried:

  1. The CrowdImposter function to pick between the different UV tiles to render each billboard correctly base on the camera angle, along with the PivotPainter tool to export all the billboards from 3DS Max as 1 object, with each face having it’s own pivot. This technique works ok, but setting up and exporting the crowd in 3DS Max is very time consuming, especially considering the fact that we have a dozen different stadiums to fill-up.

  2. The Procedural foliage volumes, which make it easy to setup and render thousands of crowd billboards, but I am having some lighting issues and I also can’t get the CrowdImposter function to pick between the different UV tiles to render each billboard correctly base on the camera angle, it’s always facing the camera no matter what.

So, I was wondering if you guys have any pointers regarding generating large Stadium Crowds in Unreal? What would be the best solution?

Thanks in advanced,
Stephane

Hi Stephane,

FWIW, we ended up using Vertex Animation to animate our crowd, which worked out well for us.

Steve

Hey Steve,
thanks for the tip, I am looking into it right now and gonna do some tests to understand the process.

Did you guys use Instanced Static Meshes for the crowd then?

Steve, thanks a lot for the info. I’m gonna try this approach and see if it would work for us. I really appreciate the help :slight_smile:

Hi Stephane, yes we did use Instanced Static Meshes. Our crowd isn’t as large as yours, but they are all 3D characters and we have several thousand of them. We tried normal skeletal animations first, and played around with several other techniques, but they were all either cost prohibitive or looked pretty bad.

Once we discovered support for vertex animations, we gave that a shot. In less than a day we had the crowd animating. The tools and runtime worked right out of the box. We were very pleased with the performance and the quality. We’re working on a VR app, and so have to achieve 90 FPS, which gives you an idea of how fast vertex animation is.

Of course, vertex animation isn’t nearly as versatile as skeletal animation. For our crowd, we blend in 2 different vertex animations, and drive the blend value from the game to give the appearance that the crowd is reacting to the player. We also offset the vertex animations by a random amount per instance to get variety. It all works well.