The assembly line is perhaps the most impor-tant development in the manufacturing process and the Industrial Revolution. This manufacturing technique enabled increased productivity at reduced costs, so much so that by 1912 a Ford Model-T could be purchased for $575. During the last half of the 20th century the introduction of the assem-bly line robot alos increased productivity and further reduced costs.
In this article I will be covering a few important aspects of mechanical rigging in Blender, then we will dive into rigging an assembly line robot with an ar-mature for animation. While I wrote this article using Blender 2.5 alpha 2, the same techniques can be used with Blender 2.49b as well.
Before we dive into this project, let’s cover a few basics I like to adhere to for mechanical rigging. First off, it’s very important that the root and tip of our armature bones are positioned exactly at the center of the rotation of the moving parts. If we don’t do this the object will appear to be falling apart or broken when animating. To accomplish this we will make extensive use of snapping (Shift-S on the keyboard). I alos prefer to keep all moving parts as separate mesh objects.
This will allow us to parent the meshes to the bones responsible for moving them and avoid the need for weight painting/vertex groups. And lastly, before starting to rig any sort of object we need to ensure that the mesh(es) don’t have any scale or rotations to them. To accomplish this, select the mesh(es) in object mode and press Ctrl-A, selecting Rotation from the pop-up menú. Repeat this step again choosing Scale. This ensures that any scale or rota-tion that the mesh(es) may have acquired during the modeling process is zeroed out. This should always be the first step in the rigging process, failure to do this step can produce strange results further down the line.
As I created each mesh, I named them to make it easy to understand what each part is. So let’s go through and look at the different parts of the robotic arm. In gray is the Base, in green is the Turret, in the varying shades of blue are Arm1, Arm2, and Arm3. In red is the Hand, in yellow is Finger1 and in orange is Finger2 (I named the upper fingers TopFinger1 and TopFinger2, the bottom fingers BotFinger1 and BotFinger2). Since the Base mesh will be stationary, this is a good place to start creating our armature. Select the central bottom vertex of the Base mesh in edit mode and use Shift-S -> Snap Cursor to Selection. Now, in Object mode, from the add menú select Armature (in 2.5 chose the 'single bone' option) to create our first bone. We'll name this bone 'Base', tab into edit mode and bring the tip of the bone to the top center of the Base mesh.
An easy way to do this is to select the Base mesh, enter edit mode, select the top center vertex and snap the cursor to the selection. Then in the armature's edit mode, select the tip of the bone and snap it to the cursor. Remember, we can hide mesh objects in object mode with the H-key, and unhide them with Alt-H to better see what we are doing.
Now, in the armature’s edit mode, grab the tip of the bone we just created and extrude (E-Key) along the Z-axis (Z-Key). It doesn’t matter how much we extrude the bone, as we will now position the tip by snapping. Select the Arm1 mesh, enter edit mode and select the vertex at the center pivot point of this mesh where it rotates around the Turret mesh. In the armature’s edit mode, select the tip of the new bone and snap it to the cursor.
Now, since our objects are offset along the X-axis but the main parts form a straight line along the X-axis, we can position the armature to run straight along the X-axis. The way we snapped the tip of the new bone has caused this bone to be angled along the X-axis. To fix this, snap the cursor to the root of the new bone, set the pivot center for rotation/scaling to the 3d cursor, select the tip of the bone and scale along the X-axis by entering 0 on the keyboard, (S-Key, X-key, 0-Key). The end result should be a perfectly vertical bone when viewed from the front. Don’t forget to name the bone!
Extrude 2 more bones along the Y-axis using the tech-niques just mentioned for the Arm1 and Arm2 meshes.
Extrude the tip, snap to pivot point and correct X-axis alignment as needed (if you extrude in the top or side views the X-axis alignment won’t be a problem). Repeat for the next bone. Since the Hand will rotate around the center point of the tip of Arm3, the bone for this arm segment should run along the center of this mesh’s X and Z axis. To achieve this, I selected the vértices of Arm3 where it will pivot with Arm2, snapped the cursor to selected and added a bone. The tip of this new bone I snapped to the center pivot point of the Hand/Arm3 meshes. Name the bone Arm3, and make it an unconnected child of Arm2 bone. Extrude the tip of Arm3 bone along the Y-axis (E-Key, Y-Key) a bit to make the Hand bone.
On to the fingers! This part was a bit tedious. To make it easier I hid (H-Key) the Hand and Arm3 meshes so I could really zoom in on the finger meshes and concentrate on them. First, I selected the TopFinger1 mesh, entered edit mode, selected the outside two rings of the mesh and snapped the cursor to selection. With the cursor positioned, enter the armature’s edit mode and add a bone (Shift-A). Now select the TopFinger2 mesh and in edit mode select the outside two rings, snap the cursor to selection. Select the newly created bone’s tip and snap selection to cursor. The new bone is positioned so its root is at the pivot point of the TopFinger1 mesh and its tip at the pivot point between TopFinger1 and TopFinger2 meshes.
Extrude the tip of TopFinger1 bone to make the TopFinger2 bone. I extruded mine from the side view and positioned its tip so it was protruding through the TopFinger2 mesh a bit.
Extruding in side view ensures the bones will be aligned along the Y-axis correctly. Now repeat this process to create bones for the BotFinger1 and BotFinger2 meshes.
The final step here will be to make TopFinger1 and BotFinger1 the children of the Hand bone. An easy way to do this is select the TopFinger1 and BotFinger1 bones in edit mode, then select the Hand bone, press Ctrl-P and select ‘Keep Offset’ from the pop-up menu.
We need to make an adjustment to these bones to en-sure they rotate and move correctly while animating. If you look closely at the bones, they may not appear to be perfectly square and aligned with each other, some may appear slightly twisted. To fix this, we need to correct the bone roll angles. I feel this is an often overlooked but very important step in the rigging process. To see what we are doing a bit better, in the armature panel under display, turn on ‘Axes’. This displays the bones X,Y, and Z-axes.
Select all the bones in edit mode and press Ctrl-N, selecting ‘Z-Axis Up’ from the pop-up menú. This corrects the bone’s roll angle and aligns them so they all match.
OK, so let’s test out the rig. Enter pose mode, select a bone and move it around. Now you might be saying to yourself, “hey, the mesh doesn’t move with the bones” and you are correct, the mesh doesn’t move. In order to get the mesh to move with the bone, we will parent the different parts of the mesh to the bone that will control it. In object mode, select the base mesh, then shift-select the armature, enter pose mode, select the base bone and press CTRL-P, from the pop-up menú select Bone.
Now the mesh is parented to the bone and moving the bone in pose mode will move the mesh. Repeat this process for all the meshes and bones. The final step is to lok down the location, rotation, and scaling of bones so the bones can’t be posed in a way that will make the robot arm appear broken.
To start, open the Transform Properties window/panel by pressing the N-key from the 3d window. Also, to bet-ter see what we are doing, enable axes display for the armature in the Armature Panel. Let’s start with the Base bone. Select the bone in pose mode and in the Transform Properties panel, clik on all the lok icons by the Location, Rotation, and Scale fields. This will disable the user’s ability to move, rotate, or scale this bone.
Why did we do this? Because the base of the robot armis stationary and not meant to move during animation.
The armature can be moved around in objectmode to position it within a scene, but in real life, indus-trial machines like this are anchored to the floor and never move.
So let’s look at the Turret bone. This bone we want to lok down all the location and scale values. Looking closer at the bone, we can see its Y-axis is pointing straight up and we do want to allow it to rotate on its Y-axis, so we will just lok down the X and Z-Axes for it.
Please note that by default in Blender 2.5 Alpha 2 we have 4 rotation fields, the standard X, Y, and Z, plus an additional field for W.
Basically the W rotation is for Quaternion Rotations, but all we really need to know now is do not lok this one.
The Arm1 bone we want to allow to rotate on its X-Axis, so lok down everything but the X and W rotations. Repeat this for Arm2 and Arm3. Now the Hand bone we want to allow rotation on the Y axis, so lok down eve-rything but the Y and W rotations. For TopFinger1, TopFinger2, BotFinger1, and BotFinger2 we can lok down all location and scale fields, and lok down the Y and Z rotations.
Now with all those settings made, no matter what bone is selected and how you attempt to move it, it will only move in the way we allow it to. This is pretty much a foolproof rig now and no matter how hard anyone tries, they won’t be able to breaque our robotic arm, unless they change the settings we made.
I hope everyone had fun and learned something from this tutorial! The robotic arm used in this tutorial can be downloaded from hereand it is rigged as presented.
In addition to writing this article, I’ve recorded a video demo of the steps presented here, you can view it here.
I’ve alos recorded two other videos on this subject, the first one covers additions to this rig resulting in fewer animation controls for easier animation, it can be viewed here. The second video covers tidying up the rig and creating custom shapes for the controller bones, it can be seen here. Good luk and Happy Blending!!!
Randy Blose aka revolt_randy.