by Curtis Andrus
24 September 2019
The World Bearing Torterra
This talk was originally submitted for consideration at Siggraph 2019.
Will Earl (MPC Film)
Joshua Senouf (MPC R&D)
Gagandeep Singh (MPC R&D)
Curtis Andrus (MPC R&D)
Applying animation and dynamics to environments such as jungles and forests at MPC Film has traditionally been done by separate disciplines working in isolation to populate dynamic elements within a static world. For Pokémon: Detective Pikachu we were tasked with building an environment on the backs of mountain-sized Pokemon called Torterra – huge turtle-like creatures with forests on their back. This sequence required the creation of a cohesive environment that could be creatively animated, physically simulated and efficiently rendered.
MPC Film is no stranger to large action sequences involving the destruction of CG environments. Having completed the destruction of a forest on A Wrinkle in Time, we were challenged by the destruction of another forest for Pokémon: Detective Pikachu.
On A Wrinkle in Time we approached this work in isolated stages, layout of the forest being done using Autodesk’s Maya, FX artists would then run rigid-body simulations on pre-shattered geometry within SideFX Houdini. It’s at this stage that we lost a lot of our efficiencies such as geometry instancing in dealing with large environments due to the nature of our simulations, requiring significant amounts of memory and processing time when working with the geometry.
For Pokémon: Detective Pikachu, we wanted to improve upon many of the challenges we experienced on A Wrinkle in Time. We wanted to be able to build and render larger environments, and still maintain the visually complex movement from animation and dynamics.
With that in mind, we have modified the way we load and render geometry to make it more efficient, and developing new workflows for simulating trees and extending our pipeline to handle them.
More trees please
The sequence required around 358,000 trees, 355,000 rocks and 7,350,000 million grass patches. Each tree model taking up a million polygons including a face per leaf, with rocks taking 20,000 faces and grass using 480,000 faces. Environment assets within MPC Film are composed of a hierarchy of individual objects and as scatters (particle caches storing instance information) to represent large numbers of instances.
Creation of instanced geometry at MPC Film has traditionally been done through artistic duplication of geometry and our Lua-based Giggle scripting language to procedurally create scatters.
For Pokémon: Detective Pikachu populating the environment was now done by Environment artists working within SideFX Houdini, allowing artists to easily generate millions of scattered trees. To efficiently render them, we implemented Pixar’s InstanceArray feature into our rendering toolset within RenderManForKatana as an alternative to our Giggle instancing. Better memory-mapping of data within InstanceArrays significantly reduced the time taken to generate instance information at render-time and sped up the path-tracing process. In our implementation of InstanceArrays we gave Lighting artists the ability to change the density of the scatter and edit properties within the scatter used to drive shading variation.
Statistics from the render comprised of 3.5 millions instances using RenderMan
|Memory Consumption||Render Time|
|Giggle Instancing||15930MB||1h 54min 37sec|
|New Instance Array||11440MB||17min 47sec|
Make the Earth move
Animating and destroying terrain is a relatively trivial task to achieve at MPC Film through our Animation and FX pipelines, but more difficult to achieve in our Environment pipeline, is where we gain efficiencies in instancing, level-of-detail and camera-based culling, we then lack the ability to apply movement through the use of character animation or physical simulation.
Hero simulation of trees was done using our our FEM-based Kali toolset which produced more stable results than rigid-body dynamics. Given the number of trees required, we weren’t prepared to stress test our FEM simulations on more than a 1000 trees. We set about exploring alternative ways to apply dynamic motion to background trees using rigid-body simulations in Houdini and animation cycles created by Technical Animators in Maya.
We added support for per-instance time-offsets within InstanceArrays, allowing us to vary the motion of the trees while still benefiting from geometry instancing, camera-based culling and level-of-detail. With a series of animations caches of trees being shaken or blown by the wind, applying a limited number of timing offsets on these caches gave visually complex movement to shots.
Animation provided hero animation on the CG characters, digital doubles, terrain and debris within the shot, while this animation acted as primary driver for downstream simulation and scattering layout, multiple departments would be required to interact with representations of these environments inside of Maya, Houdini and Katana.
Investigation was made into adding rigging controls or conversely making the environment as a character, production time constraints focused us towards an animation feature at MPC Film called PropRigs – this feature allows an Animator to rig and animate props on a character and is typically used for characters using guns or telephones.
We extended PropRigs to be able to reference our environments when loading into DCCs like Maya and Katana. Hero trees which were required to bend and break were simulated using both Kali and Houdini, FX artists could load up the instanced trees in order to calculate collisions and perform rigid-body simulations on or additionally convert some of the instanced trees to fully simulated trees.
We are keen to explore what a USD pipeline would look like for this type of work, being able to rig and animate environments and making it easier for artists working in Maya to work with and edit large numbers of instances without having to re-generate particle caches in Houdini.
In Pokémon: Detective Pikachu we were able to render a complex sequence of environmental destruction while still allowing significant and cohesive artistic input from multiple disciplines utilizing a relatively small memory footprint and render times.
The authors would like to thank the supervision team: David Hirst, Eve Levasseur-Marineau, Ummi Gudjonsson, Francesco Pinto, and Alex Clarke, as well as lead artists Daniele Chindamo, Kaki Hudgins, Nigel Ankers, Lee Johnson, Bradley Henke and Sam Cox for their guidance, drive and contribution to this work
Stefano Cieri, Adriano Muraca, Alexander Schwank, Filippo Preti, and Tony Micilotta. 2016. The Jungle Book: Art-directing Procedural Scatters in Rich Environments. In Proceedings of the 2016 Symposium on Digital Production (DigiPro ’16). ACM, New York, NY, USA, 57–59. https://doi.org/10.1145/2947688.2947692
Ben Cole. 2011. Kali: High Quality FEM Destruction in Zack Snyder’s Sucker Punch.
In ACM SIGGRAPH 2011 Talks (SIGGRAPH ’11). ACM, New York, NY, USA, Article 40, 1 pages. https://doi.org/10.1145/2037826.2037879