Jimp

Hey hey everyone!

I have an issue I keep coming across when using a transform constraint to make one bone influence the rotation of another bone. This gif should help show the issue:



Basically, whenever I have one bone inherit the rotation of another bone using a transform constraint, at a certain point of rotation the constrained bone "jumps" to a different rotation, which causes issues when animating. This only happens when I have the rotation mix set to anything below 100%, a full mix works ok, but I only want a small influence so I dont need to manually animate subtle movements like these.

I'm guessing this is something to do with spine incorrectly calculating the rotation related to the mix, or something, but is there are way to achieve the desired effect? Am I doing something wrong?

Thanks so much to anyone that may be able to help :D
User avatar
Jimp
  • Posts: 9

Nate

The behavior is correct and happens when the rotation mix is > 0 and < 100. In that case there are two solutions, so the transform constraint chooses the shortest rotation.

For example, say the target bone is 0, the constrained bone is 90, and the rotation mix is 50%. The two solutions are 45 for the short way ((90 - 0) / 2) and -135 for the long way ((360 - 90) / 2). Both are 50% between the 2 rotations so both are correct, but we choose the smaller of the two for consistency. However, if you rotate the bones then the smaller rotation direction can become the other way around and that is the jump you see.

It might help to see it visually:

The red line is 0, the green line is 90, and the magenta lines are the two solutions 45 and -135.
User avatar
Nate

Nate
  • Posts: 10311

Jimp

I see, makes sense - thanks for the explanation!

So I'm guessing there is no real solution to avoid this behaviour?
User avatar
Jimp
  • Posts: 9

Søren

The solution to avoid the problem depends on the rig setup. Maybe there are other ways you can rig it to get around the issue. But there is no solution to avoid the behavior entirely.

I'd be happy to take a look at your rig, or a simplified version of it, to see if there are other ways to achieve the behavior you're after
User avatar
Søren

Shiu
  • Posts: 2427


Return to Editor