Resolving Rotation Issues in Rigging: Exploring Advanced Solutions

I’m working on an animation of a swimming motion, and there’s a 180-degree body rotation at the end. However, when I try to execute it, it creates glitches and doesn’t calculate properly. I switched from IK to FK for more control, but it didn’t help. Does anyone know what the solution could be? I don’t mind if it sounds silly, please.
REF

Your video’s showing 360 degrees rotation, not 180. Make the bone an Euler bone instead. Quaternions can’t rotate more than ±360 degrees with Blender’s implementation, and there are situations where they don’t know the difference between no rotation and 360 degrees of rotation. Look at your transform numbers to see what your rotation actually changed.

So, do I have to first edit the bone, then animate again, or just change the control? Which one are you referring to? Yes, I’ve heard about quaternion rotation, but I still don’t understand it. Do you have an approach that could help me grasp it better.
thankss

If you change the bone’s rotation mode, like from quaternion to euler, yeah, you’ll have to redo the animation. Just for the bone you’ve changed the mode for. Although I guess interpolation can change, so it could affect bones further down the hierarchy.

If there are a lot of keys already, you could potentially bake from a quaternion rotation to an euler rotation by copy rotation constraint and then “bake action” with visual keying and clear constraints.

If you only need it to be Euler temporarily, you could make a temporary control with an Euler rotation mode and copy rotation from it, animating influence, and using apply visual transform to snap.

I suppose, if the problem is rotation outside of -360,360, that you could make a frame where you rotated it the other way 360 degrees and stuff it between frames. Might affect motion blur if you plan on using that.

Blender’s approach to quaternions is… not great. Not in my opinion. In general, I try to make most of my bones YXZ Eulers. I think there’s a popular conception that mechanics should use Eulers and organics should use quaternions, but I think that’s exactly backwards: organics should use Eulers and mechanics should use quaternions. Because organics have torque (muscles are attached at weird places), and especially, you want to tune that torque; mechanics usually rotate in a single axis, but when they don’t, like in a ball joint, they rotate without torque-- see, Rubik’s Cube, the poster-child for quaternion rotation.

There is no perfect, one-size-fits-all rotation mode. If you need something to rotate at a constant rate, you want an Euler (or axis-angle, but usually, not axis-angle) but unfortunately must restrict your rotation to an object axis. If you need something to rotate more than 360 degrees, you need an Euler (or again axis-angle but probably not axis-angle.) If you need something to rotate without torque in arbitrary axes, you want a quaternion. Unfortunately, those are overlapping use cases: what if you want something to rotate at a constant velocity, without torque, in arbitrary axes? Then you make balances, and decide if maybe you want to use tricks (like sub-frame registrations to rotate them backwards 360 degrees, or NLA mixing into cheaty strips with flipped quaternions; or, like temporary copy rotation constraints) or if you can live with the problems so you don’t have to do tricks.

(Axis-angle really only gives the interpolation people want when you never, ever touch the axis, so while it can do a lot that Eulers can do, well, you can also do the same thing with Eulers, by just giving them the proper axes. So axis-angle is really just a footnote in rotation modes. I don’t think anybody uses it.)

One of these days, Blender will implement quaternion slerp, and then quaternions will rotate at a constant velocity and will always do shortest path rotation, so you’ll be able to rotate >360 degrees with them. But they’ve been talking about it for a long time and I have no idea when it’ll ever get done.

3 Likes

Just pointing out that I have a fre addon for converting rotation modes while preserving the bone animation:

2 Likes