Difficulty with Blendshapes for Legs

Hey, I’m having trouble with dual axis shape key correctives. I can get the shape key to work on one axis, but when trying to do two I don’t understand the process and it doesn’t appear to work.

Here I have the generic front leg rotation where it’ll correct when rotating on that axis. (not seen here yet, red highlights the shape it usually takes)

But here I run into an issue (imagine frog pose). This is rotating on two axis technically- the forward and side. It doesn’t seem to want to blend between both to correct for the hip and backside.

correctivs-02

correctives-03

Is it possible to have two shape keys active and blending between eachother at once? Or is that a limitation? Or do I need to rethink the setup so it is capable of achieving that look? I want to avoid crushing the geometry when moving the character into extreme poses (stretch and squash rig for stylized animation)

Any ideas on how to set that blend shape stuff up correctly?

You can have two shapekeys driven by bone angles active at the same time. You can blend them however you want to blend them, using a scripted expression.

If you want to understand what it’s doing better, and you’re using an IK limb, you might consider appying visual transform to the bone to see exactly what its Euler values are. It might not be rotating the way you think it is-- in the axes you thought it was rotating in. (Make it an XYZ Euler if you’re reading angles as that in your drivers.) After that, what it’s doing should make more sense to you.

If you got a file, I’ll take a quick look for how your drivers are working, might be something in there that’s not right.

1 Like

Hey, here’s my file. I think I’m seeing it work now, but I’m not too familiar with “how to properly setup blend shapes” in terms of "how many blend shapes, for what angles,

Here’s the dropbox file:

The animation is “Leg_Test” which is weighted on the left side only. Didn’t apply the blendshape anywhere else.

To me it seems like proper weight painting is needed too. I’m unsure if I need a “butt bone” to prevent it from moving with the leg? Because then it turns inwards, but in this case it’s crushing inwards against the leg since there’s no influence.

I’m also not too familiar with how to properly weight paint, the tools seem to act un-intuitively. I can’t just select the vertices then assign the weights. It’ll pretend to assign it, then when I go to test it, there is no weight, but the preview shows it as weighted. It’s really confusing. Amongst other issues like weight influences for different body parts, and what/where to weight, as well as what is corrected with shape keys.

Like at which point would I begin enabling the shapekeys and correcting for it? Iirc the extremes, like 90 degree angle of the leg being raised up (usually when the butt area crushes/thins out)

Do you need to have a blend key for each axis of the leg movement? Like leg forward/backward, leg side L/R for each leg and so on? I can’t seem to find detailed info about this kind of stuff.

So, generally, I’m going to say, rig first, as best you can, and just use moderate corrective shapekeys-- if you even need them!-- to adjust things. Let’s look at one of your shapekeys:

I don’t consider this moderate.

Now, let’s do what I said-- let’s apply some visual transforms on the targets of the drivers to see what the values are. I’m not going to bother figuring out your whole rig. Let’s look at the target of the driver, THIGH.L, apply visual transform, and see what we get:

Here’s one. Let’s adjust the IK target and do it again:

Are those numbers what you expected? You expected this to be rotating in two axes only.

Those numbers are discontinuous, even though the IK target angle is continuous. Your shapekeys are referencing X and Z of that bone’s rotation axes. But here, where the bone is getting rotated more than 90 degrees in one of its axes, those axes blend together. They’re no longer distinct. (Think about the Earth. We have 180 degrees of longitude but only 90 of latitude. -180 to 180 of latitude is redundant-- more than 90 degrees of latitude blends into longitude. It’s the same way with Euler angles. But Blender doesn’t “antialias” the same way we antialias latitude-longitude. It uses different techniques.)

And, if you trace these values through your drivers, you’ll find that both of your drivers are working, exactly like you told them to. That doesn’t mean they’re doing what you want though.

if I need a “butt bone”

Yeah, before you do corrective shapekeys, you want to be messing with bones. You’ve already been messing with bones quite a bit, enough that I’m not interested in figuring out what they’re all doing. I can see that you already have a deforming butt bone. But in general, yes, if you want more complex motion, you need to use more bones; and no, you can’t really replace them with corrective shapekeys. You need to make the bones do what you want. (And, yeah, you need to weight paint them correctly, but that’s usually a secondary concern, far easier than making the bones do what you want.)

My recommendations:

  1. Stop using corrective shapekeys. For now. Work on bones first. A well-rigged model does not need corrective shapekeys. Shapekeys are a crutch, which is reasonable, but it’s a crutch that only works when you already know how to do everything else. You don’t yet. So don’t try to use corrective shapekeys yet.

  2. Don’t test your model in unlikely poses. If you don’t want to make a model that can do a frog pose, don’t worry about frog pose. Know what you want to do, and build to do that; don’t build to do things you don’t want to do.

  3. If you do want to do a frog pose, then make a model and rig based around that. Make your model and rig such that you don’t have to rotate more than 90 degrees. Position your rest pose in the middle of likely deformations, so that your thigh, for instance, rotates ± 45 degees, not ± 120 degrees.

Re: weight painting: start with autoweights. Don’t get deep into Blender’s tools, they’re a trap. Use gradients at most to change weights from autoweights. Using more bones, properly oriented, is more important. But, it sounds like you’re having problems from unfamiliarity, which I can’t speak to without knowing what you’re doing, and you should consider asking focused questions regarding that. Your pic of your butt, weights don’t look great, but is it a reasonable orientation for the leg bone? See 2) above. If you pose your model poorly, it will look poor. Don’t pose your model poorly and expect your rig to take care of it. Build your rig to make good posing look good. It will never make bad posing look good.

2 Likes

Here, let me approach this a little differently. Let’s go back to the fundamental problem. Here, the problem is volume loss in the butt, right?

There are a few useful techniques worth considering to deal with volume loss:

  1. Volume preservation, aka quaternion deformation, in the armature modifier. This is first not because it is best (I dislike it personally) but because it is the easiest. You could consider trying this out.

  2. Use of twist bones to distribute bone twist (generally thought of as Y axis rotation) throughout a limb. Twist ends up creating some of the strongest volume loss, and by moving the twist rotation further down the thigh, you avoid some volume loss in the butt.

Three arm bones to distribute the twist.

  1. Sufficient mesh and topo. For understanding this, I’d recommend posing a high kick, applying an armature, and then looking at the butt topo. You’ll probably see that what seemed like sufficient vertex density to represent the curve of the butt in the standing position is not longer sufficient to represent the high kick. Your armature is never going to create new vertices, so your base geo has to support all the poses you want to use.

  2. Fan bones. There are a number of ways to do this; bendy bones are one example of a technique that some people are fond of. The basic principle is that you distribute bend over a wider area of the joint.

There, I’m using a spline IK technique to soften the bend through the knee.

  1. Posing! You don’t have to automate everything. You can have a butt bone. You can scale it manually if you can’t figure out how to do it automatically. You can move and rotate it.