0
$\begingroup$

I'm working on a looping character animation, but no matter what I try, the "seam" of the loop is always jerky and clearly visible. The keyframes are all set to vector and I made sure to make the animation 1 frame shorter, so the 1s.

Video to illustrate: https://youtu.be/7yZ_QMZVdKQ

$\endgroup$
1
  • $\begingroup$ so the 1st keyframe is not the same as the last* $\endgroup$ – Zora Jones Jul 23 '20 at 21:58
1
$\begingroup$

When you make looping animations, especially animations whose entire motion is procedural, you want to make sure that the first and last frames have the same keys, but also that the Handle Type for those keys is set to Vector. You can change these in the Curves window.

DO NOT TOUCH the vector handles; Assuming that all handle types are Automatic and you did not adjust the bezier handles, when you convert them to Vector, they should already be flowing the same direction. (The tangents should be the same). If they are not (look at them, compare), you can manually adjust the vector handles or re-key the first and/or last keyframes.

Example of when to expect good results automatically:

A bobbing motion where cardinal (X,Y, and/or Z) position(s) is/are keyed. Suppose you key only one period. You will want 5 keys for the 4 distinguishable segments:

  x
 / \
x   x   x
     \ /
      x

the default interpolation ("Automatic") will create smooth bezier curves that work great in the middle but flatten out at the ends. Assuming this motion has its keys equally spaced and the average position is keyed, if you now select the first and last key and change the handle type to "Vector", their tangents will match and the motion will be seamless.

Also: Remember that the last frame needs to be excluded (since it is literally a copy of the first frame (yes, I see you do). This is done by setting the last frame value in the Timeline window to 1-less-than the frame the last key is on.

$\endgroup$
1
  • $\begingroup$ thanks so much for your reply! you're right on all counts, and i appreciate your help on this. I actually did set all keyframes to automatic, and first and last frames to vector, but there must be a bug in blender: clicking on individual bones and checking the first and last frames, not all of them where set to vector. I ended up adjusting every keyframe of every bone manually as a bezier, until the animation was looping perfectly. Thanks again! $\endgroup$ – Zora Jones Jul 26 '20 at 21:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.