Chapter 6. Rigging the Low Resolution Mesh
In this chapter, we will cover the following recipes:
- Building the character's Armature from scratch
- Perfecting the Armature to also function as a rig for the Armor
- Building the character's Armature through the Human Meta-Rig
- Building the animation controls and the Inverse Kinematic
- Generating the character's Armature by using the Rigify add-on
Introduction
To be able to animate our character, we have to build the rig, which in Blender is commonly referred to as an Armature, and this is the skeleton that will deform the Gidiosaurus low resolution mesh.
The rigging process in Blender can be accomplished basically in two different ways:
- By building the Armature by hands from scratch
- By using the provided Human Meta-Rig or the Rigify add-on
Building the Armature manually by hand can be a lot of work, but in my opinion, is the only way to really learn and understand how a rig works; on the other hand, the Rigify add-on gives several tools to speed up and automate the rig creation process, and this in many occasions, can be very handy.
Building the character's Armature from scratch
So, the first recipe of this chapter is about the making of the Armature by hands for our Gidiosaurus.
Getting ready
In this first recipe, we are going to build by hands the basic rig, which is the skeleton made only by the deforming bones.
However, first, let's prepare a bit the file to be worked:
- Start Blender and open the
Gidiosaurus_unwrap_final.blend
file. - Disable the Textured Solid and Backface Culling items in the 3D view Properties sidepanel, join the 3D window with the UV/Image Editor window, and click on the 11th scene layer to have only the Gidiosaurus mesh visible in the viewport.
- Go to the Object window under the Display subpanel and enable the Wire item. This will be useful in the process in order to have an idea of the mesh topology when in Object Mode and Solid viewport shading mode. However, for the moment, press the Z key to go in the Wireframe viewport shading mode.
- Press 1 on the numpad to go in the Front view, and press 5 on the numpad again to switch to the Ortho view.
- Save the file as
Gidiosaurus_rig_from_scratch_start.blend
.
How to do it…
Let's start:
- Be sure that the 3D Cursor is at the origin pivot point of the Gidiosaurus mesh. Put the mouse pointer in the 3D view, press Shift + A, and in the Add pop-up menu, select Armature | Single Bone:
- Press Tab to go into Edit Mode and select the whole bone by right-clicking on its central part; move the bone upwards to the Gidiosaurus's hips area (G | Z | Enter or left-click to confirm), and then go in the Side view (3 key on the numpad) and center its position by moving it on the y axis:
- Right-click on the Head of the bone to select it and by pressing G to move it, scale the bone size to fit the pelvis area:
- Go to the Item subpanel under the 3D view Properties sidepanel, or in the Bone window under the main Properties panel to the right-hand side of the screen, and rename Bone (default name) as hips:
- Press Z to go in the Solid viewport shading mode, and then go to the Object Data window and enable the X-Ray item under the Display subpanel.
- With the tip of the bone selected (the Head), press the E key to extrude it. By this process, and by following the wire topology visible on the mesh as a guide, go upwards to build the Gidiosaurus spine (2 bones), chest (1 bone), and neck (1 bone); as much as possible, try to place the Heads (the tips/joints) of the bones aligned with the transversal edge-loops on the mesh's articulation:
- Go again to the Object Data window under the Display subpanel, and enable the Names item (in the following screenshot, all the bones have been selected just to highlight them and their respective names). As you can see in the screenshot, the extruded bones get their names from the previous one, so we have hips, then hips.001, hips.002, and so on:
- Select the hips.001 bone and rename it spine.001; select the hips.002 bone and rename it spine.002.
- Select the hips.003 bone and rename it chest; select the hips.004 bone and rename it neck.
- Select the tip of the neck bone and extrude it; rename the new bone (neck.001) as head:
So, now we have built the spine - neck – head part of the Armature; actually, one thing is still missing: the bone to animate the mandible.
- Press Tab to get out of Edit Mode. In the Side view, enable the 15th scene layer on the 3D viewport toolbar, in order to show the Empty_rot_mand object; select it and press Shift + S to call the Snap pop-up menu. Then, select the Cursor to Selected item.
- Reselect the Armature and go again into Edit Mode. Press Shift + A to add a new bone; move its Head to resize and fit it inside the mandible of the Gidiosaurus:
- Rename it mand and in the Bone window under the main Properties panel, in the Relations subpanel, click on the Parent slot to select the head item from the pop-up menu with the bones list. Leave the Connected item unchecked:
At this point, we can already see some particular setting to be applied to the bones.
- Go to the Object Data window under the Properties panel and in the Display subpanel, switch from the default Octahedral to the B-bone button:
- Press A to select all the bones, and then press Ctrl + Alt + S (or go to the Armature item in the window toolbar, and then go to Transform | Scale Bbone) and scale the B-bones to 0.200 (hold the Ctrl key to constrain the scaling values; the B-bones scaling works both in Edit Mode and Pose Mode).
- Select only the chest bone and scale it bigger to 2.500; select the head bone and scale it to 4.000:
- Go to the Object window and under the Display subpanel, click on the Maximum Draw Type slot (set to Textured by default) and switch it to Wire.
- Press Ctrl + Tab to switch the Armature directly from Edit Mode to Pose Mode. Right-click on the chest bone to select it and go to the Bone window under the main Properties panel; in the Deform subpanel, set Segments under the Curved Bones item to 3:
- Select the spine.002 and spine.001 bones and set Segments to 2. Select the neck bone and set Segments to 3.
- Select the Gidiosaurus mesh, go to the Object window, and disable the Wire item under the Display subpanel:
- Press Ctrl + Tab to go out of the Pose Mode, and then Shift + S | Cursor to Selected to put the 3D Cursor at the rig/mesh/center of the scene pivot point.
- Press Tab to go into Edit Mode and press the 1 key on the numpad to go in the Front view; go to the Object Data window, under the Display subpanel, and switch back from B-bone to Octahedral (even if the visualization mode is different, the bones set as B-Splines still keep their curved properties in Pose Mode).
- Press Shift + A to add a new bone at the cursor position. Move and resize it to put it as the clavicle bone—almost horizontal and slightly backward oriented, on the left-hand side of the rig. Rename it shoulder.L and in the Parent slot under the Relations subpanel, select the chest item:
- In the Front view, select the Head of the shoulder.L bone and extrude it 3 times to build the bones for arm, forearm, and hand:
- Now, exit Edit Mode and right-click to select the Gidiosaurus mesh; enter Edit Mode, select one or more edge-loops at the elbow level, and press Shift + S | Cursor to Selected.
- Get out of Edit Mode, select the Armature; go into Edit Mode, select the joint between the arm and forearm bones and press Shift + S | Selection to Cursor:
- This is the easiest way to correctly align the rig joints with the mesh edge-loops. Do the same for the joint of the wrist and the bone of the hand; rename the bones as arm.L, forearm.L, and hand.L:
- Select the hand.L bone and use Shift + D to duplicate it; scale it smaller (S | 0.600 | Enter), rename it palm_01.L, and move it above the joining of the palm with the thumb. Use Shift + D to duplicate it 2 more times and move the new bones above the joining of the other two fingers; rename them palm_02.L and palm_03.L.
- Use Shift to select the three palm bones and, as the last one, the hand.L bone; press Ctrl + P | Keep Offset to parent them (not connected) to the latter one:
- Select (individually) the Heads of each palm bones and extrude the bones for the fingers; center their joints with the 3D Cursor/Snap menu method and rename them properly (thumb, index, and middle):
- Again with the 3D Cursor at the rig pivot point, add a new bone and shape it to fit inside the left thigh, the Tail at the top, close to the hips bone, and the Head at the knee location; select it and use Shift to select the hips bone, and then press Ctrl + P | Keep Offset. Extrude the bone's Head three times to build the leg – foot skeleton.
- Extrude also the bones for the toes and repeat the previously described process to center the joints, and then rename all the new bones (leg, calf, foot, toe inn, and ext):
In the preceding screenshots, you can see that we have hidden the talons vertices in Edit Mode (H key), in order to have the possibility to easily select the last edge-loops on fingers and toes.
- Save the file as
Gidiosaurus_rig_from_scratch_01.blend
.
Building the rig for the secondary parts
Now that we have completed the main body rigging system, it's time to build the rig for eyes, eyelids, and tongue:
- Get out of Edit Mode and select the Eyes item in the Outliner; press the dot (.) key on the numpad to center the view on the selected object, the Z key to go in Wireframe viewport shading mode, and Tab to go into Edit Mode.
- Press the A key to select all the eye vertices and then box-deselect (the B key and the middle mouse button) the vertices of the right eye; use Shift + S to call the Snap pop-up menu and select the Cursor to Selected item to place the 3D Cursor at the center of the left eye mesh:
- Get out of Edit Mode, press the 3 key on the numpad to go in the Side view and reselect the Armature item in the Outliner; press Tab to go into Edit Mode, and then use Shift + A to add a new bone at the cursor position. Press G to grab the already selected Head of the new bone and move it close to the center of the eye to resize it smaller.
- Get out of Edit Mode and select the Eyes item; enter Edit Mode and deselect all the vertices except for the external last iris edge-loop. Then, press Shift + S | Cursor to Selected and get out of Edit Mode.
- Again, select the Armature, go into Edit Mode, be sure that the Head of the new bone is still selected, and press Shift + S | Selection to Cursor:
- Rename the new bone as eye.L and in the Relations subpanel under the Bone window, parent it to the head bone (not Connected), or use Shift to select the eye.L and head bones and press Ctrl + P | Keep Offset.
- Now, select the Tail of the eye.L bone and press Shift + S | Cursor to Selected to put the 3D Cursor on it, and then press the period (.) key to switch the Pivot Point around the 3D Cursor; select the whole eye.L bone and use Shift + D to duplicate it, and soon after, click with the right mouse button to leave the duplicated bone untouched; rotate it 10 degrees clockwise on the cursor position (Shift + D | right-click | R | X | 10 | Enter).
- Rename the new bone as eyelid_upper.L.
- Reselect the whole eye.L bone and repeat the duplication procedure; rotate the new duplicate 10 degrees counterclockwise (Shift + D | right-click | R | X | -10 | Enter).
- Rename the new bone as eyelid_bottom.L (in the following screenshot, all the three new bones—eyelid_upper.L, eye.L, and eyelid_bottom.L—have been selected just to enhance their visibility):
- Now, duplicate the head bone, resize it smaller, and move it to the joining of the tongue with the inner mouth; rename it from head.001 to tongue.001 and in the Relations subpanel, change its parenting from neck to mand.
- Select the Head of the tongue.001 bone and press the E key to extrude 4 new bones:
- Rename them accordingly, and then use Shift to select from the tongue.001 to tongue.005 bones and press Ctrl + R; move the mouse pointer horizontally to roll them on their y axis by 180° (hold Ctrl to constrain the rolling to intervals of 5 degrees; alternatively, the roll value can also be set by typing it in the Roll button in the Transform subpanel under the 3D viewport Properties sidepanel).
Completing the rig
At this point, the basic rig building process is almost done, even if it is only for the left-half part of the mesh:
- Get out of Edit Mode and press Shift + S | Cursor to Selected to place the 3D Cursor at the median pivot point of the Armature.
- Go back into Edit Mode, select only the left-half part bones and not the median ones (meaning: leave the hips, spine, neck, head, mouth, and tongue bones unselected), press Shift + D to duplicate them, and then right-click with the mouse button; press Ctrl + M, then the X key to mirror the duplicated bones on the x axis, in order to build the missing right-half part of the rig:
- With the duplicated bones still selected, go to the 3D window toolbar and click on the Armature item; in the pop-up menu, select the Flip Names item to automatically rename them with the correct .R suffix:
As a very last thing for this recipe, we must verify that the alignment of the bones, especially the last duplicated ones, is correct and, just in case, recalculate the roll rotation, that is, the rotation around the y axis of the bone itself.
- In the Object Data window, under the Display subpanel, check the Axes item to make the bones orientation axes visible (only in Edit Mode and Pose Mode) in the 3D view.
- Select all the bones and press Ctrl + N to recalculate the rolling of all of them; in the Recalculate Roll pop-up menu, there are several different options: because basically the z axis of the bones must match from the left to the right side of the whole rig, with the Armature (and the mesh) oriented along the y global axis, as in our Gidiosaurus case, the first top item, Local X Tangent, can be a good start.
By the way, it is good practice to not trust this automated procedure alone, because sometimes it can give inconsistent results; so, do the following:
- After the recalculation, check that the axes of each bone are actually correctly orientated in a consistent way; effectively, there are some bones that didn't get consistently oriented, meaning that their x and z local axes are oriented differently from the other bones.
- In this case, select the incorrectly oriented bone, press Ctrl + R, and move the mouse to change the rolling; press the Ctrl key to constrain the rolling to intervals of 5 degrees. Alternatively, select the wrong bones, and then use Shift to select one bone that is correctly oriented and press Ctrl + N | Active Bone to copy the rolling from the last selected bone.
By enabling the X-Axis Mirror item in the Armature Options tab under the Tool Shelf, you can recalculate only the bones of one side; the other side bones will follow automatically.
If you want to make sure the bones' orientations are correct and everything is going to work in animation, just go into Pose Mode and rotate one bone, for example leg.L, and then click on the Copies the current pose of the selected bones to copy/paste buffer button (Ctrl + C), which is the first left one of the last three buttons to the right-hand side of the viewport toolbar; then, select the symmetrical bone, leg.R, and click on the last right button to paste the flipped pose (Ctrl + Shift + V); if the leg.R bone rotates correctly, then the orientation is OK:
- Now, go to the Object Data window under the main Properties panel and under Display, switch again the bones visualization from Octahedral to B-bone; select the bones and by pressing Ctrl + Alt + S, scale the B-bones smaller or bigger, depending on the visual effect you want to obtain:
- Press Ctrl + Tab to pass directly from Edit Mode to Pose Mode and select the forearm.L bone; in the Deform subpanel under the Properties panel, set the Segments for the Curved Bones to 12, and then set the Ease In and Ease Out values to 0.000.
- Repeat this for the forearm.R bone and also for the calf.L and calf.R bones; repeat also for the arm.L, arm.R, leg.L, and leg.R bones.
In the following screenshot, all the eight B-bones have been selected to make them more visible. By the way, the highlighted leg.R bone is the active one and shows the Curved Bones setting in the highlighted Deform subpanel to the right-hand side of the screen.
- Select the toe_inn_02.L bone and in the Deform subpanel under the Properties panel, set the Segments to 6 and leave the Ease In and Ease Out values to 1.000.
- Repeat this for the toe_ext_02.L bone; then, do the same also to the toe_inn_02.R and toe_ext_02.R bones.
- Select the toe_inn_01.L bone and set the Segments to 3; leave the Ease In and Ease Out values to 1.000.
- Repeat for the toe_ext_01.L bone; then, do the same also to the toe_inn_01.R and toe_ext_01.R bones:
- Save the file.
How it works…
Although it's often a really time consuming task, the handmade rigging is quite self-explicative; it is, however, better to explain some of the concepts behind this.
The proper renaming of the bones is important, considering that each deforming bone will affect a vertex group sharing the same name on the mesh; although in some cases, as for the tongue bones, the bone naming process can be automated in some way, usually it is better to spend time in giving meaningful names to each bone, in order to avoid mistakes in the following skinning process.
It's also very important to build the hierarchy of the bones so that a bone at a higher level can lead all of the children bones, as it would be in a real skeleton (that is, for example, the hand bone leads all the fingers bones, the forearm bone leads the hand bone, and so on).
Parenting a bone and then obtaining the others by extruding and/or duplicating simplifies the work because an extruded bone is automatically parented to the bone it has been extruded from, and a duplicated bone obviously inherits the parenting of the original one; in the case of the tongue.001 bone, extruding the others has given us a chain with bones automatically parented and named as tongue.002, tongue.003, tongue.004, and tongue.005.
B-bones are both a visualization mode for the bones and a way of working; B-bones, in fact, can work inside a chain as splines, which means that the bones are curved according to the number of Segments and the values of the Ease In and Ease Out items. For the bones of the arms and legs, we have set the Ease In and Ease Out values to 0.000 (default is 1.000; maximum is 2.000), in order to have the B-bones rotating only on their y axis but remaining straight along their length, and hence, mimic the twisting by not only the rotation (pronation and supination of the lower arm) of both the Ulna-Radius and Tibia-Fibula articulation complexes, but also the (limited) rotation of Femur and Humerus.
In some way, B-bones can work as a kind of simulation for a very basic muscle system; in the following screenshot, you can see their effect on the skinned mesh for the forearm by rotating the hand.L bone on the local y axis (to enhance the visibility of the mesh surface's modifications, the wireframe over solid drawing item has been enabled in the Display subpanel under the Object window):
Here is the effect of the rotation of the forearm.L bone on the Gidiosaurus high arm:
The effect acts on the shin as well, by rotating the foot.L bone on the global z axis:
Also, the same effect acts on the thigh by rotating the calf.L bone:
Note that the Gidiosaurus is a digitigrade biped humanoid: the bones that, from our plantigrade point of view, look like the foot are actually the toes, while the almost vertical structure that we would call an ankle is the real foot (this is a very common condition among the majority of the terrestrial animals, both still alive and extinct).
Getting ready
In this first recipe, we are going to build by hands the basic rig, which is the skeleton made only by the deforming bones.
However, first, let's prepare a bit the file to be worked:
- Start Blender and open the
Gidiosaurus_unwrap_final.blend
file. - Disable the Textured Solid and Backface Culling items in the 3D view Properties sidepanel, join the 3D window with the UV/Image Editor window, and click on the 11th scene layer to have only the Gidiosaurus mesh visible in the viewport.
- Go to the Object window under the Display subpanel and enable the Wire item. This will be useful in the process in order to have an idea of the mesh topology when in Object Mode and Solid viewport shading mode. However, for the moment, press the Z key to go in the Wireframe viewport shading mode.
- Press 1 on the numpad to go in the Front view, and press 5 on the numpad again to switch to the Ortho view.
- Save the file as
Gidiosaurus_rig_from_scratch_start.blend
.
How to do it…
Let's start:
- Be sure that the 3D Cursor is at the origin pivot point of the Gidiosaurus mesh. Put the mouse pointer in the 3D view, press Shift + A, and in the Add pop-up menu, select Armature | Single Bone:
- Press Tab to go into Edit Mode and select the whole bone by right-clicking on its central part; move the bone upwards to the Gidiosaurus's hips area (G | Z | Enter or left-click to confirm), and then go in the Side view (3 key on the numpad) and center its position by moving it on the y axis:
- Right-click on the Head of the bone to select it and by pressing G to move it, scale the bone size to fit the pelvis area:
- Go to the Item subpanel under the 3D view Properties sidepanel, or in the Bone window under the main Properties panel to the right-hand side of the screen, and rename Bone (default name) as hips:
- Press Z to go in the Solid viewport shading mode, and then go to the Object Data window and enable the X-Ray item under the Display subpanel.
- With the tip of the bone selected (the Head), press the E key to extrude it. By this process, and by following the wire topology visible on the mesh as a guide, go upwards to build the Gidiosaurus spine (2 bones), chest (1 bone), and neck (1 bone); as much as possible, try to place the Heads (the tips/joints) of the bones aligned with the transversal edge-loops on the mesh's articulation:
- Go again to the Object Data window under the Display subpanel, and enable the Names item (in the following screenshot, all the bones have been selected just to highlight them and their respective names). As you can see in the screenshot, the extruded bones get their names from the previous one, so we have hips, then hips.001, hips.002, and so on:
- Select the hips.001 bone and rename it spine.001; select the hips.002 bone and rename it spine.002.
- Select the hips.003 bone and rename it chest; select the hips.004 bone and rename it neck.
- Select the tip of the neck bone and extrude it; rename the new bone (neck.001) as head:
So, now we have built the spine - neck – head part of the Armature; actually, one thing is still missing: the bone to animate the mandible.
- Press Tab to get out of Edit Mode. In the Side view, enable the 15th scene layer on the 3D viewport toolbar, in order to show the Empty_rot_mand object; select it and press Shift + S to call the Snap pop-up menu. Then, select the Cursor to Selected item.
- Reselect the Armature and go again into Edit Mode. Press Shift + A to add a new bone; move its Head to resize and fit it inside the mandible of the Gidiosaurus:
- Rename it mand and in the Bone window under the main Properties panel, in the Relations subpanel, click on the Parent slot to select the head item from the pop-up menu with the bones list. Leave the Connected item unchecked:
At this point, we can already see some particular setting to be applied to the bones.
- Go to the Object Data window under the Properties panel and in the Display subpanel, switch from the default Octahedral to the B-bone button:
- Press A to select all the bones, and then press Ctrl + Alt + S (or go to the Armature item in the window toolbar, and then go to Transform | Scale Bbone) and scale the B-bones to 0.200 (hold the Ctrl key to constrain the scaling values; the B-bones scaling works both in Edit Mode and Pose Mode).
- Select only the chest bone and scale it bigger to 2.500; select the head bone and scale it to 4.000:
- Go to the Object window and under the Display subpanel, click on the Maximum Draw Type slot (set to Textured by default) and switch it to Wire.
- Press Ctrl + Tab to switch the Armature directly from Edit Mode to Pose Mode. Right-click on the chest bone to select it and go to the Bone window under the main Properties panel; in the Deform subpanel, set Segments under the Curved Bones item to 3:
- Select the spine.002 and spine.001 bones and set Segments to 2. Select the neck bone and set Segments to 3.
- Select the Gidiosaurus mesh, go to the Object window, and disable the Wire item under the Display subpanel:
- Press Ctrl + Tab to go out of the Pose Mode, and then Shift + S | Cursor to Selected to put the 3D Cursor at the rig/mesh/center of the scene pivot point.
- Press Tab to go into Edit Mode and press the 1 key on the numpad to go in the Front view; go to the Object Data window, under the Display subpanel, and switch back from B-bone to Octahedral (even if the visualization mode is different, the bones set as B-Splines still keep their curved properties in Pose Mode).
- Press Shift + A to add a new bone at the cursor position. Move and resize it to put it as the clavicle bone—almost horizontal and slightly backward oriented, on the left-hand side of the rig. Rename it shoulder.L and in the Parent slot under the Relations subpanel, select the chest item:
- In the Front view, select the Head of the shoulder.L bone and extrude it 3 times to build the bones for arm, forearm, and hand:
- Now, exit Edit Mode and right-click to select the Gidiosaurus mesh; enter Edit Mode, select one or more edge-loops at the elbow level, and press Shift + S | Cursor to Selected.
- Get out of Edit Mode, select the Armature; go into Edit Mode, select the joint between the arm and forearm bones and press Shift + S | Selection to Cursor:
- This is the easiest way to correctly align the rig joints with the mesh edge-loops. Do the same for the joint of the wrist and the bone of the hand; rename the bones as arm.L, forearm.L, and hand.L:
- Select the hand.L bone and use Shift + D to duplicate it; scale it smaller (S | 0.600 | Enter), rename it palm_01.L, and move it above the joining of the palm with the thumb. Use Shift + D to duplicate it 2 more times and move the new bones above the joining of the other two fingers; rename them palm_02.L and palm_03.L.
- Use Shift to select the three palm bones and, as the last one, the hand.L bone; press Ctrl + P | Keep Offset to parent them (not connected) to the latter one:
- Select (individually) the Heads of each palm bones and extrude the bones for the fingers; center their joints with the 3D Cursor/Snap menu method and rename them properly (thumb, index, and middle):
- Again with the 3D Cursor at the rig pivot point, add a new bone and shape it to fit inside the left thigh, the Tail at the top, close to the hips bone, and the Head at the knee location; select it and use Shift to select the hips bone, and then press Ctrl + P | Keep Offset. Extrude the bone's Head three times to build the leg – foot skeleton.
- Extrude also the bones for the toes and repeat the previously described process to center the joints, and then rename all the new bones (leg, calf, foot, toe inn, and ext):
In the preceding screenshots, you can see that we have hidden the talons vertices in Edit Mode (H key), in order to have the possibility to easily select the last edge-loops on fingers and toes.
- Save the file as
Gidiosaurus_rig_from_scratch_01.blend
.
Building the rig for the secondary parts
Now that we have completed the main body rigging system, it's time to build the rig for eyes, eyelids, and tongue:
- Get out of Edit Mode and select the Eyes item in the Outliner; press the dot (.) key on the numpad to center the view on the selected object, the Z key to go in Wireframe viewport shading mode, and Tab to go into Edit Mode.
- Press the A key to select all the eye vertices and then box-deselect (the B key and the middle mouse button) the vertices of the right eye; use Shift + S to call the Snap pop-up menu and select the Cursor to Selected item to place the 3D Cursor at the center of the left eye mesh:
- Get out of Edit Mode, press the 3 key on the numpad to go in the Side view and reselect the Armature item in the Outliner; press Tab to go into Edit Mode, and then use Shift + A to add a new bone at the cursor position. Press G to grab the already selected Head of the new bone and move it close to the center of the eye to resize it smaller.
- Get out of Edit Mode and select the Eyes item; enter Edit Mode and deselect all the vertices except for the external last iris edge-loop. Then, press Shift + S | Cursor to Selected and get out of Edit Mode.
- Again, select the Armature, go into Edit Mode, be sure that the Head of the new bone is still selected, and press Shift + S | Selection to Cursor:
- Rename the new bone as eye.L and in the Relations subpanel under the Bone window, parent it to the head bone (not Connected), or use Shift to select the eye.L and head bones and press Ctrl + P | Keep Offset.
- Now, select the Tail of the eye.L bone and press Shift + S | Cursor to Selected to put the 3D Cursor on it, and then press the period (.) key to switch the Pivot Point around the 3D Cursor; select the whole eye.L bone and use Shift + D to duplicate it, and soon after, click with the right mouse button to leave the duplicated bone untouched; rotate it 10 degrees clockwise on the cursor position (Shift + D | right-click | R | X | 10 | Enter).
- Rename the new bone as eyelid_upper.L.
- Reselect the whole eye.L bone and repeat the duplication procedure; rotate the new duplicate 10 degrees counterclockwise (Shift + D | right-click | R | X | -10 | Enter).
- Rename the new bone as eyelid_bottom.L (in the following screenshot, all the three new bones—eyelid_upper.L, eye.L, and eyelid_bottom.L—have been selected just to enhance their visibility):
- Now, duplicate the head bone, resize it smaller, and move it to the joining of the tongue with the inner mouth; rename it from head.001 to tongue.001 and in the Relations subpanel, change its parenting from neck to mand.
- Select the Head of the tongue.001 bone and press the E key to extrude 4 new bones:
- Rename them accordingly, and then use Shift to select from the tongue.001 to tongue.005 bones and press Ctrl + R; move the mouse pointer horizontally to roll them on their y axis by 180° (hold Ctrl to constrain the rolling to intervals of 5 degrees; alternatively, the roll value can also be set by typing it in the Roll button in the Transform subpanel under the 3D viewport Properties sidepanel).
Completing the rig
At this point, the basic rig building process is almost done, even if it is only for the left-half part of the mesh:
- Get out of Edit Mode and press Shift + S | Cursor to Selected to place the 3D Cursor at the median pivot point of the Armature.
- Go back into Edit Mode, select only the left-half part bones and not the median ones (meaning: leave the hips, spine, neck, head, mouth, and tongue bones unselected), press Shift + D to duplicate them, and then right-click with the mouse button; press Ctrl + M, then the X key to mirror the duplicated bones on the x axis, in order to build the missing right-half part of the rig:
- With the duplicated bones still selected, go to the 3D window toolbar and click on the Armature item; in the pop-up menu, select the Flip Names item to automatically rename them with the correct .R suffix:
As a very last thing for this recipe, we must verify that the alignment of the bones, especially the last duplicated ones, is correct and, just in case, recalculate the roll rotation, that is, the rotation around the y axis of the bone itself.
- In the Object Data window, under the Display subpanel, check the Axes item to make the bones orientation axes visible (only in Edit Mode and Pose Mode) in the 3D view.
- Select all the bones and press Ctrl + N to recalculate the rolling of all of them; in the Recalculate Roll pop-up menu, there are several different options: because basically the z axis of the bones must match from the left to the right side of the whole rig, with the Armature (and the mesh) oriented along the y global axis, as in our Gidiosaurus case, the first top item, Local X Tangent, can be a good start.
By the way, it is good practice to not trust this automated procedure alone, because sometimes it can give inconsistent results; so, do the following:
- After the recalculation, check that the axes of each bone are actually correctly orientated in a consistent way; effectively, there are some bones that didn't get consistently oriented, meaning that their x and z local axes are oriented differently from the other bones.
- In this case, select the incorrectly oriented bone, press Ctrl + R, and move the mouse to change the rolling; press the Ctrl key to constrain the rolling to intervals of 5 degrees. Alternatively, select the wrong bones, and then use Shift to select one bone that is correctly oriented and press Ctrl + N | Active Bone to copy the rolling from the last selected bone.
By enabling the X-Axis Mirror item in the Armature Options tab under the Tool Shelf, you can recalculate only the bones of one side; the other side bones will follow automatically.
If you want to make sure the bones' orientations are correct and everything is going to work in animation, just go into Pose Mode and rotate one bone, for example leg.L, and then click on the Copies the current pose of the selected bones to copy/paste buffer button (Ctrl + C), which is the first left one of the last three buttons to the right-hand side of the viewport toolbar; then, select the symmetrical bone, leg.R, and click on the last right button to paste the flipped pose (Ctrl + Shift + V); if the leg.R bone rotates correctly, then the orientation is OK:
- Now, go to the Object Data window under the main Properties panel and under Display, switch again the bones visualization from Octahedral to B-bone; select the bones and by pressing Ctrl + Alt + S, scale the B-bones smaller or bigger, depending on the visual effect you want to obtain:
- Press Ctrl + Tab to pass directly from Edit Mode to Pose Mode and select the forearm.L bone; in the Deform subpanel under the Properties panel, set the Segments for the Curved Bones to 12, and then set the Ease In and Ease Out values to 0.000.
- Repeat this for the forearm.R bone and also for the calf.L and calf.R bones; repeat also for the arm.L, arm.R, leg.L, and leg.R bones.
In the following screenshot, all the eight B-bones have been selected to make them more visible. By the way, the highlighted leg.R bone is the active one and shows the Curved Bones setting in the highlighted Deform subpanel to the right-hand side of the screen.
- Select the toe_inn_02.L bone and in the Deform subpanel under the Properties panel, set the Segments to 6 and leave the Ease In and Ease Out values to 1.000.
- Repeat this for the toe_ext_02.L bone; then, do the same also to the toe_inn_02.R and toe_ext_02.R bones.
- Select the toe_inn_01.L bone and set the Segments to 3; leave the Ease In and Ease Out values to 1.000.
- Repeat for the toe_ext_01.L bone; then, do the same also to the toe_inn_01.R and toe_ext_01.R bones:
- Save the file.
How it works…
Although it's often a really time consuming task, the handmade rigging is quite self-explicative; it is, however, better to explain some of the concepts behind this.
The proper renaming of the bones is important, considering that each deforming bone will affect a vertex group sharing the same name on the mesh; although in some cases, as for the tongue bones, the bone naming process can be automated in some way, usually it is better to spend time in giving meaningful names to each bone, in order to avoid mistakes in the following skinning process.
It's also very important to build the hierarchy of the bones so that a bone at a higher level can lead all of the children bones, as it would be in a real skeleton (that is, for example, the hand bone leads all the fingers bones, the forearm bone leads the hand bone, and so on).
Parenting a bone and then obtaining the others by extruding and/or duplicating simplifies the work because an extruded bone is automatically parented to the bone it has been extruded from, and a duplicated bone obviously inherits the parenting of the original one; in the case of the tongue.001 bone, extruding the others has given us a chain with bones automatically parented and named as tongue.002, tongue.003, tongue.004, and tongue.005.
B-bones are both a visualization mode for the bones and a way of working; B-bones, in fact, can work inside a chain as splines, which means that the bones are curved according to the number of Segments and the values of the Ease In and Ease Out items. For the bones of the arms and legs, we have set the Ease In and Ease Out values to 0.000 (default is 1.000; maximum is 2.000), in order to have the B-bones rotating only on their y axis but remaining straight along their length, and hence, mimic the twisting by not only the rotation (pronation and supination of the lower arm) of both the Ulna-Radius and Tibia-Fibula articulation complexes, but also the (limited) rotation of Femur and Humerus.
In some way, B-bones can work as a kind of simulation for a very basic muscle system; in the following screenshot, you can see their effect on the skinned mesh for the forearm by rotating the hand.L bone on the local y axis (to enhance the visibility of the mesh surface's modifications, the wireframe over solid drawing item has been enabled in the Display subpanel under the Object window):
Here is the effect of the rotation of the forearm.L bone on the Gidiosaurus high arm:
The effect acts on the shin as well, by rotating the foot.L bone on the global z axis:
Also, the same effect acts on the thigh by rotating the calf.L bone:
Note that the Gidiosaurus is a digitigrade biped humanoid: the bones that, from our plantigrade point of view, look like the foot are actually the toes, while the almost vertical structure that we would call an ankle is the real foot (this is a very common condition among the majority of the terrestrial animals, both still alive and extinct).
How to do it…
Let's start:
- Be sure that the 3D Cursor is at the origin pivot point of the Gidiosaurus mesh. Put the mouse pointer in the 3D view, press Shift + A, and in the Add pop-up menu, select Armature | Single Bone:
- Press Tab to go into Edit Mode and select the whole bone by right-clicking on its central part; move the bone upwards to the Gidiosaurus's hips area (G | Z | Enter or left-click to confirm), and then go in the Side view (3 key on the numpad) and center its position by moving it on the y axis:
- Right-click on the Head of the bone to select it and by pressing G to move it, scale the bone size to fit the pelvis area:
- Go to the Item subpanel under the 3D view Properties sidepanel, or in the Bone window under the main Properties panel to the right-hand side of the screen, and rename Bone (default name) as hips:
- Press Z to go in the Solid viewport shading mode, and then go to the Object Data window and enable the X-Ray item under the Display subpanel.
- With the tip of the bone selected (the Head), press the E key to extrude it. By this process, and by following the wire topology visible on the mesh as a guide, go upwards to build the Gidiosaurus spine (2 bones), chest (1 bone), and neck (1 bone); as much as possible, try to place the Heads (the tips/joints) of the bones aligned with the transversal edge-loops on the mesh's articulation:
- Go again to the Object Data window under the Display subpanel, and enable the Names item (in the following screenshot, all the bones have been selected just to highlight them and their respective names). As you can see in the screenshot, the extruded bones get their names from the previous one, so we have hips, then hips.001, hips.002, and so on:
- Select the hips.001 bone and rename it spine.001; select the hips.002 bone and rename it spine.002.
- Select the hips.003 bone and rename it chest; select the hips.004 bone and rename it neck.
- Select the tip of the neck bone and extrude it; rename the new bone (neck.001) as head:
So, now we have built the spine - neck – head part of the Armature; actually, one thing is still missing: the bone to animate the mandible.
- Press Tab to get out of Edit Mode. In the Side view, enable the 15th scene layer on the 3D viewport toolbar, in order to show the Empty_rot_mand object; select it and press Shift + S to call the Snap pop-up menu. Then, select the Cursor to Selected item.
- Reselect the Armature and go again into Edit Mode. Press Shift + A to add a new bone; move its Head to resize and fit it inside the mandible of the Gidiosaurus:
- Rename it mand and in the Bone window under the main Properties panel, in the Relations subpanel, click on the Parent slot to select the head item from the pop-up menu with the bones list. Leave the Connected item unchecked:
At this point, we can already see some particular setting to be applied to the bones.
- Go to the Object Data window under the Properties panel and in the Display subpanel, switch from the default Octahedral to the B-bone button:
- Press A to select all the bones, and then press Ctrl + Alt + S (or go to the Armature item in the window toolbar, and then go to Transform | Scale Bbone) and scale the B-bones to 0.200 (hold the Ctrl key to constrain the scaling values; the B-bones scaling works both in Edit Mode and Pose Mode).
- Select only the chest bone and scale it bigger to 2.500; select the head bone and scale it to 4.000:
- Go to the Object window and under the Display subpanel, click on the Maximum Draw Type slot (set to Textured by default) and switch it to Wire.
- Press Ctrl + Tab to switch the Armature directly from Edit Mode to Pose Mode. Right-click on the chest bone to select it and go to the Bone window under the main Properties panel; in the Deform subpanel, set Segments under the Curved Bones item to 3:
- Select the spine.002 and spine.001 bones and set Segments to 2. Select the neck bone and set Segments to 3.
- Select the Gidiosaurus mesh, go to the Object window, and disable the Wire item under the Display subpanel:
- Press Ctrl + Tab to go out of the Pose Mode, and then Shift + S | Cursor to Selected to put the 3D Cursor at the rig/mesh/center of the scene pivot point.
- Press Tab to go into Edit Mode and press the 1 key on the numpad to go in the Front view; go to the Object Data window, under the Display subpanel, and switch back from B-bone to Octahedral (even if the visualization mode is different, the bones set as B-Splines still keep their curved properties in Pose Mode).
- Press Shift + A to add a new bone at the cursor position. Move and resize it to put it as the clavicle bone—almost horizontal and slightly backward oriented, on the left-hand side of the rig. Rename it shoulder.L and in the Parent slot under the Relations subpanel, select the chest item:
- In the Front view, select the Head of the shoulder.L bone and extrude it 3 times to build the bones for arm, forearm, and hand:
- Now, exit Edit Mode and right-click to select the Gidiosaurus mesh; enter Edit Mode, select one or more edge-loops at the elbow level, and press Shift + S | Cursor to Selected.
- Get out of Edit Mode, select the Armature; go into Edit Mode, select the joint between the arm and forearm bones and press Shift + S | Selection to Cursor:
- This is the easiest way to correctly align the rig joints with the mesh edge-loops. Do the same for the joint of the wrist and the bone of the hand; rename the bones as arm.L, forearm.L, and hand.L:
- Select the hand.L bone and use Shift + D to duplicate it; scale it smaller (S | 0.600 | Enter), rename it palm_01.L, and move it above the joining of the palm with the thumb. Use Shift + D to duplicate it 2 more times and move the new bones above the joining of the other two fingers; rename them palm_02.L and palm_03.L.
- Use Shift to select the three palm bones and, as the last one, the hand.L bone; press Ctrl + P | Keep Offset to parent them (not connected) to the latter one:
- Select (individually) the Heads of each palm bones and extrude the bones for the fingers; center their joints with the 3D Cursor/Snap menu method and rename them properly (thumb, index, and middle):
- Again with the 3D Cursor at the rig pivot point, add a new bone and shape it to fit inside the left thigh, the Tail at the top, close to the hips bone, and the Head at the knee location; select it and use Shift to select the hips bone, and then press Ctrl + P | Keep Offset. Extrude the bone's Head three times to build the leg – foot skeleton.
- Extrude also the bones for the toes and repeat the previously described process to center the joints, and then rename all the new bones (leg, calf, foot, toe inn, and ext):
In the preceding screenshots, you can see that we have hidden the talons vertices in Edit Mode (H key), in order to have the possibility to easily select the last edge-loops on fingers and toes.
- Save the file as
Gidiosaurus_rig_from_scratch_01.blend
.
Building the rig for the secondary parts
Now that we have completed the main body rigging system, it's time to build the rig for eyes, eyelids, and tongue:
- Get out of Edit Mode and select the Eyes item in the Outliner; press the dot (.) key on the numpad to center the view on the selected object, the Z key to go in Wireframe viewport shading mode, and Tab to go into Edit Mode.
- Press the A key to select all the eye vertices and then box-deselect (the B key and the middle mouse button) the vertices of the right eye; use Shift + S to call the Snap pop-up menu and select the Cursor to Selected item to place the 3D Cursor at the center of the left eye mesh:
- Get out of Edit Mode, press the 3 key on the numpad to go in the Side view and reselect the Armature item in the Outliner; press Tab to go into Edit Mode, and then use Shift + A to add a new bone at the cursor position. Press G to grab the already selected Head of the new bone and move it close to the center of the eye to resize it smaller.
- Get out of Edit Mode and select the Eyes item; enter Edit Mode and deselect all the vertices except for the external last iris edge-loop. Then, press Shift + S | Cursor to Selected and get out of Edit Mode.
- Again, select the Armature, go into Edit Mode, be sure that the Head of the new bone is still selected, and press Shift + S | Selection to Cursor:
- Rename the new bone as eye.L and in the Relations subpanel under the Bone window, parent it to the head bone (not Connected), or use Shift to select the eye.L and head bones and press Ctrl + P | Keep Offset.
- Now, select the Tail of the eye.L bone and press Shift + S | Cursor to Selected to put the 3D Cursor on it, and then press the period (.) key to switch the Pivot Point around the 3D Cursor; select the whole eye.L bone and use Shift + D to duplicate it, and soon after, click with the right mouse button to leave the duplicated bone untouched; rotate it 10 degrees clockwise on the cursor position (Shift + D | right-click | R | X | 10 | Enter).
- Rename the new bone as eyelid_upper.L.
- Reselect the whole eye.L bone and repeat the duplication procedure; rotate the new duplicate 10 degrees counterclockwise (Shift + D | right-click | R | X | -10 | Enter).
- Rename the new bone as eyelid_bottom.L (in the following screenshot, all the three new bones—eyelid_upper.L, eye.L, and eyelid_bottom.L—have been selected just to enhance their visibility):
- Now, duplicate the head bone, resize it smaller, and move it to the joining of the tongue with the inner mouth; rename it from head.001 to tongue.001 and in the Relations subpanel, change its parenting from neck to mand.
- Select the Head of the tongue.001 bone and press the E key to extrude 4 new bones:
- Rename them accordingly, and then use Shift to select from the tongue.001 to tongue.005 bones and press Ctrl + R; move the mouse pointer horizontally to roll them on their y axis by 180° (hold Ctrl to constrain the rolling to intervals of 5 degrees; alternatively, the roll value can also be set by typing it in the Roll button in the Transform subpanel under the 3D viewport Properties sidepanel).
Completing the rig
At this point, the basic rig building process is almost done, even if it is only for the left-half part of the mesh:
- Get out of Edit Mode and press Shift + S | Cursor to Selected to place the 3D Cursor at the median pivot point of the Armature.
- Go back into Edit Mode, select only the left-half part bones and not the median ones (meaning: leave the hips, spine, neck, head, mouth, and tongue bones unselected), press Shift + D to duplicate them, and then right-click with the mouse button; press Ctrl + M, then the X key to mirror the duplicated bones on the x axis, in order to build the missing right-half part of the rig:
- With the duplicated bones still selected, go to the 3D window toolbar and click on the Armature item; in the pop-up menu, select the Flip Names item to automatically rename them with the correct .R suffix:
As a very last thing for this recipe, we must verify that the alignment of the bones, especially the last duplicated ones, is correct and, just in case, recalculate the roll rotation, that is, the rotation around the y axis of the bone itself.
- In the Object Data window, under the Display subpanel, check the Axes item to make the bones orientation axes visible (only in Edit Mode and Pose Mode) in the 3D view.
- Select all the bones and press Ctrl + N to recalculate the rolling of all of them; in the Recalculate Roll pop-up menu, there are several different options: because basically the z axis of the bones must match from the left to the right side of the whole rig, with the Armature (and the mesh) oriented along the y global axis, as in our Gidiosaurus case, the first top item, Local X Tangent, can be a good start.
By the way, it is good practice to not trust this automated procedure alone, because sometimes it can give inconsistent results; so, do the following:
- After the recalculation, check that the axes of each bone are actually correctly orientated in a consistent way; effectively, there are some bones that didn't get consistently oriented, meaning that their x and z local axes are oriented differently from the other bones.
- In this case, select the incorrectly oriented bone, press Ctrl + R, and move the mouse to change the rolling; press the Ctrl key to constrain the rolling to intervals of 5 degrees. Alternatively, select the wrong bones, and then use Shift to select one bone that is correctly oriented and press Ctrl + N | Active Bone to copy the rolling from the last selected bone.
By enabling the X-Axis Mirror item in the Armature Options tab under the Tool Shelf, you can recalculate only the bones of one side; the other side bones will follow automatically.
If you want to make sure the bones' orientations are correct and everything is going to work in animation, just go into Pose Mode and rotate one bone, for example leg.L, and then click on the Copies the current pose of the selected bones to copy/paste buffer button (Ctrl + C), which is the first left one of the last three buttons to the right-hand side of the viewport toolbar; then, select the symmetrical bone, leg.R, and click on the last right button to paste the flipped pose (Ctrl + Shift + V); if the leg.R bone rotates correctly, then the orientation is OK:
- Now, go to the Object Data window under the main Properties panel and under Display, switch again the bones visualization from Octahedral to B-bone; select the bones and by pressing Ctrl + Alt + S, scale the B-bones smaller or bigger, depending on the visual effect you want to obtain:
- Press Ctrl + Tab to pass directly from Edit Mode to Pose Mode and select the forearm.L bone; in the Deform subpanel under the Properties panel, set the Segments for the Curved Bones to 12, and then set the Ease In and Ease Out values to 0.000.
- Repeat this for the forearm.R bone and also for the calf.L and calf.R bones; repeat also for the arm.L, arm.R, leg.L, and leg.R bones.
In the following screenshot, all the eight B-bones have been selected to make them more visible. By the way, the highlighted leg.R bone is the active one and shows the Curved Bones setting in the highlighted Deform subpanel to the right-hand side of the screen.
- Select the toe_inn_02.L bone and in the Deform subpanel under the Properties panel, set the Segments to 6 and leave the Ease In and Ease Out values to 1.000.
- Repeat this for the toe_ext_02.L bone; then, do the same also to the toe_inn_02.R and toe_ext_02.R bones.
- Select the toe_inn_01.L bone and set the Segments to 3; leave the Ease In and Ease Out values to 1.000.
- Repeat for the toe_ext_01.L bone; then, do the same also to the toe_inn_01.R and toe_ext_01.R bones:
- Save the file.
How it works…
Although it's often a really time consuming task, the handmade rigging is quite self-explicative; it is, however, better to explain some of the concepts behind this.
The proper renaming of the bones is important, considering that each deforming bone will affect a vertex group sharing the same name on the mesh; although in some cases, as for the tongue bones, the bone naming process can be automated in some way, usually it is better to spend time in giving meaningful names to each bone, in order to avoid mistakes in the following skinning process.
It's also very important to build the hierarchy of the bones so that a bone at a higher level can lead all of the children bones, as it would be in a real skeleton (that is, for example, the hand bone leads all the fingers bones, the forearm bone leads the hand bone, and so on).
Parenting a bone and then obtaining the others by extruding and/or duplicating simplifies the work because an extruded bone is automatically parented to the bone it has been extruded from, and a duplicated bone obviously inherits the parenting of the original one; in the case of the tongue.001 bone, extruding the others has given us a chain with bones automatically parented and named as tongue.002, tongue.003, tongue.004, and tongue.005.
B-bones are both a visualization mode for the bones and a way of working; B-bones, in fact, can work inside a chain as splines, which means that the bones are curved according to the number of Segments and the values of the Ease In and Ease Out items. For the bones of the arms and legs, we have set the Ease In and Ease Out values to 0.000 (default is 1.000; maximum is 2.000), in order to have the B-bones rotating only on their y axis but remaining straight along their length, and hence, mimic the twisting by not only the rotation (pronation and supination of the lower arm) of both the Ulna-Radius and Tibia-Fibula articulation complexes, but also the (limited) rotation of Femur and Humerus.
In some way, B-bones can work as a kind of simulation for a very basic muscle system; in the following screenshot, you can see their effect on the skinned mesh for the forearm by rotating the hand.L bone on the local y axis (to enhance the visibility of the mesh surface's modifications, the wireframe over solid drawing item has been enabled in the Display subpanel under the Object window):
Here is the effect of the rotation of the forearm.L bone on the Gidiosaurus high arm:
The effect acts on the shin as well, by rotating the foot.L bone on the global z axis:
Also, the same effect acts on the thigh by rotating the calf.L bone:
Note that the Gidiosaurus is a digitigrade biped humanoid: the bones that, from our plantigrade point of view, look like the foot are actually the toes, while the almost vertical structure that we would call an ankle is the real foot (this is a very common condition among the majority of the terrestrial animals, both still alive and extinct).
Building the rig for the secondary parts
Now that we have completed the main body rigging system, it's time to build the rig for eyes, eyelids, and tongue:
- Get out of Edit Mode and select the Eyes item in the Outliner; press the dot (.) key on the numpad to center the view on the selected object, the Z key to go in Wireframe viewport shading mode, and Tab to go into Edit Mode.
- Press the A key to select all the eye vertices and then box-deselect (the B key and the middle mouse button) the vertices of the right eye; use Shift + S to call the Snap pop-up menu and select the Cursor to Selected item to place the 3D Cursor at the center of the left eye mesh:
- Get out of Edit Mode, press the 3 key on the numpad to go in the Side view and reselect the Armature item in the Outliner; press Tab to go into Edit Mode, and then use Shift + A to add a new bone at the cursor position. Press G to grab the already selected Head of the new bone and move it close to the center of the eye to resize it smaller.
- Get out of Edit Mode and select the Eyes item; enter Edit Mode and deselect all the vertices except for the external last iris edge-loop. Then, press Shift + S | Cursor to Selected and get out of Edit Mode.
- Again, select the Armature, go into Edit Mode, be sure that the Head of the new bone is still selected, and press Shift + S | Selection to Cursor:
- Rename the new bone as eye.L and in the Relations subpanel under the Bone window, parent it to the head bone (not Connected), or use Shift to select the eye.L and head bones and press Ctrl + P | Keep Offset.
- Now, select the Tail of the eye.L bone and press Shift + S | Cursor to Selected to put the 3D Cursor on it, and then press the period (.) key to switch the Pivot Point around the 3D Cursor; select the whole eye.L bone and use Shift + D to duplicate it, and soon after, click with the right mouse button to leave the duplicated bone untouched; rotate it 10 degrees clockwise on the cursor position (Shift + D | right-click | R | X | 10 | Enter).
- Rename the new bone as eyelid_upper.L.
- Reselect the whole eye.L bone and repeat the duplication procedure; rotate the new duplicate 10 degrees counterclockwise (Shift + D | right-click | R | X | -10 | Enter).
- Rename the new bone as eyelid_bottom.L (in the following screenshot, all the three new bones—eyelid_upper.L, eye.L, and eyelid_bottom.L—have been selected just to enhance their visibility):
- Now, duplicate the head bone, resize it smaller, and move it to the joining of the tongue with the inner mouth; rename it from head.001 to tongue.001 and in the Relations subpanel, change its parenting from neck to mand.
- Select the Head of the tongue.001 bone and press the E key to extrude 4 new bones:
- Rename them accordingly, and then use Shift to select from the tongue.001 to tongue.005 bones and press Ctrl + R; move the mouse pointer horizontally to roll them on their y axis by 180° (hold Ctrl to constrain the rolling to intervals of 5 degrees; alternatively, the roll value can also be set by typing it in the Roll button in the Transform subpanel under the 3D viewport Properties sidepanel).
Completing the rig
At this point, the basic rig building process is almost done, even if it is only for the left-half part of the mesh:
- Get out of Edit Mode and press Shift + S | Cursor to Selected to place the 3D Cursor at the median pivot point of the Armature.
- Go back into Edit Mode, select only the left-half part bones and not the median ones (meaning: leave the hips, spine, neck, head, mouth, and tongue bones unselected), press Shift + D to duplicate them, and then right-click with the mouse button; press Ctrl + M, then the X key to mirror the duplicated bones on the x axis, in order to build the missing right-half part of the rig:
- With the duplicated bones still selected, go to the 3D window toolbar and click on the Armature item; in the pop-up menu, select the Flip Names item to automatically rename them with the correct .R suffix:
As a very last thing for this recipe, we must verify that the alignment of the bones, especially the last duplicated ones, is correct and, just in case, recalculate the roll rotation, that is, the rotation around the y axis of the bone itself.
- In the Object Data window, under the Display subpanel, check the Axes item to make the bones orientation axes visible (only in Edit Mode and Pose Mode) in the 3D view.
- Select all the bones and press Ctrl + N to recalculate the rolling of all of them; in the Recalculate Roll pop-up menu, there are several different options: because basically the z axis of the bones must match from the left to the right side of the whole rig, with the Armature (and the mesh) oriented along the y global axis, as in our Gidiosaurus case, the first top item, Local X Tangent, can be a good start.
By the way, it is good practice to not trust this automated procedure alone, because sometimes it can give inconsistent results; so, do the following:
- After the recalculation, check that the axes of each bone are actually correctly orientated in a consistent way; effectively, there are some bones that didn't get consistently oriented, meaning that their x and z local axes are oriented differently from the other bones.
- In this case, select the incorrectly oriented bone, press Ctrl + R, and move the mouse to change the rolling; press the Ctrl key to constrain the rolling to intervals of 5 degrees. Alternatively, select the wrong bones, and then use Shift to select one bone that is correctly oriented and press Ctrl + N | Active Bone to copy the rolling from the last selected bone.
By enabling the X-Axis Mirror item in the Armature Options tab under the Tool Shelf, you can recalculate only the bones of one side; the other side bones will follow automatically.
If you want to make sure the bones' orientations are correct and everything is going to work in animation, just go into Pose Mode and rotate one bone, for example leg.L, and then click on the Copies the current pose of the selected bones to copy/paste buffer button (Ctrl + C), which is the first left one of the last three buttons to the right-hand side of the viewport toolbar; then, select the symmetrical bone, leg.R, and click on the last right button to paste the flipped pose (Ctrl + Shift + V); if the leg.R bone rotates correctly, then the orientation is OK:
- Now, go to the Object Data window under the main Properties panel and under Display, switch again the bones visualization from Octahedral to B-bone; select the bones and by pressing Ctrl + Alt + S, scale the B-bones smaller or bigger, depending on the visual effect you want to obtain:
- Press Ctrl + Tab to pass directly from Edit Mode to Pose Mode and select the forearm.L bone; in the Deform subpanel under the Properties panel, set the Segments for the Curved Bones to 12, and then set the Ease In and Ease Out values to 0.000.
- Repeat this for the forearm.R bone and also for the calf.L and calf.R bones; repeat also for the arm.L, arm.R, leg.L, and leg.R bones.
In the following screenshot, all the eight B-bones have been selected to make them more visible. By the way, the highlighted leg.R bone is the active one and shows the Curved Bones setting in the highlighted Deform subpanel to the right-hand side of the screen.
- Select the toe_inn_02.L bone and in the Deform subpanel under the Properties panel, set the Segments to 6 and leave the Ease In and Ease Out values to 1.000.
- Repeat this for the toe_ext_02.L bone; then, do the same also to the toe_inn_02.R and toe_ext_02.R bones.
- Select the toe_inn_01.L bone and set the Segments to 3; leave the Ease In and Ease Out values to 1.000.
- Repeat for the toe_ext_01.L bone; then, do the same also to the toe_inn_01.R and toe_ext_01.R bones:
- Save the file.
Although it's often a really time consuming task, the handmade rigging is quite self-explicative; it is, however, better to explain some of the concepts behind this.
The proper renaming of the bones is important, considering that each deforming bone will affect a vertex group sharing the same name on the mesh; although in some cases, as for the tongue bones, the bone naming process can be automated in some way, usually it is better to spend time in giving meaningful names to each bone, in order to avoid mistakes in the following skinning process.
It's also very important to build the hierarchy of the bones so that a bone at a higher level can lead all of the children bones, as it would be in a real skeleton (that is, for example, the hand bone leads all the fingers bones, the forearm bone leads the hand bone, and so on).
Parenting a bone and then obtaining the others by extruding and/or duplicating simplifies the work because an extruded bone is automatically parented to the bone it has been extruded from, and a duplicated bone obviously inherits the parenting of the original one; in the case of the tongue.001 bone, extruding the others has given us a chain with bones automatically parented and named as tongue.002, tongue.003, tongue.004, and tongue.005.
B-bones are both a visualization mode for the bones and a way of working; B-bones, in fact, can work inside a chain as splines, which means that the bones are curved according to the number of Segments and the values of the Ease In and Ease Out items. For the bones of the arms and legs, we have set the Ease In and Ease Out values to 0.000 (default is 1.000; maximum is 2.000), in order to have the B-bones rotating only on their y axis but remaining straight along their length, and hence, mimic the twisting by not only the rotation (pronation and supination of the lower arm) of both the Ulna-Radius and Tibia-Fibula articulation complexes, but also the (limited) rotation of Femur and Humerus.
In some way, B-bones can work as a kind of simulation for a very basic muscle system; in the following screenshot, you can see their effect on the skinned mesh for the forearm by rotating the hand.L bone on the local y axis (to enhance the visibility of the mesh surface's modifications, the wireframe over solid drawing item has been enabled in the Display subpanel under the Object window):
Here is the effect of the rotation of the forearm.L bone on the Gidiosaurus high arm:
The effect acts on the shin as well, by rotating the foot.L bone on the global z axis:
Also, the same effect acts on the thigh by rotating the calf.L bone:
Note that the Gidiosaurus is a digitigrade biped humanoid: the bones that, from our plantigrade point of view, look like the foot are actually the toes, while the almost vertical structure that we would call an ankle is the real foot (this is a very common condition among the majority of the terrestrial animals, both still alive and extinct).
Completing the rig
At this point, the basic rig building process is almost done, even if it is only for the left-half part of the mesh:
- Get out of Edit Mode and press Shift + S | Cursor to Selected to place the 3D Cursor at the median pivot point of the Armature.
- Go back into Edit Mode, select only the left-half part bones and not the median ones (meaning: leave the hips, spine, neck, head, mouth, and tongue bones unselected), press Shift + D to duplicate them, and then right-click with the mouse button; press Ctrl + M, then the X key to mirror the duplicated bones on the x axis, in order to build the missing right-half part of the rig:
- With the duplicated bones still selected, go to the 3D window toolbar and click on the Armature item; in the pop-up menu, select the Flip Names item to automatically rename them with the correct .R suffix:
As a very last thing for this recipe, we must verify that the alignment of the bones, especially the last duplicated ones, is correct and, just in case, recalculate the roll rotation, that is, the rotation around the y axis of the bone itself.
- In the Object Data window, under the Display subpanel, check the Axes item to make the bones orientation axes visible (only in Edit Mode and Pose Mode) in the 3D view.
- Select all the bones and press Ctrl + N to recalculate the rolling of all of them; in the Recalculate Roll pop-up menu, there are several different options: because basically the z axis of the bones must match from the left to the right side of the whole rig, with the Armature (and the mesh) oriented along the y global axis, as in our Gidiosaurus case, the first top item, Local X Tangent, can be a good start.
By the way, it is good practice to not trust this automated procedure alone, because sometimes it can give inconsistent results; so, do the following:
- After the recalculation, check that the axes of each bone are actually correctly orientated in a consistent way; effectively, there are some bones that didn't get consistently oriented, meaning that their x and z local axes are oriented differently from the other bones.
- In this case, select the incorrectly oriented bone, press Ctrl + R, and move the mouse to change the rolling; press the Ctrl key to constrain the rolling to intervals of 5 degrees. Alternatively, select the wrong bones, and then use Shift to select one bone that is correctly oriented and press Ctrl + N | Active Bone to copy the rolling from the last selected bone.
By enabling the X-Axis Mirror item in the Armature Options tab under the Tool Shelf, you can recalculate only the bones of one side; the other side bones will follow automatically.
If you want to make sure the bones' orientations are correct and everything is going to work in animation, just go into Pose Mode and rotate one bone, for example leg.L, and then click on the Copies the current pose of the selected bones to copy/paste buffer button (Ctrl + C), which is the first left one of the last three buttons to the right-hand side of the viewport toolbar; then, select the symmetrical bone, leg.R, and click on the last right button to paste the flipped pose (Ctrl + Shift + V); if the leg.R bone rotates correctly, then the orientation is OK:
- Now, go to the Object Data window under the main Properties panel and under Display, switch again the bones visualization from Octahedral to B-bone; select the bones and by pressing Ctrl + Alt + S, scale the B-bones smaller or bigger, depending on the visual effect you want to obtain:
- Press Ctrl + Tab to pass directly from Edit Mode to Pose Mode and select the forearm.L bone; in the Deform subpanel under the Properties panel, set the Segments for the Curved Bones to 12, and then set the Ease In and Ease Out values to 0.000.
- Repeat this for the forearm.R bone and also for the calf.L and calf.R bones; repeat also for the arm.L, arm.R, leg.L, and leg.R bones.
In the following screenshot, all the eight B-bones have been selected to make them more visible. By the way, the highlighted leg.R bone is the active one and shows the Curved Bones setting in the highlighted Deform subpanel to the right-hand side of the screen.
- Select the toe_inn_02.L bone and in the Deform subpanel under the Properties panel, set the Segments to 6 and leave the Ease In and Ease Out values to 1.000.
- Repeat this for the toe_ext_02.L bone; then, do the same also to the toe_inn_02.R and toe_ext_02.R bones.
- Select the toe_inn_01.L bone and set the Segments to 3; leave the Ease In and Ease Out values to 1.000.
- Repeat for the toe_ext_01.L bone; then, do the same also to the toe_inn_01.R and toe_ext_01.R bones:
- Save the file.
Although it's often a really time consuming task, the handmade rigging is quite self-explicative; it is, however, better to explain some of the concepts behind this.
The proper renaming of the bones is important, considering that each deforming bone will affect a vertex group sharing the same name on the mesh; although in some cases, as for the tongue bones, the bone naming process can be automated in some way, usually it is better to spend time in giving meaningful names to each bone, in order to avoid mistakes in the following skinning process.
It's also very important to build the hierarchy of the bones so that a bone at a higher level can lead all of the children bones, as it would be in a real skeleton (that is, for example, the hand bone leads all the fingers bones, the forearm bone leads the hand bone, and so on).
Parenting a bone and then obtaining the others by extruding and/or duplicating simplifies the work because an extruded bone is automatically parented to the bone it has been extruded from, and a duplicated bone obviously inherits the parenting of the original one; in the case of the tongue.001 bone, extruding the others has given us a chain with bones automatically parented and named as tongue.002, tongue.003, tongue.004, and tongue.005.
B-bones are both a visualization mode for the bones and a way of working; B-bones, in fact, can work inside a chain as splines, which means that the bones are curved according to the number of Segments and the values of the Ease In and Ease Out items. For the bones of the arms and legs, we have set the Ease In and Ease Out values to 0.000 (default is 1.000; maximum is 2.000), in order to have the B-bones rotating only on their y axis but remaining straight along their length, and hence, mimic the twisting by not only the rotation (pronation and supination of the lower arm) of both the Ulna-Radius and Tibia-Fibula articulation complexes, but also the (limited) rotation of Femur and Humerus.
In some way, B-bones can work as a kind of simulation for a very basic muscle system; in the following screenshot, you can see their effect on the skinned mesh for the forearm by rotating the hand.L bone on the local y axis (to enhance the visibility of the mesh surface's modifications, the wireframe over solid drawing item has been enabled in the Display subpanel under the Object window):
Here is the effect of the rotation of the forearm.L bone on the Gidiosaurus high arm:
The effect acts on the shin as well, by rotating the foot.L bone on the global z axis:
Also, the same effect acts on the thigh by rotating the calf.L bone:
Note that the Gidiosaurus is a digitigrade biped humanoid: the bones that, from our plantigrade point of view, look like the foot are actually the toes, while the almost vertical structure that we would call an ankle is the real foot (this is a very common condition among the majority of the terrestrial animals, both still alive and extinct).
How it works…
Although it's often a really time consuming task, the handmade rigging is quite self-explicative; it is, however, better to explain some of the concepts behind this.
The proper renaming of the bones is important, considering that each deforming bone will affect a vertex group sharing the same name on the mesh; although in some cases, as for the tongue bones, the bone naming process can be automated in some way, usually it is better to spend time in giving meaningful names to each bone, in order to avoid mistakes in the following skinning process.
It's also very important to build the hierarchy of the bones so that a bone at a higher level can lead all of the children bones, as it would be in a real skeleton (that is, for example, the hand bone leads all the fingers bones, the forearm bone leads the hand bone, and so on).
Parenting a bone and then obtaining the others by extruding and/or duplicating simplifies the work because an extruded bone is automatically parented to the bone it has been extruded from, and a duplicated bone obviously inherits the parenting of the original one; in the case of the tongue.001 bone, extruding the others has given us a chain with bones automatically parented and named as tongue.002, tongue.003, tongue.004, and tongue.005.
B-bones are both a visualization mode for the bones and a way of working; B-bones, in fact, can work inside a chain as splines, which means that the bones are curved according to the number of Segments and the values of the Ease In and Ease Out items. For the bones of the arms and legs, we have set the Ease In and Ease Out values to 0.000 (default is 1.000; maximum is 2.000), in order to have the B-bones rotating only on their y axis but remaining straight along their length, and hence, mimic the twisting by not only the rotation (pronation and supination of the lower arm) of both the Ulna-Radius and Tibia-Fibula articulation complexes, but also the (limited) rotation of Femur and Humerus.
In some way, B-bones can work as a kind of simulation for a very basic muscle system; in the following screenshot, you can see their effect on the skinned mesh for the forearm by rotating the hand.L bone on the local y axis (to enhance the visibility of the mesh surface's modifications, the wireframe over solid drawing item has been enabled in the Display subpanel under the Object window):
Here is the effect of the rotation of the forearm.L bone on the Gidiosaurus high arm:
The effect acts on the shin as well, by rotating the foot.L bone on the global z axis:
Also, the same effect acts on the thigh by rotating the calf.L bone:
Note that the Gidiosaurus is a digitigrade biped humanoid: the bones that, from our plantigrade point of view, look like the foot are actually the toes, while the almost vertical structure that we would call an ankle is the real foot (this is a very common condition among the majority of the terrestrial animals, both still alive and extinct).
Perfecting the Armature to also function as a rig for the Armor
So, in the previous recipe, we have built the body deforming Armature for the Gidiosaurus character.
However, the Gidiosaurus is an (almost) evolved and a civilized creature, and being also a warrior, it wears a metallic Armor; this armor will need to be later parented to the rig as well in order to be animated.
Some of the bones that we have already created will be perfect to skin the Armor object too, by assigning the right vertex group to the right mesh part (for example, the head vertex group for the Helm or the chest vertex group for the Breastplate). However, because the Armor is made also by different parts that cannot be simply driven by the already existing bones (for example, the belts, Vambraces, and especially Groinguard), some modification and/or addition to the rig must be done anyway.
Getting ready
Start from the previously saved Gidiosaurus_rig_from_scratch_01.blend
file:
- Enable the 13th scene layer to show the Armor object.
- Select it and go to the Object Modifiers window under the main Properties panel. Expand the Subdivision Surface modifier tab and click on the Display modifier in viewport button, the one with the eye icon, to disable it.
- Go to the Outliner and click on the arrow icon to the side of the Armor item to make it unselectable.
- Click on the arrow icon to the side of the Gidiosaurus_lowres item to make it unselectable as well.
- Save the file as
Gidiosaurus_rig_from_scratch_02.blend
.
How to do it…
Let's start by adding bones dedicated to the Armor:
- Go into Edit Mode and select the forearm.L bone; use Shift + D to duplicate it and rename it vanbrace.L. Press M and in the Change Bone Layers pop-up, click on the 2nd button to move the duplicated bone to that bone layer.
- Do the same for the forearm.R bone (vanbrace.R) and for the calf.L (greave.L) and calf.R bones (greave.R).
- Now, go to the Object Data window and click on the 2nd button under the Layers item in the Skeleton subpanel, in order to show only the four duplicated bones in the 3D viewport; press Tab to get out of Edit Mode.
- Select the vanbrace.L bone and go to the Bone window under the Deform subpanel; under the Curved Bones item, set back the Segments and Ease In and Ease Out values to default, that is, 1, 1.000 and 1.000.
- Go back into Edit Mode and click on the Connected item under the Relations subpanel.
- Get out of Edit Mode and go to the Bone Constraints window under the main Properties panel (not to be confused with the Object Constraints window); click on the Add Bone Constraint button and select a Copy Rotation constraint from the pop-up menu (the bone turns light green, in order to show that it has a constraint assigned now).
- In the Target field, select Armature; in the Bone field, select the forearm.L item; in the Space fields, select Pose Space for both.
Alternatively, for steps 6 and 7, select the forearm.L bone and then use Shift to select the vanbrace.L bone. Hence, press Shift + Ctrl + C to call the Add Constraint (with Targets) pop-up menu and select the Copy Rotation item. This will automatically add the Copy Rotation constraint to the vanbrace.L bone, with the first select bone (forearm.L) as a target; the other setting must be enabled and/or tweaked in the constraint subpanel instead.
- Click again on the Add Bone Constraint button and this time, select an Inverse Kinematics constraint (the bone turns yellow, in order to show that an IK solver has been assigned). In the Target field, select the Armature item, in the Bone field, select the hand.L bone, and set the Chain Length to 1; deselect Stretch and select Rotation, lowering the weight to the minimum (that is 0.010):
- Repeat the steps from 4 to 8 for the other three duplicated bones (obviously, setting the appropriate bones as targets for each pair of constraints; the target bone for the IK constraint assigned to the greave bones is the respective foot bone).
The rig can now drive the vambraces and greaves; let's see the knee guards and Groinguard.
- First, switch the Armature visualization back to Octahedral, then go into Edit Mode, select the hips bone and use Shift + D to duplicate it; in the Side view, rotate the duplicate 170 degrees, then move it on the Groinguard part of the armor, in order to have the Head of the bone placed to the joint of the plate with the ties; select the Tail of the groinguard bone and scale it smaller to fit the part.
- To position the bone more precisely, go to the Transform subpanel under the Properties 3D view sidepanel and set the following values for the Head (of the bone): X = 0.001, Y = 0.020, and Z = 1.147; for the Tail set the following values: X = 0.001, Y = 0.022, and Z = 0.873.
- Go to the Item subpanel and rename the bone from hips.001 to groinguard:
- Go to the Bone window in the main Properties panel, and under the Relations subpanel, click on the Parent empty slot to select the hips item.
- Now, select the joint of the leg.L bone with the calf.L bone and press Shift + S | Cursor to Selected; press Shift + A to add a new bone and rescale it smaller.
- Select the whole new bone and use Shift to select the calf.L bone. Then, go in the 3D view toolbar and click on the Armature item; go to Transform | Align Bones (or else, press the Ctrl + Alt + A keys) to align the new bone as the calf.L one.
- Enable the widget (Ctrl + spacebar), set the Transform Orientation to Normal, and the rotation pivot on the 3D Cursor. Then, rotate the new bone 110 degrees on the normal x axis (the red wheel of the widget, or else R | X | X | 110 | Enter):
- Go into Object Mode and press Shift + S | Cursor to Selected to place the 3D Cursor at the median pivot point of the Armature; go back into Edit Mode, press Shift + D to duplicate the new bone, then Ctrl + M | X to mirror it on the other side.
- Rename the new bones as kneeguard.L and kneeguard.R; enable the axis visibility and recalculate the roll by the Ctrl + N | Active Bone tool:
- Parent the kneeguard.L bone to the leg.L bone and the kneeguard.R bone to the leg.R one (not connected).
- Select the groinguard bone and use Shift + D to duplicate it, and then scale the duplicated bone a little bit bigger and rename it as groinguard_ctrl; uncheck the box of the Deform subpanel under the Bone window:
- Select the groinguard bone, go to the Relations subpanel, and click in the Parent field to select the groinguard_ctrl bone.
- Get out of Edit Mode and in Pose Mode, select the groinguard_ctrl bone.
- Go to the Bone Constraints window under the main Properties panel; click on the Add Bone Constraint button and select a Locked Track constraint from the pop-up menu.
- In the Target field, select the Armature item; in the Bone field, select the kneeguard.L item. Set the Head/Tail value to 0.500: To (Axis that points to the target object) = -X and Lock (Axis that points upward) = Y. In the Constraint Name field, rename it as Locked Track.L.
- Add a new Locked Track constraint and repeat everything as in the previous one, except in the Bone field, select the kneeguard.R item; rename it as Locked Track.R.
- Add a Damped Track constraint: Target = Armature, Bone = kneeguard.L, Head/Tail = 0.728, To = Y, and Influence = 0.263. Rename it as Damped Track.L.
- Add a new Damped Track constraint and repeat everything as in the previous one, except again in the Bone field, select the kneeguard.R item; rename it as Damped Track.R.
- Just to be sure, save the file!
- Go back into Edit Mode and in the Side view, select the chest bone and use Shift + D to duplicate it. Press W to call the Specials pop-up menu and select the Switch_Direction item, or else press Alt + F directly:
- Go to the Bone window and click on the Parent slot under the Relations subpanel to select the chest item (not connected); then, go to the Deform subpanel and set the Segments under Curved Bones to 1. Rename the new bone as armor_ctrl.
- Press Ctrl + R to roll the armor_ctrl bone, in order to be sure that its local x axis is pointing towards the front of the model; this is important to make the Transformation constraints, which we'll add later, work properly:
- Go in the Front view. Note that the X-Axis Mirror item in the Armature Options panel under the Tool Shelf is still enabled; select the Tail of the shoulder.L bone and extrude a new bone going towards the external edge of the armor spaulder. Then, select the extruded bone, press Alt + P | Clear Parent, and move its Head to be positioned above the joint of the spaulder with the chest plate.
- Rename the extruded bone and the corresponding mirrored one as spaulder.L and spaulder.R; parent them to the armor_ctrl bone (enable the Keep Offset item).
- Use Shift to select the spaulder.L and arm.L bones and press Ctrl + N | Active Bone; do the same with the spaulder.R and arm.R bones.
- Now, put the 3D Cursor at the spaulder.L bone's Head location, and then set the Pivot Point to the 3D Cursor in the 3D window toolbar. Use Shift + D to duplicate the spaulder.L bone and rotate the duplicate 70 degrees (in the Front view, R | 70 | Enter).
- Place the 3D Cursor at the shoulder.L bone's Tail location, select the duplicated bone, and press Shift + S | Selected to Cursor. Rename the duplicated bone and the mirrored one as rotarmor.L and rotarmor.R. Go to the Relations subpanel and set the rotarmor.L bone as the child of the arm.L bone and the rotarmor.R bone as the child of the arm.R bone. Disable the Deform item for both of them:
- Go into Pose Mode. Select the spaulder.L bone and in the Bone Constraints window, assign a Copy Rotation constraint: Target = Armature, Bone = arm.L, Space = Pose Space to Pose Space, and Influence = 0.200.
- Select the spaulder.R bone and repeat with the Bone = arm.R target.
- Now, select the armor_ctrl bone and assign a Transformation constraint. Set Target = Armature, Bone = rotarmor.L, Source = Rot, and Z Max = 20°; Source To Destination Mapping = switch X with Z; Destination = Rot, X Max = 4°, and Space = Pose Space to Pose Space. Rename the constraint as Transformation_rot.L and collapse the panel.
- Assign a second Transformation constraint; set everything as in the previous one, except for the target Bone = rotarmor.R, Source = Rot, Z Min = -20°, and Destination X Min = -4°. Rename the constraint as Transformation_rot.R and collapse it.
- Assign a third Transformation constraint; set everything as in the first one, except do not switch X with Z, set Destination = Loc and Z Max = 0.050. Rename the constraint as Transformation_move.L and collapse it.
- Assign a fourth Transformation constraint; set everything as in the second one, except do not switch X with Z; set Destination = Loc and Z Min = 0.050. Rename the constraint as Transformation_move.R and collapse it.
- Save the file.
How it works…
We couldn't directly use the forearm and calf bones to rig the vanbraces and greaves parts because being subdivided B-bones, they would curve these armor parts along the length as they actually do by deforming organic parts as the forearms and shins, and this would look awkward, as you can see in the following screenshot:
Instead, we just duplicated the bones, restored Segments and Ease In and Ease Out to default values, and assigned 2 bone constraints (note that, as already mentioned, the bones have a Bone Constraints panel of their own, which is different from the Object Constraints one).
The Copy Rotation constraint, as the name itself explains, copies the rotation in space of the target B-bone; the position inside the chain is granted because the duplicated bones, although not connected, are children of the same bones as the original ones.
The Inverse Kinematics constraint—in this case, is used simply to track the local y rotation of the hand bone in order to rotate correctly on its y axis— is necessary because the Copy Rotation constraint doesn't seem to read the local y rotation of a subdivided B-bone (besides the technical details, it makes sense because that's actually not a rotation in space):
The constraints assigned to the groinguard_ctrl bone are a cheap, but quite an effective, way to fake a rigid body simulation for the plate that—in actions, for example, a walk cycle—should interact by colliding with the Gidiosaurus thighs. The Locked Track constraints, targeted to the leg bones, automatically rotate the plate according to the thighs movements, and the Dumped Track constraints, targeted to the leg bones as well but with a low influence, add a swinging movement.
The groinguard bone, actually the one affecting the armor plate, is the child of the groinguard_ctrl bone, and so it inherits the constraint's movements but can be used to refine, tweak, or modify the final animation of the plate by hands:
The armor_ctrl bone is the bone controlling the armor's Breastplate; it's the child of the chest bone, so it inherits the rotation of the chest, but has four Transformation constraints.
By using as an input the rotation angle of the rotarmor.L and rotarmor.R bones (which are children themselves of the arm.L and arm.R bones), the constraints give to the Armor chest plate a slight rotation on the vertical axis and a lateral swinging, driven by the oscillations of the Gidiosaurus arms, and simulating of the character's shoulders colliding with the armor plate during the walk.
Also, the spaulders are, in turn, partially rotated by bones with the Copy Rotation constraints targeted to the arms, but with quite a low influence.
Although better appreciated in motion, the following screenshot will show you the effects as the arms rotate backward:
Getting ready
Start from the previously saved Gidiosaurus_rig_from_scratch_01.blend
file:
- Enable the 13th scene layer to show the Armor object.
- Select it and go to the Object Modifiers window under the main Properties panel. Expand the Subdivision Surface modifier tab and click on the Display modifier in viewport button, the one with the eye icon, to disable it.
- Go to the Outliner and click on the arrow icon to the side of the Armor item to make it unselectable.
- Click on the arrow icon to the side of the Gidiosaurus_lowres item to make it unselectable as well.
- Save the file as
Gidiosaurus_rig_from_scratch_02.blend
.
How to do it…
Let's start by adding bones dedicated to the Armor:
- Go into Edit Mode and select the forearm.L bone; use Shift + D to duplicate it and rename it vanbrace.L. Press M and in the Change Bone Layers pop-up, click on the 2nd button to move the duplicated bone to that bone layer.
- Do the same for the forearm.R bone (vanbrace.R) and for the calf.L (greave.L) and calf.R bones (greave.R).
- Now, go to the Object Data window and click on the 2nd button under the Layers item in the Skeleton subpanel, in order to show only the four duplicated bones in the 3D viewport; press Tab to get out of Edit Mode.
- Select the vanbrace.L bone and go to the Bone window under the Deform subpanel; under the Curved Bones item, set back the Segments and Ease In and Ease Out values to default, that is, 1, 1.000 and 1.000.
- Go back into Edit Mode and click on the Connected item under the Relations subpanel.
- Get out of Edit Mode and go to the Bone Constraints window under the main Properties panel (not to be confused with the Object Constraints window); click on the Add Bone Constraint button and select a Copy Rotation constraint from the pop-up menu (the bone turns light green, in order to show that it has a constraint assigned now).
- In the Target field, select Armature; in the Bone field, select the forearm.L item; in the Space fields, select Pose Space for both.
Alternatively, for steps 6 and 7, select the forearm.L bone and then use Shift to select the vanbrace.L bone. Hence, press Shift + Ctrl + C to call the Add Constraint (with Targets) pop-up menu and select the Copy Rotation item. This will automatically add the Copy Rotation constraint to the vanbrace.L bone, with the first select bone (forearm.L) as a target; the other setting must be enabled and/or tweaked in the constraint subpanel instead.
- Click again on the Add Bone Constraint button and this time, select an Inverse Kinematics constraint (the bone turns yellow, in order to show that an IK solver has been assigned). In the Target field, select the Armature item, in the Bone field, select the hand.L bone, and set the Chain Length to 1; deselect Stretch and select Rotation, lowering the weight to the minimum (that is 0.010):
- Repeat the steps from 4 to 8 for the other three duplicated bones (obviously, setting the appropriate bones as targets for each pair of constraints; the target bone for the IK constraint assigned to the greave bones is the respective foot bone).
The rig can now drive the vambraces and greaves; let's see the knee guards and Groinguard.
- First, switch the Armature visualization back to Octahedral, then go into Edit Mode, select the hips bone and use Shift + D to duplicate it; in the Side view, rotate the duplicate 170 degrees, then move it on the Groinguard part of the armor, in order to have the Head of the bone placed to the joint of the plate with the ties; select the Tail of the groinguard bone and scale it smaller to fit the part.
- To position the bone more precisely, go to the Transform subpanel under the Properties 3D view sidepanel and set the following values for the Head (of the bone): X = 0.001, Y = 0.020, and Z = 1.147; for the Tail set the following values: X = 0.001, Y = 0.022, and Z = 0.873.
- Go to the Item subpanel and rename the bone from hips.001 to groinguard:
- Go to the Bone window in the main Properties panel, and under the Relations subpanel, click on the Parent empty slot to select the hips item.
- Now, select the joint of the leg.L bone with the calf.L bone and press Shift + S | Cursor to Selected; press Shift + A to add a new bone and rescale it smaller.
- Select the whole new bone and use Shift to select the calf.L bone. Then, go in the 3D view toolbar and click on the Armature item; go to Transform | Align Bones (or else, press the Ctrl + Alt + A keys) to align the new bone as the calf.L one.
- Enable the widget (Ctrl + spacebar), set the Transform Orientation to Normal, and the rotation pivot on the 3D Cursor. Then, rotate the new bone 110 degrees on the normal x axis (the red wheel of the widget, or else R | X | X | 110 | Enter):
- Go into Object Mode and press Shift + S | Cursor to Selected to place the 3D Cursor at the median pivot point of the Armature; go back into Edit Mode, press Shift + D to duplicate the new bone, then Ctrl + M | X to mirror it on the other side.
- Rename the new bones as kneeguard.L and kneeguard.R; enable the axis visibility and recalculate the roll by the Ctrl + N | Active Bone tool:
- Parent the kneeguard.L bone to the leg.L bone and the kneeguard.R bone to the leg.R one (not connected).
- Select the groinguard bone and use Shift + D to duplicate it, and then scale the duplicated bone a little bit bigger and rename it as groinguard_ctrl; uncheck the box of the Deform subpanel under the Bone window:
- Select the groinguard bone, go to the Relations subpanel, and click in the Parent field to select the groinguard_ctrl bone.
- Get out of Edit Mode and in Pose Mode, select the groinguard_ctrl bone.
- Go to the Bone Constraints window under the main Properties panel; click on the Add Bone Constraint button and select a Locked Track constraint from the pop-up menu.
- In the Target field, select the Armature item; in the Bone field, select the kneeguard.L item. Set the Head/Tail value to 0.500: To (Axis that points to the target object) = -X and Lock (Axis that points upward) = Y. In the Constraint Name field, rename it as Locked Track.L.
- Add a new Locked Track constraint and repeat everything as in the previous one, except in the Bone field, select the kneeguard.R item; rename it as Locked Track.R.
- Add a Damped Track constraint: Target = Armature, Bone = kneeguard.L, Head/Tail = 0.728, To = Y, and Influence = 0.263. Rename it as Damped Track.L.
- Add a new Damped Track constraint and repeat everything as in the previous one, except again in the Bone field, select the kneeguard.R item; rename it as Damped Track.R.
- Just to be sure, save the file!
- Go back into Edit Mode and in the Side view, select the chest bone and use Shift + D to duplicate it. Press W to call the Specials pop-up menu and select the Switch_Direction item, or else press Alt + F directly:
- Go to the Bone window and click on the Parent slot under the Relations subpanel to select the chest item (not connected); then, go to the Deform subpanel and set the Segments under Curved Bones to 1. Rename the new bone as armor_ctrl.
- Press Ctrl + R to roll the armor_ctrl bone, in order to be sure that its local x axis is pointing towards the front of the model; this is important to make the Transformation constraints, which we'll add later, work properly:
- Go in the Front view. Note that the X-Axis Mirror item in the Armature Options panel under the Tool Shelf is still enabled; select the Tail of the shoulder.L bone and extrude a new bone going towards the external edge of the armor spaulder. Then, select the extruded bone, press Alt + P | Clear Parent, and move its Head to be positioned above the joint of the spaulder with the chest plate.
- Rename the extruded bone and the corresponding mirrored one as spaulder.L and spaulder.R; parent them to the armor_ctrl bone (enable the Keep Offset item).
- Use Shift to select the spaulder.L and arm.L bones and press Ctrl + N | Active Bone; do the same with the spaulder.R and arm.R bones.
- Now, put the 3D Cursor at the spaulder.L bone's Head location, and then set the Pivot Point to the 3D Cursor in the 3D window toolbar. Use Shift + D to duplicate the spaulder.L bone and rotate the duplicate 70 degrees (in the Front view, R | 70 | Enter).
- Place the 3D Cursor at the shoulder.L bone's Tail location, select the duplicated bone, and press Shift + S | Selected to Cursor. Rename the duplicated bone and the mirrored one as rotarmor.L and rotarmor.R. Go to the Relations subpanel and set the rotarmor.L bone as the child of the arm.L bone and the rotarmor.R bone as the child of the arm.R bone. Disable the Deform item for both of them:
- Go into Pose Mode. Select the spaulder.L bone and in the Bone Constraints window, assign a Copy Rotation constraint: Target = Armature, Bone = arm.L, Space = Pose Space to Pose Space, and Influence = 0.200.
- Select the spaulder.R bone and repeat with the Bone = arm.R target.
- Now, select the armor_ctrl bone and assign a Transformation constraint. Set Target = Armature, Bone = rotarmor.L, Source = Rot, and Z Max = 20°; Source To Destination Mapping = switch X with Z; Destination = Rot, X Max = 4°, and Space = Pose Space to Pose Space. Rename the constraint as Transformation_rot.L and collapse the panel.
- Assign a second Transformation constraint; set everything as in the previous one, except for the target Bone = rotarmor.R, Source = Rot, Z Min = -20°, and Destination X Min = -4°. Rename the constraint as Transformation_rot.R and collapse it.
- Assign a third Transformation constraint; set everything as in the first one, except do not switch X with Z, set Destination = Loc and Z Max = 0.050. Rename the constraint as Transformation_move.L and collapse it.
- Assign a fourth Transformation constraint; set everything as in the second one, except do not switch X with Z; set Destination = Loc and Z Min = 0.050. Rename the constraint as Transformation_move.R and collapse it.
- Save the file.
How it works…
We couldn't directly use the forearm and calf bones to rig the vanbraces and greaves parts because being subdivided B-bones, they would curve these armor parts along the length as they actually do by deforming organic parts as the forearms and shins, and this would look awkward, as you can see in the following screenshot:
Instead, we just duplicated the bones, restored Segments and Ease In and Ease Out to default values, and assigned 2 bone constraints (note that, as already mentioned, the bones have a Bone Constraints panel of their own, which is different from the Object Constraints one).
The Copy Rotation constraint, as the name itself explains, copies the rotation in space of the target B-bone; the position inside the chain is granted because the duplicated bones, although not connected, are children of the same bones as the original ones.
The Inverse Kinematics constraint—in this case, is used simply to track the local y rotation of the hand bone in order to rotate correctly on its y axis— is necessary because the Copy Rotation constraint doesn't seem to read the local y rotation of a subdivided B-bone (besides the technical details, it makes sense because that's actually not a rotation in space):
The constraints assigned to the groinguard_ctrl bone are a cheap, but quite an effective, way to fake a rigid body simulation for the plate that—in actions, for example, a walk cycle—should interact by colliding with the Gidiosaurus thighs. The Locked Track constraints, targeted to the leg bones, automatically rotate the plate according to the thighs movements, and the Dumped Track constraints, targeted to the leg bones as well but with a low influence, add a swinging movement.
The groinguard bone, actually the one affecting the armor plate, is the child of the groinguard_ctrl bone, and so it inherits the constraint's movements but can be used to refine, tweak, or modify the final animation of the plate by hands:
The armor_ctrl bone is the bone controlling the armor's Breastplate; it's the child of the chest bone, so it inherits the rotation of the chest, but has four Transformation constraints.
By using as an input the rotation angle of the rotarmor.L and rotarmor.R bones (which are children themselves of the arm.L and arm.R bones), the constraints give to the Armor chest plate a slight rotation on the vertical axis and a lateral swinging, driven by the oscillations of the Gidiosaurus arms, and simulating of the character's shoulders colliding with the armor plate during the walk.
Also, the spaulders are, in turn, partially rotated by bones with the Copy Rotation constraints targeted to the arms, but with quite a low influence.
Although better appreciated in motion, the following screenshot will show you the effects as the arms rotate backward:
How to do it…
Let's start by adding bones dedicated to the Armor:
- Go into Edit Mode and select the forearm.L bone; use Shift + D to duplicate it and rename it vanbrace.L. Press M and in the Change Bone Layers pop-up, click on the 2nd button to move the duplicated bone to that bone layer.
- Do the same for the forearm.R bone (vanbrace.R) and for the calf.L (greave.L) and calf.R bones (greave.R).
- Now, go to the Object Data window and click on the 2nd button under the Layers item in the Skeleton subpanel, in order to show only the four duplicated bones in the 3D viewport; press Tab to get out of Edit Mode.
- Select the vanbrace.L bone and go to the Bone window under the Deform subpanel; under the Curved Bones item, set back the Segments and Ease In and Ease Out values to default, that is, 1, 1.000 and 1.000.
- Go back into Edit Mode and click on the Connected item under the Relations subpanel.
- Get out of Edit Mode and go to the Bone Constraints window under the main Properties panel (not to be confused with the Object Constraints window); click on the Add Bone Constraint button and select a Copy Rotation constraint from the pop-up menu (the bone turns light green, in order to show that it has a constraint assigned now).
- In the Target field, select Armature; in the Bone field, select the forearm.L item; in the Space fields, select Pose Space for both.
Alternatively, for steps 6 and 7, select the forearm.L bone and then use Shift to select the vanbrace.L bone. Hence, press Shift + Ctrl + C to call the Add Constraint (with Targets) pop-up menu and select the Copy Rotation item. This will automatically add the Copy Rotation constraint to the vanbrace.L bone, with the first select bone (forearm.L) as a target; the other setting must be enabled and/or tweaked in the constraint subpanel instead.
- Click again on the Add Bone Constraint button and this time, select an Inverse Kinematics constraint (the bone turns yellow, in order to show that an IK solver has been assigned). In the Target field, select the Armature item, in the Bone field, select the hand.L bone, and set the Chain Length to 1; deselect Stretch and select Rotation, lowering the weight to the minimum (that is 0.010):
- Repeat the steps from 4 to 8 for the other three duplicated bones (obviously, setting the appropriate bones as targets for each pair of constraints; the target bone for the IK constraint assigned to the greave bones is the respective foot bone).
The rig can now drive the vambraces and greaves; let's see the knee guards and Groinguard.
- First, switch the Armature visualization back to Octahedral, then go into Edit Mode, select the hips bone and use Shift + D to duplicate it; in the Side view, rotate the duplicate 170 degrees, then move it on the Groinguard part of the armor, in order to have the Head of the bone placed to the joint of the plate with the ties; select the Tail of the groinguard bone and scale it smaller to fit the part.
- To position the bone more precisely, go to the Transform subpanel under the Properties 3D view sidepanel and set the following values for the Head (of the bone): X = 0.001, Y = 0.020, and Z = 1.147; for the Tail set the following values: X = 0.001, Y = 0.022, and Z = 0.873.
- Go to the Item subpanel and rename the bone from hips.001 to groinguard:
- Go to the Bone window in the main Properties panel, and under the Relations subpanel, click on the Parent empty slot to select the hips item.
- Now, select the joint of the leg.L bone with the calf.L bone and press Shift + S | Cursor to Selected; press Shift + A to add a new bone and rescale it smaller.
- Select the whole new bone and use Shift to select the calf.L bone. Then, go in the 3D view toolbar and click on the Armature item; go to Transform | Align Bones (or else, press the Ctrl + Alt + A keys) to align the new bone as the calf.L one.
- Enable the widget (Ctrl + spacebar), set the Transform Orientation to Normal, and the rotation pivot on the 3D Cursor. Then, rotate the new bone 110 degrees on the normal x axis (the red wheel of the widget, or else R | X | X | 110 | Enter):
- Go into Object Mode and press Shift + S | Cursor to Selected to place the 3D Cursor at the median pivot point of the Armature; go back into Edit Mode, press Shift + D to duplicate the new bone, then Ctrl + M | X to mirror it on the other side.
- Rename the new bones as kneeguard.L and kneeguard.R; enable the axis visibility and recalculate the roll by the Ctrl + N | Active Bone tool:
- Parent the kneeguard.L bone to the leg.L bone and the kneeguard.R bone to the leg.R one (not connected).
- Select the groinguard bone and use Shift + D to duplicate it, and then scale the duplicated bone a little bit bigger and rename it as groinguard_ctrl; uncheck the box of the Deform subpanel under the Bone window:
- Select the groinguard bone, go to the Relations subpanel, and click in the Parent field to select the groinguard_ctrl bone.
- Get out of Edit Mode and in Pose Mode, select the groinguard_ctrl bone.
- Go to the Bone Constraints window under the main Properties panel; click on the Add Bone Constraint button and select a Locked Track constraint from the pop-up menu.
- In the Target field, select the Armature item; in the Bone field, select the kneeguard.L item. Set the Head/Tail value to 0.500: To (Axis that points to the target object) = -X and Lock (Axis that points upward) = Y. In the Constraint Name field, rename it as Locked Track.L.
- Add a new Locked Track constraint and repeat everything as in the previous one, except in the Bone field, select the kneeguard.R item; rename it as Locked Track.R.
- Add a Damped Track constraint: Target = Armature, Bone = kneeguard.L, Head/Tail = 0.728, To = Y, and Influence = 0.263. Rename it as Damped Track.L.
- Add a new Damped Track constraint and repeat everything as in the previous one, except again in the Bone field, select the kneeguard.R item; rename it as Damped Track.R.
- Just to be sure, save the file!
- Go back into Edit Mode and in the Side view, select the chest bone and use Shift + D to duplicate it. Press W to call the Specials pop-up menu and select the Switch_Direction item, or else press Alt + F directly:
- Go to the Bone window and click on the Parent slot under the Relations subpanel to select the chest item (not connected); then, go to the Deform subpanel and set the Segments under Curved Bones to 1. Rename the new bone as armor_ctrl.
- Press Ctrl + R to roll the armor_ctrl bone, in order to be sure that its local x axis is pointing towards the front of the model; this is important to make the Transformation constraints, which we'll add later, work properly:
- Go in the Front view. Note that the X-Axis Mirror item in the Armature Options panel under the Tool Shelf is still enabled; select the Tail of the shoulder.L bone and extrude a new bone going towards the external edge of the armor spaulder. Then, select the extruded bone, press Alt + P | Clear Parent, and move its Head to be positioned above the joint of the spaulder with the chest plate.
- Rename the extruded bone and the corresponding mirrored one as spaulder.L and spaulder.R; parent them to the armor_ctrl bone (enable the Keep Offset item).
- Use Shift to select the spaulder.L and arm.L bones and press Ctrl + N | Active Bone; do the same with the spaulder.R and arm.R bones.
- Now, put the 3D Cursor at the spaulder.L bone's Head location, and then set the Pivot Point to the 3D Cursor in the 3D window toolbar. Use Shift + D to duplicate the spaulder.L bone and rotate the duplicate 70 degrees (in the Front view, R | 70 | Enter).
- Place the 3D Cursor at the shoulder.L bone's Tail location, select the duplicated bone, and press Shift + S | Selected to Cursor. Rename the duplicated bone and the mirrored one as rotarmor.L and rotarmor.R. Go to the Relations subpanel and set the rotarmor.L bone as the child of the arm.L bone and the rotarmor.R bone as the child of the arm.R bone. Disable the Deform item for both of them:
- Go into Pose Mode. Select the spaulder