In this tutorial, we will learn how to make a seamless looping animation of an object rotating randomly. As shown in this video-
Going over the basics of looping, as we know, the first instinct for getting something to loop is wrong. To get a seamless loop, we do not want the first and the last frame to be the same. Because that will lead to an extra frame. We want the final frame to be the one that comes just before the first frame.
What we do is, if the animation is supposed to be 100 frames (1 to 100), we set keys such that frame 1 and 101 are the same while keeping the timeline from 1 to 100. (Basically, dropping the identical frame from the end)
*Also we want the keyframe interpolation to be linear, we don’t want it to slow down and speed back up during the animation. But that depends on the style you are going for.
Coming over to rotation, there is a simple trick in which we can use a circle. Yes a circle, the thing that is literally a perfect loop. Here is how we do it-
We create a Curve>Circle and an Empty [Let’s call it E1].
We take that empty [E1] and constraint it to the circle using the “Follow Path” constraint.
Now with this, we can animate the offset value from 0 to 100, such that, the empty object will go around the circle and then come back to the starting position.
I learned this technique of using a circle from https://www.youtube.com/watch?v=I8iIgdz9VAc around (16:00), there are a lot of other useful techniques in this, do give this a watch!
YES! we made something that loops but this is not what we wanted to loop. Now to get what we wanted to loop; let’s say that we want this weird object, our hero object (shown below).
We use another constraint to get that to work. We can just tell the object to track the Empty object [E1] going around in circles using a “Damped Track” constraint.
Wow, looks bland, doesn’t it? How do we make it interesting?
Simple, first of all, we don’t need the circle to be in the default location orientation and scale, we can move it around, rotate and scale it in different axes to achieve different looks.
Secondly (and more importantly), we can layer this effect. Rather than having just one empty going around one circle, we can incorporate the motion of multiple empties.
For that, we need to make another setup of Empty-on-a-circle [E2] as well as a third empty object[E3]. Parent the hero object to the third empty [E3]. This way the parent object [E3] will have a different rotation which will compound the animation which is already there.
*This third empty [E3] needs to be at the centre of our hero object to get the same look as in the reference video because the pivot for rotation needs to be the same.
We do the same thing we did for the first circle to the circle to the second circle-transform it randomly. And then we use the “Damped Track Constraint” on this empty [E3] to get it to follow the second empty [E2].
And Voila! We have an object rotating seemingly randomly in a seamless loop.
Now many of you might be thinking, why should someone go through this much trouble when you can just animate the object rotation itself and be done with it. Which is fair, if you want to get a specific look this is not the way I would recommend. But this technique is great for creating interesting looking fresh loops. Also, this way you can quickly iterate between ideas, the shapes don’t even need to be circles, as long as they are close (but to be honest, a smooth curve like a circle gives the best result in my opinion). Moreover, this effect is not restricted to having just two empties go around a circle, you can layer as many empties as you want, just keep on parenting them to each other.
Make an empty move on a circle with “Follow Path” constraint and make your object orient towards it using the “Damped Track” constraint.
PS- This is my first time making a tutorial. If you think there is anything that can be improved, and if there is anything which that you would like to be clarified even further, please let me know. Also, if you end up making something using this technique, be sure to send it my way, I would love to have a look at it!