0
$\begingroup$

This is going to be quite hard for me to explain since I'm not good at using precise wording so please keep that in mind. This is an issue I've been facing for years regarding keyframe values, it is when let's say a keyframe is at around "-210" in rotation on the x axis on a keyframe but on the next keyframe is around "30", this causes a twist to happen since they're past 180 degree from each others. Now I know some of you might be thinking things like "Can't you just manually fix this by changing the rotation values in each axis" or "Can't you just avoid having it go past 180 in general while animating", unfortunately it isn't that simple. To adress the first, there will be many bones and axises with this issue, maybe even for several keyframes at once, which makes it incredibly time consuming to edit, not just that but often it can be very confusing to know how to edit it and requires tons of trial and error per bone, I don't quite understand the specifics of how this happens myself but it has happened to me frequently, I don't have an example on hand of that right now myself but please believe me on this. For the second, these things tend to happen due to a lot of things, whether it be from when I'm working on a pose and wind up somehow going past the 180 degree value while trying to really nail a pose (especially when using IK), when I'm using IK I may be trying to to do some form of rotations on the whole body over time in my animation that can eventually wind up causing things like this (yes I do also have another bone for moving/rotating the whole body but this can happen even when I do use that one), when I'm using certain add ons for IK to FK snapping there tends to be an issue with their rotations axis not being in the same 180 area, when I transfer keyframes from a different animation onto one I'm working on and more.

Basically: What I'm looking for is a way to be able to more conveniently, faster and reliably make it so a keyframe matches the same "180 area" of another keyframe, so I can avoid having the aformentioned twist. Here is a video example: https://streamable.com/2boru7 I want to make the middle keyframe (that's at frame 26) match the "180 area" of the preceeding and proceeding keyframe. There are much more complex instances of this happening, where manually fixing it would be significantly less viable, this is just a simplified example to be easier to understand.enter image description here

enter image description here

$\endgroup$

1 Answer 1

1
$\begingroup$

It's not easy to understand exactly what is causing the issue in your example without seeing the relevant curves, but it's probably due to the well known "Gimbal lock" issue, that occours when using Euler rotations (and that is why the whole idea of quaternion rotations has been invented).

In short, when you select a bone you can choose the type of rotation mode to use: if Euler you should put in the center of the XYZ sequence one axis that never gets too close to 90 degrees (choosing ZXY or YZX maybe), but be aware that probably changing this setting will destroy the previous animations.

In cases of complex rotations the use of quaternions is required, even if they are a little more difficult to edit on the curves editor.

You can try to select the problematic animation and use the Pose menu function "Convert Rotation Modes" to Quaternion.

Even with Quaternions sometimes there are flipping issues when passing through the 180 degrees rotations, but in this scenario they can be easily fixed: just select the relevant keyframes (that are evident in the curves editor, where the four quaternions curves cross each other) and press Alt F (Flip quaternions, which changes the sign of the values, flipping the rotation without affecting the keyed orientations.

This procedure is similar to Maya System, where euler values are exposed to the animator but quaternion is used under the hood.

enter image description here

$\endgroup$
1
  • $\begingroup$ This is what the curves should look like I believe? If you're referring to the ones in the graph editor at least imgur.com/a/oO1hVQt . I did convert the bones from Euler to Quaternions and then back to Euler, it sort of fixed the issue in this example at least, but it did cause some other keyframes to get new interpolation issues I think? This is the one prior to the conversion streamable.com/0flfpz this is after streamable.com/b5oxfk $\endgroup$
    – Cerulean
    Feb 27 at 4:19

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .