“Everybody’s an Effect: Scalable Volumetric Crowds on Pixar’s Elemental” by Kanyuk, Ouellet, Taylan, Moon and Reeves
Conference:
Type(s):
Interest Area:
- Production & Animation
Title:
- Everybody's an Effect: Scalable Volumetric Crowds on Pixar's Elemental
Session/Category Title: Crowded House: Advances in Crowd Simulation
Presenter(s)/Author(s):
Abstract:
Crowd animation and rendering is challenging enough with hard surface models, but the world of Pixar’s 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 [SideFX 2023] procedural, with UsdSkel [Studios 2023] 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.