2
$\begingroup$

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.

enter image description here

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

enter image description here

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:

enter image description here

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.

| improve this question | | | | |
$\endgroup$
  • $\begingroup$ 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. $\endgroup$ – Frederik Steinmetz Apr 2 at 15:09
  • $\begingroup$ @FrederikSteinmetz I've never ever used animation nodes. How would I go about this? I'm open to a script-based solution too. $\endgroup$ – Joehot200 Apr 2 at 16:27
  • $\begingroup$ 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/… $\endgroup$ – FFeller Apr 2 at 18:38
  • $\begingroup$ @FFeller This only seems to change the interpolation between keyframes, not allow new keyframes to be created with a correct speed. $\endgroup$ – Joehot200 Apr 2 at 21:24
  • $\begingroup$ When you say "any pattern", at least is the pattern defined by something? A curve, for instance? $\endgroup$ – lemon Apr 5 at 6:07
3
+50
$\begingroup$
  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

enter image description here

| improve this answer | | | | |
$\endgroup$
2
$\begingroup$

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.

| improve this answer | | | | |
$\endgroup$
  • 1
    $\begingroup$ 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. $\endgroup$ – Joehot200 Apr 2 at 21:21
  • 1
    $\begingroup$ 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. $\endgroup$ – AlexanderESmith Apr 2 at 21:30
  • 1
    $\begingroup$ @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.. $\endgroup$ – Robin Betts Apr 2 at 22:13
  • $\begingroup$ @RobinBetts Yeah, that sounds about right! I've edited my question to try and make it more clear. $\endgroup$ – Joehot200 Apr 4 at 15:16

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.