6

I'm using the curve modifier to animate objects along a path. I know that there are other modifiers that do this but I am specifically using the curve modifier because I want the geometry to morph as it moves along.

I'm struggling to find a way to loop these animations along a bezier curve that is looping (cyclic flag enabled in the bezier panel). What I noticed is that the animation speeds up at the beginning and slows down at the end. Also, there is no obvious way to match up the beginning and the end of the loop. Is the distance the object has to move along one axis related to the length of the curve?

I've attached a gif of the behavior I'm seeing.

enter image description here

Thanks in advance for any tips or other paths to take.

Mantissa
  • 95
  • 5

2 Answers2

4

This looks like an issue with keyframe registration handles / extrapolation. By default, Blender uses Bezier handles with constant extrapolation to ease in and out of animations. This is usually what you want. But not for simple loops like this.

There are two solutions. One is to change the handles. Switch to the graph editor, move to your initial frame, ctrl-k select all this frame, jump to final frame, ctrl-k select all this frame. 'v' change handles -> vector.

Alternatively, change the extrapolation mode. Switch to the graph editor, select your channel (probably X location here), shift-e extrapolation mode -> linear.

As for finding the exact start of the curve, there are a number of plugins that can give you curve length, including the popular Animation Nodes plugin. This curve length could then be used as the translation of the object. But at this speed, it should be safe to eyeball it. What I would do is plop a cursor on one corner of the object on the initial frame, just as a visual marker, and without changing my view, jump to the final frame. Then I would advance my object along the proper axis until the appropriate corner was located at my cursor.

Nathan
  • 24,535
  • 1
  • 22
  • 68
0

make the first keyframe and the last free handle type to free (press v), then in the n panel set the handle y to the same value, also need to make sure the x locations of the handles are the same distance from their keyframe for both the first and last keyframe too (handles are the same length).

user3597862
  • 493
  • 3
  • 14