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.
[1]
John P. Lewis,et al.
Pose Space Deformation: A Unified Approach to Shape Interpolation and Skeleton-Driven Deformation
,
2000,
SIGGRAPH.
[2]
Kun Zhou,et al.
Example-based dynamic skinning in real time
,
2008,
ACM Trans. Graph..
[3]
Mark Meyer,et al.
Key Point Subspace Acceleration and soft caching
,
2007,
SIGGRAPH 2007.
[4]
James Reinders,et al.
Intel® threading building blocks
,
2008
.
[5]
Tim McLaughlin,et al.
Character rigging, deformations, and simulations in film and game production
,
2011,
SIGGRAPH '11.
[6]
Dinesh K. Pai,et al.
EigenSkin: real time large deformation character skinning in hardware
,
2002,
SCA '02.
[7]
Stephan Osterburg,et al.
Art-directable dynamic-hair shells in Madagascar: Escape 2 Africa
,
2008,
SIGGRAPH '08.
[8]
Cary B. Phillips,et al.
Multi-weight enveloping: least-squares approximation techniques for skin animation
,
2002,
SCA '02.
[9]
Jens Palsberg,et al.
Concurrent Collections
,
2010
.
[10]
Herb Sutter,et al.
The Free Lunch Is Over A Fundamental Turn Toward Concurrency in Software
,
2013
.