This tutorial will show you how to rotate, spin, or orbit multiple objects around a central point using Blender. This tutorial will also show you how to rotate the objects in a seamless animation loop and how to apply spinning animations to the objects while they rotating around the central point.
- Add an empty object.
- Parent the objects to the empty object.
- Rotate the empty object.
Basic Steps Expanded
The basic steps are quite simple.
- First add an empty object which will represent the center point that the objects will rotate around.
- Parent the objects that will be rotating to the empty object. Do this by:
- Selecting the objects that will be rotating first. – Hold command (Mac) or control (Windows) and click on these objects in the scene.
- Then, still holding command / control select the empty object last.
- Next, making sure the cursor is over the 3D viewport, type command-p (Mac) or control-p (Windows) and in the pop-up menu select ‘Set Parent To’ – ‘Object’.
- Now select the empty object and rotate it around one of the axes. – You will see that the other objects have become joined to the parent object and will rotate with it whilst staying in their positions relative to the parent empty object. You will also see that the rotating objects appear nested within the parent object in the scene inspector.
Please note, when you follow these steps it is important to select the empty object last. This is because when parenting objects it is the last object selected which will become the ‘parent’ of the other objects. When objects are parented to an object they will inherit properties of the parent such as the relative position and rotation. Empty objects are very useful in this regard.
Rotating Multiple Objects Around a Central Point in a Seamless Loop
Now I will step you through setting up multiple objects to rotate around a central object in a seamless loop with animations applied to orbiting objects.
For this demonstration I am going to first adjust the position of the camera. Basically I position and rotate the camera to point directly at the 0,0,0 point along the Y axis. I find this helpful because then the 0,0,0 point is directly in the middle of the camera view and I can more easily position objects relative to the camera view according to their X,Y,Z positional values. To do this:
- Move the cursor so it is within the 3D viewport area.
- Press ‘n’ on the keyboard to open the viewport properties.
- In the scene inspector select the camera.
- For the Location set X=0, Y=-20, and Z=0.
- For the Rotation set X=90º, Y=0, and Z=0.
- Click on the camera icon next the viewport properties to view through the camera.
Add and Position Orbiting Objects
In this example I will orbit a cube and a torus around the central p.
- In the 3D viewport select the cube and move it to X=3.
- In the 3D viewport add a Torus object.
- Move the Torus to the the position X=-3.
- Rotate the Torus X=90º.
- With the Torus select under the object menu in the 3D viewport select ‘Shade Smooth’.
Add the Empty Object
- In the 3D viewport add an Empty object. In this example I will use the ‘Plain Axes’ option. Make sure the empty is positioned at the location of 0,0,0.
Parent the Orbiting Objects to the Empty Parent Object
- In the scene inspector hold command (Mac) or control (Windows) and first select the Cube and Torus, then select the empty object.
- Move the cursor over the 3D viewport area and type command-p (Mac) or control-p (Windows) and select ‘Set Parent To’ – ‘Object’.
- Note that the Cube and the Torus objects are now parented to the Empty object in the scene inspector.
Set Animation Duration
In this example I will create an animation loop that will go for 3 seconds.
- In the Output Properties set the frame rate to 30 fps (30 frames per second).
- In the timeline set the End to 90 (3 times 30 frames for each second).
Add the Animation Keyframes
- In the scene inspector select the Empty object.
- In the timeline click on the circular record button just next to the playback controls on the left side.
- In the timeline select the first frame either by entering ‘1’ into the current frame number at the top right, or by clicking at the top of the timeline where the frame numbers are, or by moving the blue timeline slider.
- Move the cursor over the 3D viewport area and press ‘i’ on the keyboard.
- Then in the ‘Insert Keyframe Menu’ select ‘Rotation’. This will create a keyframe for rotation within the Empty object’s timeline based on its current properties.
- Select the last frame (frame 90) in the timeline.
- Repeat steps 4 and 5 to add another keyframe at the end of the timeline sequence.
- Now, making sure we are still on that frame in the timeline change the Z Rotation property of the Empty object to 360º. Because this is a complete rotation you will not see any change in the object but now if you drag the blue slider in the timeline you will see that the cube and the torus rotate around the central point in a perfect 360º sequence. You can also press the spacebar on the keyboard to preview the animation sequence looping.
Please note: The crucial step which some people miss is simply clicking the record button first before creating the keyframes. If you don’t click the record button first any changes to the object properties will either overwrite any previous properties applied to the object or won’t remain applied. Clicking the record button allows you to then create keyframes based on changes to the object’s properties.
In terms of creating a seamless loop there are two main considerations. The first is the ‘Motion Easing’ or the ‘Extrapolation Mode’. By default Blender applies a more natural movement to animation sequences. In this case you will notice that the rotation appears to slowly speed up at the start of the sequence and to then slow down towards the end of the sequence. This is more typical of how objects move in the real world. This may be what you are after but sometimes a more ‘linear’ movement is more useful. In this example I am after a linear motion. To achieve this:
- Make sure you still have the empty object selected and are looking at the empty object’s timeline sequence.
- Select the ‘Dope Sheet’ window.
- Under Channel select Extrapolation Mode – Linear Extrapolation.
- Now press spacebar on the keyboard to preview the animation. You should see the rotation sequence moving at a linear speed.
The next consideration may be hard to notice at first, but when you play the animation sequence as a loop every frame is generally different, however in this example, as you know, the first and last frames should appear exactly the same. Essentially the first and last frames are doubled up, so, depending on what you are using to actually play your looping animation you may notice an ever so slight pause in the animation at the point where it loops.
It is worth noting that a lot of video player tools will include a slight pause anyway when the movie loops. This is just because a lot of video players require a tiny moment to rewind the video back to the starting point. I often aim to get more mileage out of my looping animation sequences and by using a video editing tool to repeat my animation sequences a few times so they will at least loop smoothly a few times before the video player loops them. In this case I really want to make sure that when I lay out my sequences side by side or they are played back to back there is no repetition of the first and last frames that may cause a slight pause that will detract from the smoothness of the looping sequence.
For me there are two relatively simple methods to ensure that the first and last frames aren’t repeated.
The first, which is the method I use most often, is to export my animations as a sequence of images. This method also has some advantages in that I can export each frame of the animation as an uncompressed image, then I use a tool like After Effects to compile them. In this case I simply remove either the first or the last image frame from the sequence before I compile it in After Effects. The disadvantage of this method is that sometimes it is simply more straight forward to export the video directly from Blender.
The second method is to shorten the outputted or rendered timeline by one frame, that is after you have setup the animation sequence. So if the last frame is 90 and it has a keyframe with the object rotated 360º, simply adjust the end frame to be 89 before rendering out the video. However do not move or mess with the final keyframe on frame 90. It is OK if this keyframe is outside the rendered sequence.
Applying Rotations to the Orbiting Objects
The main thing to do here is to make sure that any rotations of the orbiting objects align with the duration of the orbiting group as a whole. The orbiting objects can rotate more times during the sequence however they just need to be in some sort of alignment (eg 360º) that aligns perfectly with the first and last frames of the main sequence. In this example I will make torus rotate at least 2 times while it orbits around the center point.
- Select the Torus object.
- In the Torus object’s timeline follow the same steps as applied to the empty object, only when rotating the Torus on the Z axis, set the rotation to a variation of 360º. Eg, one full rotation = 360º, two rotations = 720º etc.
Please note: In the case of the Torus object in this example, if it were to spin 180º on the Z axis it would appear like a complete rotation because the Torus object has the same appearance when viewed from the front and back. If it were set to complete 2 rotations (720º) it may appear like it is rotating four times but really it isn’t. For a typical object like say a skull that appears different in the front and back views it will need to rotate 360º for a complete rotation.
Otherwise I hope this tutorial has helped you learn how to spin, rotate or orbit multiple objects around a central point in Blender. If anything is unclear please let me know by email at firstname.lastname@example.org.
If you would like to stay in the loop when I publish new tutorials you might want to consider subscribing to my Youtube Channel, or if you use RSS you can find feeds available for any or all of my tutorial categories.