LibEE: a multithreaded dependency graph for character animation

  • Authors:
  • Martin Watt;Lawrence D. Cutler;Alex Powell;Brendan Duncan;Michael Hutchinson;Kevin Ochs

  • Affiliations:
  • DreamWorks Animation;DreamWorks Animation;DreamWorks Animation;DreamWorks Animation;DreamWorks Animation;DreamWorks Animation

  • Venue:
  • Proceedings of the Digital Production Symposium
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

Computer-generated characters are central to an animated feature film and need to deliver appealing, believable on-screen performances. As such, character rigs continue to expand in complexity (for example higher fidelity skin, clothing and hair). This leads to growing system demands as animators wish to interact with complex rigs at interactive frame rates. Since single threaded CPU performance is no longer increasing at previous rates, we must find alternative means to improve rig performance. This paper focuses on multithreading our animation software and, in particular, our character setups to take advantage of multicore CPU architectures. We have developed a new dependency graph (DG) evaluation engine called LibEE for our next generation in-house animation tool. LibEE is designed from the ground up to be very heavily multithreaded, and is thus able to deliver extremely high performance characters for use on computer-animated feature films. A heavily multithreaded graph requires not just that individual expensive nodes in the graph are internally threaded, but that multiple nodes in the graph can evaluate concurrently. This raises numerous concerns. For example, how do we ensure the cores are used most effectively, how do we handle non-threadsafe code, and how do we provide profiling tools for production to ensure character graphs are optimized for parallel evaluation. We present the motivation, design choices and implementation of the graph engine itself, and then discuss production adoption considerations.