I’ve read somewhere that large animation companies sometimes use corrective shape keys even for complex cases with multiple degrees of freedom, like ones I’ve mentioned. I’ve figured out how to do direction-based blending (for an extent). But the thing that remains to solve the puzzle: animating a limb using IK always involves “roll” rotation (around bone main (Y) axis) of upper arm or thigh, which complicates things even further. Do riggers somehow negate the roll component using constraints? Or make extra shape keys to account for twisting?
Hey ! There are tons of clever tricks !
If your character is very muscular and you aim for a realistic result, having precise corrective shapes and muscle budging, will give a enormous degree of realism compared to just skinning.
The next step is to give the impression that the muscles “slides” under the skin, which is another key point in realism in say creature you’ll saw in VFX.
Now if we talk about cartoony , stylized character you can do things in a much simpler way.
One key point is to propagate rotations, say your character is rigged in T pose, palm facing the ground, and you want palms up, what will you do ?
Instead of just rotating the hand, or just the upper arm, you can rotate each bones, starting from the shoulder , just a little bit, and you’ll end up with a much cleaner deformation.
Of course, you can add a bbone in the lower arm, so you add another layer of rotation when the hand turns, ( the rotation is propagated in all the forearm).
Using that technique, even in complex area like the shoulders you can get ok results if you use all the trunk : pelvis , torso, shoulder, arm, all these bones are more or less involved when an arm is raised.
If that’s not enough, I recommend to look into corrective smooth, that can solve a lot of issues.
If you really needs some drivers you can use that : https://www.youtube.com/watch?v=WWdxZ_8bO4I
and there are also little cheat like this one, if the character wears a shirt :
I find that automating shape keys on these areas is very tricky unless you use stuff like RBF drivers.
You can probably manage without, sometime by adding some strechy bones in places where there are muscles can help again to propagate deformation better.
Post a screenshot if you want and we can have a look !
Good luck !
I came here to say this- this is exactly what RBF drivers (or nodes) are built for. Look up RBF nodes, it’s a free replacement for the now defunct RBF drivers add-on.
Thanks for the detailed reply, as always!
I need the exact thing the very last video uses at 0.25 for the shirt sleeve. With that enabled for upper arm, using corrective shape keys would be much easier. Any idea how it is done?
I am sure I’d manage to find some addon that solves this. Problem is, I want to understand the principle. What if I’ll need to reproduce this, say, in Unity, and in the situation when the corrective shapes cannot be precomputed (ragdolls, blend trees or IK-based animation)?
The principle is simple- you use bones to drive a variety of shape keys in a more complex way than you could do manually. You can have some in depth videos if you want:
Or this very precise written explanation:
https://rbfdrivers.readthedocs.io/en/latest/user-guide/overview/
But ultimately, it’s something you just have to play around with, there’s really not that much principle involved.
P. S. You can’t do this kind of deformation with vanilla Blender, at least not without hours of complex work per driver combined with custom scripting:
For standard drivers, such multi-value interpolation is not easily, or even impossible to achieve. Like, a driver in Blender can have multiple input values but only one output target. RBFs can solve multiple output values based on multiple input values.
so if you want to understand the principle, you’ll have to download the RBF Nodes addon ![]()
Okay, thank you for the addon link; the source code is open and maybe I’ll be able to decipher it. (Their explanation was in the tone of that “draw some circles, then the rest of the fucking owl” meme)
I don’t recall exactly how I did it, but but playing a bit I’ve got something working here :
test_arm.blend (146.4 KB)
Maybe that’s not enough for a real life case… time will tell !
Personally I only use shape keys for facial expression and manage to find solutions for shoulders and such with bones , corrective smooth meshdeform …
I’m not sure how that will work in a game engine, probably none of these solution will fit then !
It looks effective, thank you. Maybe I am overthinking things. Because I was trying to do it through Locked Track (this way, you can customize the target for “up” vector of the roll). I managed to make it mostly stable, but it still behaves unnaturally at some angles
upper arm no roll setup.blend (859.4 KB)
What I did is to read a Z position of the elbow relatively to clavicle (by constraining a dummy which is a child of the clavicle to the elbow), and feeding it to the driver. So when arm goes up, the target also goes up and towards the body, to avoid flipping (in most cases). I’ll need to test both setups with actual corrective shapes or bone twist rig
This is why you need multiple driver inputs, instead of just the one relative Z position
I think it’s possible to do a simpler solution, but I’m not surprised if only one constraint isn’t enough.
You can also do a copy rotation and find a way to disable the roll.
If you really don’t manage to find a solution tell me and I’ll look into a production rig to see how I did it.
From what I recall it wasn’t that complex, by trying a few variant I managed to make something that worked well, and I didn’t had flipping issues.
Is the production rig NDA or something?
Hum, I wanted to say that I’ll look in a rig that has been used in production, so while that doesn’t mean it’s perfect , at least it works in a usable state in many situations.
I don’t know much about how NDA applies to rigs, since what we’re talking about isn’t sensitive information or a project’s secret sauce I think it’s ok. Furthermore , all the rigs I did these last years came from my own auto-rig so most of it isn’t tied to a specific project and I own the rights of most of the rigging logic
if that makes sense !
Okay, so, while I THINK my setup is usable, what if it is fundamentally wrong. So I’d like to compare with someone else if possible
BTW, it is this range of movement where I think my rig is behaving suspicious. Cant tell if it is right or wrong
With twist bones:
It seems to do something good, I think it’s possible to exaggerate things even more,
In the second screenshot there shouldn’t be any twisting at all.
But the most important is that it feels natural, this is a cartoony cheat , in reality this areas are always a bit influenced by the arm.
A good way to test that you get the right technique is to take the upper arm in FK mode and rotate in into itself, and the shirt shouldn’t move just like at 30s in this video :
If I do exactly like you describe, the “shoulder” or “sleeve” bone indeed does not rotate. However, it does roll rotation at certain extreme angles (like if IK is pulled up-left diagonally, assuming it is a right arm). I had to set it up that way, because otherwise Locked Track would just flip.
In your rig, when you raise an arm all the way up from sideways, does the sleeve bone flip?
(my setup without the Locked Track’s target correction)
Same, with correction drivers enabled. Fixes flipping, but wobbles a little bit if raised diagonally up, as in my previous post
There is no flipping , but indeed some position might induce a slight rotation, which is logical…
But it’s always the smallest rotation possible . That way there is nearly not rotation artifact or some kind of pinching whatever the position is. Sorry to not be able to give more answer, I try to stay away from blender during the weekend, unless it’s a 3 mn thing.
With a bit of time I would provide a better test scene and it might explain better !
Understood. I’m not in hurry. Thanks again for all the help