Download

Layered Blend Per Bone and IK-driven rigs

I’m trying to set up an aim offset for use with my mesh, using a layered-blend-per-bone node to restrict the aiming to the upper half of the body, and I’m running into an issue that I hope someone more familiar with pose blending could shed some light on.

The rig in question is IK-driven, meaning the structure of the rig isn’t all parented to some (used) bone of the skeleton. Instead the setup involves the core of the character being broken into pieces:

-a root/core (not the master “Root” bone, a center-of-mass bone) which radiates outward down to the hips and up to the head (thru the chest and spine)
-Two legs (starting with the glutes and upper thighs and moving down to the toes)
-Two arms, starting at a shoulder socket and moving down through to the fingers.

The rig is designed this way so that the IK solvers can work during animation; if the character’s hands or feet are meant to remain exactly in place while the core moves or twists, then the portion of the skeleton which contains the legs must not be a child of the core in the bone hierarchy (or else that core movement would move the legs and break the IK)

The problem is that this makes applying a blend to just the upper half of the body something of a nightmare. I can apply the blend to the torso and arms, and they’ll do that blending, but the constraint systems that keep them together come apart. The torso blends, and the arms blend, but the arms and torso begin to detach from one another since each piece of the skeleton seems to be calculating its blend separately in the LBPB.

The only way to get the arms and core inside the same branch of the LBPB is to grab at the master level, though, and doing that grabs the legs too. Essentially, there is no single bone which cleanly indicates where the upper body and lower body are split on the rig, which is preventing me from blending properly at that point.

Is there some way to EXCLUDE bones in a blend, rather than INCLUDE bones? i.e. tell it “blend everything BUT the bone trees starting here”? Or am I looking at completely refactoring my skeleton and all associated anims…?

An image which might help illustrate the issue.

The arms are blending to their target pose, and so is the torso, but they’re doing so independently of one another, which is causing the “arm start” to drift apart from the shoulder socket where it should be attached.

After some experimentation, I think this is a fault/problem in the way “mesh space” rotation calculation works in LBPB.

If I do the Layered Blend Per Bone on the “root” bone, the rotation works. If, instead, I do the Layered Blend Per Bone on EVERY CHILD OF THAT BONE, including the legs and everything, it still breaks.

Now, perhaps I misunderstand something, but with a BlendDepth of 0, blending a bone should be the equivalent to blending all of its children in the rig hierarchy. So then a BlendDepth of 0 on any given bone should be exactly equivalent to a BlendDepth of 0 on all of that bone’s children.

Instead, it seems like mesh space rotation is trying to rotate every specified bone chain independently, causing them to separate. And of course, it goes without saying that using Local Space blending instead causes the aim offset to not properly AIM, since it tries to constrain the rotation based on other bones in the skeleton (namely the master, it seems like).