Everybody's an Effect: Scalable Volumetric Crowds on Elemental

Sasha Ouellet, Aksel Taylan, Arnold Moon, Paul Kanyuk, William Reeves


Crowd animation and rendering is challenging enough with hard surface models, but the world of Elemental takes this to a new level by immersing the viewer in a teeming metropolis populated by sentient air, fire, and water, in the form of volumetric characters. By building a new Houdini-Engine character pipeline based on blended simulation caches and extending our proprietary crowd pipeline to approximate non-skeletal deformation with blendshapes, we were able to choreograph, deform, shade, and light an absurd number of voxels. The complex underlying physical simulation and shading process called hexport [Coleman et al. 2020] we used to create the hero look of our main characters took roughly 400 cpu hours per shot, and afforded us the ability to only have about 2.5 characters on screen per shot on average. In the end, each shot on Elemental had an average of 162 additional volumetric crowd characters. Thus our challenge was to create those 162 characters with visual fidelity as close as possible to the 2.5 hero characters, despite forgoing hexport. By building a solution as a Houdini Engine procedural, with UsdSkel deformed meshes as input, we deferred the expensive computations until render time. However, given some shots could have as many as 30,000 volumetric characters, our solution had to execute on the order of several seconds a character to even be feasible, if painful, at scale. Furthermore, IO and storage limits meant the results could not be cached on disk and needed to remain in memory at render time, thus constraining our memory footprint. Accordingly, our pipeline factored as much complexity as possible into pre-process stages, and leaned heavily on level of detail, both for inputs to the render time procedural, and in minimizing the resulting voxels.

Paper (PDF)

SIGGRAPH Talks 2023