[Bf-funboard] Armature Object Center Proposal

Roland Hess bf-funboard@blender.org
Mon, 12 Jan 2004 09:44:56 -0500


This document can be found as formatted html at:
http://harkyman.home.comcast.net/armature.html

Proposal for Armature Character Animation

Premise

After careful consideration and many frustrating experiments, I have 
come to believe that in-Action translation of an armature's object 
center in the above-mentioned way would make Blender's character 
animation system of Actions and NLA Strips both simpler and more 
powerful.

The Problem

I don't know if this is feasible. The math may not work, or some 
implementation or method already in place may invalidate this idea. 
But if not, it could solve a long-standing 
problem/inconvenience/difficulty in Blender's character animation 
suit.

The problem is the difficulty of combining character motion (armature 
action keys) with object motion to produce a pleasing effect without 
artifacts. Currently, the animator must you two separate systems to 
produce realistic character motion. For a character to jump from a 
ledge, for example, then get up and begin to walk away afterward is 
nearly impossible to do in Blender.

The animator must keyframe the jumping motion of the limbs and the 
transfer of center of gravity in pose mode. Then, at the appropriate 
time, the animator must switch out of pose mode, keying the motion of 
the whole rig in exact sync with the jumping motion of the legs so 
that the feet stay exactly planted. Repeat this procedure for the 
landing, once again keeping the object keyframes in exact sync with 
the leg keyframes. Then, you transition to a walk cycle, key the 
object motion again. No - this is not impossible. I've done it. But 
it's very difficult, and could be much easier.

To get around this difficulty, some animators choose to key the 
entire sequence, including moving the whole rig, within an action. 
This leaves the actual center of the armature object in its original 
position, negating your ability to make this a useful part of the NLA 
system and cutting off much of the power that Blender already has 
built in.

Solution

After trying several different approaches and making mockups of 
systems, I have come to a conclusion. Most of these problems can be 
solved, and the animators job made significantly easier by the 
implementation of an "Object" bone within the armature system.

Features of the "Object" bone:
- translation of the Object bone translates the object center of the 
armature in world space
- although the object center is translated, it does NOT translate any 
other bones relative to world space. Of course, any bones translated 
and keyframed along with the Object bone would translate as 
designated.
- Object bone would appear in the Actions window, for use in Actions 
and therefore as strips in NLA

Effects

Rethinking the previous example with an Object bone in mind:

1. Keyframe the leaping motion within a single Action. As it 
crouches, the Object, head and hand bones are all keyframed toward 
the ground, while the foot IK bones hold them in place. All bones, 
including Object bone are keyframed until the character is airborn, 
in a neutral pose.

2. Descending motion from the ledge can be keyframed with just the 
Object bone, as it's own Action.

3. Landing motion is keyframed as another Action. Once again, the 
ability to move and keep track of the object center within pose mode 
makes sticking the feet on the landing much easier.

4. Base (standing) pose, as a Standing action.

5. Walk cycle. One full left-right cycle, with the forward motion 
built in due to forward translation of the Object bone.

All of these can then be sequenced in the NLA, without worries about 
the location of the object center. The walk cycle can be repeated, 
generating forward motion for the character. Of course, the armature 
object itself could be keyframed with rotations, turning the 
direction of the characters progress.

Questions

Is this do-able? What hurdles would there be to implementing this? 
Would it break something already in place? What other ideas could 
solve these problems? What coder would be most appropriate for such a 
task? As there has been much serious discussion about this between 
several people on elsYiun, could a bounty be raised to entice a 
developer to tackle this next?

Conclusion

Use if Blender's character animation system has indicated a distinct 
shortcoming in the area of pose-object motion interation. The 
addition of an Action-aware control for the object center of an 
armature could fill in those blanks, making Blender's Action/NLA 
system simultaneously simpler and more powerful.
-- 
Roland Hess
Digital Prepress/Network Administrator
Reed & Witting Company
412-682-1000
rolandh@reed-witting.com