A Dynamic Controller Toolkit
Ari Shapiro
Derek Chu
University of California, Los Angeles
Brian Allen
University of California, Los Angeles
Petros Faloutsos
We introduce a toolkit for creating dynamic controllers for articulated characters under physical simulation. Our toolkit allows users to create dynamic controllers for interactive or offline use through a combination of both visual and scripting tools. Users can design controllers by specifying keyframe poses, using a high-level scripting language, or by manipulating the rules of physics through a group of helper functions that can temporarily modify the environment in order to make the desired animation more feasible under physical simulation. The goal of the toolkit is to integrate dynamic control methods into a usable interactive system for non-computer scientists and non-roboticists, and provide the means to quickly generate physically-based motion.

The Dynamic Controller Toolkit
, Symposium of Computer Animation, 2006 Posters and Demos
Interactive and Reactive Control, SIGGRAPH 2005 Sketches
A Dynamic Controller Toolkit, 2nd Annual SIGGRAPH Sandbox Videogame Symposium 2007
Our system includes a pose editor that allows animators to keyframe poses that are used under physical simulation using proportional derivative (PD) controllers. Poses may be connected by a set of transitions based on sensor values. For example, the character may transition from one pose to another based on the whether or not the character's feet are touching the ground.
The interface is intuitive for non-technical users. Poses are selected from the right side of the interface and echoed by the character during physical simulation. video: 3D interactive jumping

The system allows animators to change aspects of the character under physical simulation to make control easier. Here the character uses ski-like feet to help maintain balance.
Animators can interactively control their characters using pose control. Interactive control under physical simulation can produce walking and other interesting movements.

video: attempting to walk interactively
Autonomous controller can be created that allow complex movements under simulation. Shown here are controllers created for a 3-D character with constrained physics: the root joint has no lateral movement, and thus the character has static balance. The controller is built using balance logic and a set of poses based on the phases of walking. Note that many controllers can be brittle and subject to slight disturbances from the environment. Here, a small object is placed in the walking path. The effects of the character coming into contact with the object are shown in the video. The character has an additional set of autonomous controllers, including those for self-protection during falls and for getting upright from both prone and supine positions.

video: attempting to walk (11 mb)
video: walking to the edge (15 mb)
Physical simulation allows differing effects based on timing and parameters. Here, the character narrowly ducks a projectile.
video: ducking successfully
video: unsuccessful duck
Animators can change the physics on parts of the character for better control during physical simulation. Here, the animator holds the lower body of the character in place while allowing physical effects on the top part. The top sequence of images shows the effect of full physics on the character, while the bottom sequence shows the effect of disabling physics on the root bone. This modification to the physical environment can be done with one line of scripting code.

video: Normal physics and simple blocking pose (3.3 mb)
video: Partial physics and simple blocking pose (2 mb)
The controller toolkit gives artists and non-technical users the ability to use physical simulation to produce interesting animated results. The sequence shown below was created in less than an hour by a non-technical user.

Controllers that require balance and interaction can be difficult to create, as they require both robustness and complex interaction with the environment. However, controllers that do not require balance, such as actions peformed on the ground, can be programmed quickly. Below is a controller that turns a character from a prone to a supine position.

video: turning over (12 mb)
The scripting control allows the user to control unintuitive environmental aspets. A python script switches between poses based on the character state. Here, the skeleton attempts to dunk the basketball by moving between 3 different poses. The ball is released when the skeleton is at the proper location above the rim. Notice how the pose of the skeleton change from 1) initially in the air, 2) moving towards the basket, then 3) follow through from the dunk.

video: Successful dunk (1.6 mb)
video: Scoring, but not a dunk (2.6 mb)
video: Missing the dunk (1.3 mb)
video: Missing the shot (2 mb)
video: Shooting the basketball (1.5 mb) by applying additional forces via scripting.
video: Not jumping high enough (1.6 mb)
video: Catastrophic failure (2.0 mb)
Scripting can also be used to temporarily attach or detach the character from various objects in the environment. A skeleton can grab a ledge, hold onto another character and so forth. In the above example, the skeleton's hand is attached to the basketball and then released at the appropriate moment. In the example below, the skeleton's hands are attached to two rings while being interactively controlled.

video: Handcuffed Skeleton (.6 mb)