Abstract: A character animation system, method, and computer program product for animating a skeleton. The skeleton has bones arranged in a hierarchy. Each bone in the skeleton is defined in relation to its parent bone and the topmost bone in the hierarchy is the root bone. When a bone in the skeleton is animated, all of the bones below the animated bone in the hierarchy are also animated. An animation for a bone is specified using a directed acyclic graph (DAG) having one or more nodes. The nodes are either data generation nodes (DG nodes) or combiner nodes. DG nodes have zero or one input and have one output that outputs animation data. DG nodes having zero inputs include fixed, pre-generated, tracking, reverse, mirror, and noise nodes. DG nodes having one input include limit and reflect nodes. Combiner nodes have two inputs for receiving animation data and one output that outputs animation data. Combiner nodes include overlay, blend, and transition nodes.