Armature is distorted in 2.80 but not 2.79

I recently switched from Blender 2.79 on Windows to Blender 2.80 on Zorin OS (a Linux distribution based on Ubuntu). On 2.80 there is a problem with the armature that I didn’t have on 2.79. IK works fine, but when I rotate the upper arm bones with FK, the mesh gets distorted. It looks like the bone is rotating the mesh by a bigger angle than the bone is rotated. The other bones seem fine. There are a lot of modifiers on the object but when I deleted them all I still had this problem. I also have a python script that runs automatically in the file, but it is a simple function used for drivers.
shoulder_test_20190925.blend (1.1 MB)

If you delete the drivers, the problem goes away. Guess they’re not so simple. (and reset the pose, since your shoulders are aimed diametrically opposite where they should be.)

If you deleted the modifiers, upload the version with the deleted modifiers. We want to see the simplified problem. We don’t want to delete four thousand modifiers to simplify the problem. For next time.

Thanks for your response. Deleting the drivers removed the problem but I needed the drivers to rotate the shoulder/collar bone when the arm rotates over the head, and so that the arm is above the shoulder when rotated over the head, but to the side when rotated down. The latter I discuss in Arm rotation 180 degrees: Is the arm out to the side or over the shoulder? .

I suspect this issue is related to dependency cycles. The shoulder has a driver which depends on the upper arm and the upper arm is a child of the shoulder. However, the upper arm only inherits the offset for loc/rot/size, and the shoulder being the parent does not affect the upper arm bone’s own rotation value. The shoulder bone only depends on the upper arm’s own rotation value (and not what the upper bone inherits from the shoulder) so I don’t think the cycle is really dependent.

I guess I’m going to have to redesign my rig so that there would be separate bones to rotate for FK, then put a copy rotation constraint on the arm bones to copy the control bones. If I make the top spine bone the parent of the upper arm control bone, then the shoulder would still depend on it but it would not depend on the shoulder.

Something I’m not sure about is if I should leave the IK chain how it is, or if I should make a separate chain for the IK bones.

Making sure I understand correctly: upper arm’s scale+location is dependent on the shoulder. Shoulder is dependent on upper arm rotation.

If this wasn’t an IK system, there wouldn’t be a true dependency, and you could figure out a way to fool Blender somehow. But because this is an IK system, the rotation of the upper arm depends upon the scale and location of the upper arm-- so shoulder depends on itself.

That means that, yes, if you separated out the IK to an independent structure, you could find a way to make that work for FK. But for FK only. It’s never going to work for IK.

Not that that’s necessarily the problem. I personally draw the line at debugging other people’s drivers, so I haven’t inspected beyond what I needed to discover that, yup, the drivers are involved in the problem.

I found this page which has an animation showing how the shoulder should lift has the arm lifts over the head. This is the purpose of the drivers on the shoulder. Somone has a suggestion of how to solve it, but other commenters say it creates a dependency cycle. Another commenter says there is no clean way to automate shoulder rotation in Blender.

How do people animate the shoulder? Do they manually lift the shoulder any time the upper arm rotates above the head? Do people simply leave the shoulder as it is?

On a past thread I talked about the conflicts between drivers and IK What algorithm will solve IK? . Someone said that a driver does not introduce a dependency per say, even when a child object property is used as a variable for a parent. In my rig, the upper arm inherits location and scale from the shoulder, and the shoulder depends on the upper arm’s local rotation. I’d expect this to mean the upper arm’s rotation will affect the shoulder’s rotation which will affect the upper arm’s location and scale, so the upper arm’s inherited location and scale depend on its own local rotation. I wouldn’t expect that to be a dependency cycle since no individual property of the bone depends on itself (even though some properties of the upper arm bone depend on other properties of itself). Maybe my expectations would only apply if it were only a FK system.

In any case, could anyone tell me how they handle the shoulder rotation while the arm lifts over the head, or does anyone have an suggestions as to how I could handle it?