I need help with the shoulder rig

Hello, I was theoretizing about making a shoulder rig where the shoulder bone’s twist (Y) rotation is aligned to the chest facing direction, instead of following upper arm rotation. *.GIF provided to illustrate what I want. Generally, using Locked Track performs well, but results in flipping when the upper arm points in a direction which matches the direction towards the “look target” bone. What can I do about the flipping? I guess some kind of driver to switch between different targets. But I have no idea what parameters to use for this driver

shoulder.blend (857.9 KB)

More specific, if the arm points towards front, and the Locked Track’s target is also in front (lets assume it will be parented to chest), the shoulder flips

And this is desired rotation of the shoulder (simulated with the Locked Track constraint pointing to another target). Would be great to be able to only activate this second Locked Track only at angles which result in flipping

In a different situation (say, game engine) I’d compare the directions of an arm and Locked Track’s vector using Dot product and choose targets based on it. But with Blender drivers, I have no idea how to integrate vector math

I’m afraid I don’t know how to do dot product in drivers either (it is possible). However, you can do it without a dot product, by comparing the rotational difference between a locked track bone and a bone without the locked track.

However, here, the shoulder shouldn’t ever point directly forward anyways; that’s not how people work. Their shoulders have a limited range of motion.

Beyond that, a locked track is always going to have a pole like this, but you can adjust exactly where that pole is. Here, the locked track will spin:

But if that, for whatever reason, is a valid position for the shoulder, then all we have to do is move the target someplace else:

Now, the shoulder won’t spin until it has even more rotation toward the front (although it will spin earlier when rotating toward the back.)

1 Like

Thank you, just moving the target away havent crossed my mind. I’ll try this variant as well. To be honest, I do not entrirely understand yet what the perfect behavior for this shoulder bone should be. So I’ll need to try many variants of the rig