Speeding up a rotation?

I have a rotating object, keyed at 0, 120, 240, 359, all the f-curves are linear so I get a very smooth rotation.

However I’d like the rotation to start slowly and speed up, like a motor starting it will - over time - convert the torque into rotation, this has a ‘spin up’ period.

There is a cycle modifier on the channel so I can’t bezier the first f-curve because it will repeat every rotation. And I can’t start the cycle after xx frames because the animation jumps.

How can you get around this?


Ditch the cycle modifier and just animate it. Insert a key frame so the object rotates say 90 degrees in a second, then a key frame for it rotating 180 degrees a second, then another for 360 degrees rotation a second, so on and so forth. Once the object is spinning at the desired rate, set the extrapolation mode for the curve to be linear, and it will continue to spin forever at that speed.


Alternate method is to use drivers so instead of animating rotation, you’re animating the rate of rotation. Then keyframe the slope of the driver controller to spin up, spin-down, or hold a constant RPM.

pauljs, how would you do that ? I’m curious.

Here is a cube accelerating from zero. Uses a scripted expression. Not my idea, I must credit clockmender after spending a few days trying to figure it out. The empty controls the speed between frames. rotateacubeaccelerate.blend (429 KB)

You can reference the previous frame ? o_o
That changes… EVERYTHING ! :o Thanks for the tip…