Splitting Large Crowd Simulations

In a shot production dealing with very large crowd can pose technical difficulties. In such cases it is easier to break down the crowd into different elements for faster simulation and rendering.

Note that this is not the only way to optimize your scene, if you have not read it yet, you should take a look at Large Crowd Simulations Best Practices

SplitCrowd_Scene
Example scene

Breaking the Simulation in Several Crowd Fields

As the simulation is exported per Crowd Field, we can split the Crowd Entities according to the connected Crowd Fields. This can be done in 3 ways

  • At the time of particle creation from the Population Tool.
  • Create Crowd Field nodes from the Golaem Shelf.
  • Using the Dynamics Relationship Editor.
SplitCrowd_popTool
Using Population Tool
crowdShelf
From the Golaem Shelf
dynRelEdit
Using Maya's Dynamic Relationship Editor

For our example, we will split the crowd into 3 elements (Red, Green & Blue). We create 3 different Crowd Fields using one of the methods mentioned above.

SplitCrowd_crowdFields

Breaking the Export the Simulation

Since Golaem Crowd 3.4, each Crowd Field is exported into a different Simulation Cache file:

simExport

Notice that it is possible to either export all the Crowd Field or just a part of them. If not exporting all the Crowd Fields at the same time, to speed up simulation export, you can also disable the not-exported Crowd Fields. This way, their entities will not be simulated. By doing so, make sure that the Entities of the disabled Crowd Fields are not interacting with the exported Entities (else their behavior will be different).

Breaking the Render in Several Crowd Proxies

Each Simulation Cache can be rendered with a different Render Proxy. You can create separate Render Proxies from the menu Crowd Render > Create Render Proxy for the appropriate renderer. In this example we'll create 3 Crowd Render Proxies.

renderProxies
Crowd_proxies

Open the Render Proxy node in the Attribute Editor and break the connections for the Crowd Fields attribute and replace the string with the Crowd Field you would like to render

crowdProxyBreakConn
Break connection
EditedCrowdField
Edited Crowd Field

Render the Proxies you want to render by either hiding other proxies (this can be keyframed if required), use Maya Render Layers or use the method which your pipeline supports.



Red, Green, Blue Layers - Composited Layers

Splitting a Simulation Cache into multiple parts