Golaem Crowd Procedural Rendering - Part2
Previously in Golaem Crowd Procedural Rendering…
- John: Mike, we all gonna die! We have two 1000 characters crowd shots to render by 6pm!
- Mike: Don’t worry John, there is necessary an appropriate export options in Golaem Crowd, we’ll get out of here…
- John: Should I use the FBX export?
- Mike: No, it’s a job for Procedural Rendering!
Procedural Rendering
After such a teaser, you may wonder what Procedural rendering is! Well it’s the ability for a rendering engine to call an helper program which generates geometry on-the-fly in response to specific procedural primitive requests in its scene description language (i.e. RIB for Renderman, vrScene for VRay…). Any rendering engine worthy of the name provides this functionality: it’s called DSO (in Renderman) or Geometry Shaders (in Mental Ray) but it always works the same way : inputs parameters, outputs geometry, black box inside.
As you can guess, it’s a very efficient way to generate lot of objects of pretty similar geometries. Mhm, wait a minute! Lot of objects? Objects of pretty similar geometry? Well, that’s exactly what crowd is! So, what do we need as input parameters?
- Reference Geometries: for each type of characters, the TPose skinned geometry and all usable props;
- Asset Repartition: for each character, the name of the props, shaders to use and their parameters;
- Posture: for each frame, for each character, the position/orientation of each bone;
How does it looks like in Golaem Crowd?
Here’s where those different parameters come from in Golaem Crowd:
To store our simulation results (e.g. postures), we rely on the Disney Partio particle file format. In addition to high performances (both in terms of disk space and access times), it supports several common particle file formats (Houdini’s GEO, Maya’s PDB & PDA...). What if we take our previous example of 100 frames of 100 characters and get some numbers? Well, it rocks: 37Mo on the disk and 2min to load (instead of 1.5Go and 16min with FBX). Nice, isn’t it?
So, let’s take the workflow above and adapt it to our needs:

But the most awesome feature about Procedural Rendering is to come: as reference geometry and asset repartition are only read at rendering time and are independent to what has been computed during the simulation, they can be changed as many time you want for free.
Damn, a bare-chested guy in the foreground of my 10k characters snowy scene? No problem! Open the Asset Manager tool in Maya, edit the shirt repartition, save your file and render again. Yes you read it, as simple as that: you don’t need to launch the simulation again! If you’d like more information about how to tweak asset repartition and therefore visual appearance, you should definitely have a look of our mesmerizing tutorial.
And as I know that you guys love numbers, here are some more for you: rendering the following image of 10k characters with Pixar Renderman and our procedural only took 9min (i.e. computing the workflow above 10k times). Of course the image is 1080p and is motion blurred.

Ok, let sum it up: fast rendering, light files, customizable at render-time… Sounds like the Messiah, right? Well, almost. The counterpart is that we need to write/update/upgrade as many procedural plugins as rendering engines we’d like to be compatible with. For now, Golaem Crowd is compatible with Pixar’s Renderman, VRay, 3Delight, Air, Guerilla Render. Mental Ray is coming soon.
