Pinned Bone NLA Feature Explained
Here's a repost (slightly modified: I removed my plea for help at the end, as I've decided to try to do it myself, and changed a couple of terms) of my comments on blender.org, regarding the "pinned bone" system feature talked about in the previous post. BTW, this doesn't just affect BlenderPeople - it affects everyone who does character animation in Blender. Hopefully this will give you a better idea of what I'm talking about:
I don't know how many of you have actually tried to use the NLA system to do the things it was intended to do. It doesn't work.
Ideally, you should be able to create a list of actions for your armature, then layer and sequentialize them in the NLA window, and have your character smoothly animate between them. Here's the problem, and for simplicity's sake, I'm using only a static pose in my actions, but the effect with full motion is the same:
When put into the NLA, you get this (small animation, only 96k, please watch):http://22.214.171.124/nlabad.avi
The problem is obvious. When animating characters, any difference in foot position leads to ice skating. Bad. The only solutions are to either keyframe the armature object itself to move in correspondence with the slide so that the anchor foot stays in the same place in world coordinates, or to have your anchor foot appear in the exact same location relative to the centerpoint of the armature in actions that will be stripped together.
The first solution is incredibly difficult to pull off and defeats the purpose of having NLA. What good is it to chain actions together in NLA, only to have go in and keyframe things by hand at each and every transition?
Likewise, the second method also defeats the purpose of NLA. You should be able to animate within each action with freedom, not hitting prespecified starting and ending points.
This is why you do not see good, long character animation done with Blender. I've tried, and I'm no hack. The system just isn't useful at this point.Solution:
a new NLA Strip parameter called pinBone. It works like this...
Any NLA strip can have a pinBone set. pinBone refers to any bone in the armature that has been keyed in the Action for this strip. A reverse transform is generated based on the difference between the orientation of the pinBone in the action strip and the current orientation of the bone in world space, and used to transform all the bones (gradually, if blendin is used) of the armature into a position so that the pinned bone position in both world space and the keys in the NLA strip are the same.
Here's a sample of what this would look like, if the pinBone parameter of the second pose were set to the bone Foot.Right in the first example(128k):http://126.96.36.199/nlagood.avi
Beautiful. This is a useful character animation tool.