# How do I keep animation speed over multiple keyframes?

So, let's say we have a "speed" of 6.918m per 20 frames.

6.918 is the movement distance in the top left of the GIF below - the movement occurs over 20 frames - hence, 6.918 metres per 20 frames.

Next, I would like to keyframe the object to continue moving 3 frames later, at the same speed.

For simplicity, let's presume I am using linear interpolation. To keep movement speed consistent, I would need to move the object by ((6.918 ÷ 20) × 3) =1.077 metres.

However:

• I would like to be able to do this without using a calculator every time.
• I would like to be able to make the object travel in a circle, figure of eight, or any hand-keyframed movement I would like on any axis, at the same speed.
• I would like to also be able to do this with rotations.

Therefore, my question is: How can I set a 'speed' for my object so that I am able to move and rotate it at a consistent rate across multiple keyframes?

For extra clarification, I would like to achieve this:

But without using a calculator, and moving the box on all 3 axis at once (notice in the gif I can only move the box on one axis at a time) by setting keyframes. Also to do something similar but with rotations.

• I can't imagine that there's a hidden function for that in the graph editor. You could fairly easily recreate the effect in Animation Nodes though. Apr 2 '20 at 15:09
• @FrederikSteinmetz I've never ever used animation nodes. How would I go about this? I'm open to a script-based solution too. Apr 2 '20 at 16:27
• You have to change the handle types to vector in the Graph Editor. youtu.be/zHlln3AzeMs?t=115 docs.blender.org/manual/en/latest/editors/graph_editor/fcurves/… Apr 2 '20 at 18:38
• @FFeller This only seems to change the interpolation between keyframes, not allow new keyframes to be created with a correct speed. Apr 2 '20 at 21:24
• When you say "any pattern", at least is the pattern defined by something? A curve, for instance? Apr 5 '20 at 6:07

1. Create a path using "poli" type curve
2. parent the cube to the curve
3. use path animation and choose the number of frame based on the path total length to get the desired speed

Note: check the Follow option so that the cube rotates along the curve

I'm not sure if this is what you're after, but maybe, assuming frame 20 is currently your last keyframe, and the interpolation between existing frames is linear (it's T to adjust that):

• In a Graph Editor, select the keyframes in the channels of interest at frame 20
• ShiftE set the Extrapolation method of the keyframes to 'Linear'
• Move the cursor to frame 23 and insert another keyframe
• Set the extrapolation back to 'Constant' if you want the transforms to stop there.

You then have the option of deleting the key frames at 20.

• This may be useful, however doesn't seem to allow the object to change direction or course. For example, I couldn't make a cube fly in a circle at a consistent speed with this method. Perhaps I wasn't clear enough in my question, apologies. Apr 2 '20 at 21:21
• You could, but the circle would have to be defined by an empty object that is rotating. I parent my cameras to emptys and rotate the emptys to get a turn table effect with exactly the steps that Robin describes. Apr 2 '20 at 21:30
• @Joehot200 no need for an apology, I think I get it, now.. under any combination of transforms, you want the speed to be constant? Each component transform would be making its own contribution, and they wouldn't necessarily be linearly related to the total speed... or, put another way, equalising the intervals on a motion curve.. Apr 2 '20 at 22:13
• @RobinBetts Yeah, that sounds about right! I've edited my question to try and make it more clear. Apr 4 '20 at 15:16