2
$\begingroup$

Blender's erratic motion interpolation

I took my character and put in a keyframe at T=0 and T=30 in the positions shown in the picture for the root bone that's highlighted along with its motion path. If I only move X and Z, the interpolation is predictable and my character just moves from point to point in a straight path. But if I add a rotation to the local Y axis (up/down) or the global Z axis and index it at T30, then blender puts in a crazy flip in the interpolation.

It's so bad that even if I added an intermediate keyframe at T=15 that forces the character to remain vertical, it still tries to tilt the character a bit between the keyframe points. I would have to almost add a manual keyframe for every frame to keep the character vertical.

Am I doing something wrong or is this just a bug?

File:

$\endgroup$
4
  • $\begingroup$ hello could you please share your file (at least the armature)? $\endgroup$
    – moonboots
    Commented Jun 11 at 6:25
  • $\begingroup$ Here's the armature drive.google.com/file/d/1AJ0Lxbdxx5XTYqaX-xIwfX_dv5QuPOuu/… Note the file had some rotation in the armature in object mode when I saved it. I already cleared that for the test images I posted in the OP. The tests as I described them only used index saved in pose mode with the moves and rotations described in the OP. $\endgroup$
    – George Ou
    Commented Jun 11 at 6:45
  • $\begingroup$ I can't reproduce what you show, could you share a file where you have keyframed the armature? Also maybe give a root bone to your armature and parent all the controler bones + the bone called Hips? $\endgroup$
    – moonboots
    Commented Jun 11 at 6:56
  • $\begingroup$ Please download the file again. I replicated the issue with the armature. drive.google.com/file/d/1AJ0Lxbdxx5XTYqaX-xIwfX_dv5QuPOuu/… $\endgroup$
    – George Ou
    Commented Jun 11 at 7:05

2 Answers 2

2
$\begingroup$

Assuming we have to open the action ArmatureAction from your file, looking at the graph gives quite a visual representation of what is happening in your animation:

enter image description here

If you are less of a visual person and prefer looking at values, you can also just look at the bone's rotation while jumping back and forth between the two frames:

enter image description here

This isn't an interpolation issue, this is a keyframe issue: you keyed that bone to rotate by 180 degrees on both X and Z. (No need to tell local or global, bones always use local coordinates in Pose mode).

I'm not sure how you got there, but I don't have any issue by using either the rotation gizmo or using the rotate operator.

$\endgroup$
4
  • $\begingroup$ I added the rotation in 2 methods with inconsistent results. Method one was to move the root (hip) bone constrained to X to the left. Then tap R, double tap Y, and rotate 180 degrees. Or I move X, then R - Z, then rotate 180. I have no idea how that would cause it to key a rotation of 180 for both X and Z axis! Should I use an alternate method to keyframe this to avoid adding an X axis rotation? $\endgroup$
    – George Ou
    Commented Jun 13 at 22:40
  • $\begingroup$ How did you get the view that shows the angles in the animation you're showing? $\endgroup$
    – George Ou
    Commented Jun 14 at 5:29
  • $\begingroup$ OK, I'm just typing the angles in one or two axis at a time and making sure they don't deviate too much between keyframes. That eliminates the erratic behavior, but it's not an easy workflow. I don't understand why I can't just rotate a single local axis like Y using R-Y-Y key sequence and rotate it to what I want. $\endgroup$
    – George Ou
    Commented Jun 14 at 22:14
  • $\begingroup$ Not sure why it does this on your end, it doesn't on mine. do you use the latest stable version? For the sliders in the graph editor, you can enable them via the menu View > Show Sliders $\endgroup$
    – Lauloque
    Commented Jun 20 at 1:00
0
$\begingroup$

If you choose the side view and switch your armature to Edit mode you'll see that your Hips bone is a little bit tilted, i.e. not aligned with the global Z. If you rotate the bone on the global Z axis, it may be visually ok but as it will need to rotate the bone on several on its axis, the calculation will fail. So maybe the solution is simply to align the bone with the global Z axis? To do that select it and SY0.

enter image description here

$\endgroup$
3
  • $\begingroup$ The example I uploaded was rotated on the global Z axis. Shouldn't it be rotating it based on the last posture in the keyframe? There are poses where it will not be vertical no matter what even if it was vertical in edit mode. Surely this can't be a design requirement? Also, I sometimes randomly had partial success using local Y axis rotation or global Z axis rotation, but it's not consistent. By success, it still wobbled a little. $\endgroup$
    – George Ou
    Commented Jun 11 at 9:01
  • $\begingroup$ I'm not sure what you mean, it can't work correctly if it needs to calculate the rotation on more that one of its local axis, which is the case here, you need to choose one solution, it can be the one I suggest (align the bone on the global Z axis if you plan to rotate this bone on the global Z axis) $\endgroup$
    – moonboots
    Commented Jun 11 at 9:08
  • $\begingroup$ I changed it in edit mode to vertical and it fixes it in a specific narrow case of rotating global Z, but it breaks as soon as I make any orientation changes. If I need to rotate on local Y, it breaks again. So this is still very unpredictable behavior. The only thing that seems to work more consistently is to apply the rotation in object mode on the whole armature instead of pose mode on the bones. Seems like a very weird limitation. $\endgroup$
    – George Ou
    Commented Jun 11 at 16:16

You must log in to answer this question.

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