Our thanks to Jahirul Amin for this tutorial. For more of his excellent work, head to www.jahirulamin.com.
This tutorial first appeared in issue 80 of 3D Artist.
When creating a sculpt, building it up in a generic T-pose usually simplifies the sculpting process, and among many things helps to ensure that all the limbs are in proportion. However, this also makes for a stiff-looking character.
In this tutorial, we’ll look at how you can go about adding a bit more life to a sculpt whilst still being able to go back to the default T-pose, as that is how you would want to pass the model should it need retopologising and rigging for animation.
Now there are many ways to pose a sculpt. For example, in Mudbox you can add joints and use falloffs; in ZBrush you can use Transpose or a ZSphere rig.
The preferred method here, however, is to take the lowest resolution of the sculpt into a 3D package – in this case into Maya – and take advantage of the rigging tools.
Although the set-up time for creating the initial skeleton and then binding the mesh to the skeleton may be slightly longer, once complete, you can create a wider range of poses more quickly than if you were using the default posing tools in Mudbox or ZBrush.
Hopefully by the end of this tutorial, you will have another workflow that you can add to your arsenal of tools.
Step 01 – Export the sculpt
The first thing we need to do is send the sculpt to Maya. In Mudbox take the resolution of the sculpt and the costume down to its lowest level. Next, in the Object List, select the sculpt and the costume meshes, and go to File>Export Selection, and save this as an FBX file. Now jump to Maya, go to File>Import, and load the FBX file. If you cannot import an FBX file into Maya, it’s probably because the plugin is not loaded. If that is the case, go to Windows>Settings/Preferences>Plug-in Manager and enable fbxmaya.mll. Jump into the Outliner next and make sure everything is named accordingly, select all the geometry, group it together (Cmd/Ctrl+G), and rename it to “orc_geo_grp”.
Step 02 – Create a joint chain for the spine, neck and head
Now that we have the sculpt in Maya, let’s create the skeleton for the spine, neck and head. Press F2 to switch the toolset to Animation, and then make sure you are working in the Side view. Now go to Animation>Joint Tool, and using the LMB, make a series of clicks from the root of the character (slightly below the belly button) upwards to the top of the head. Click Enter to come out of the tool. If you make a mistake whilst in the tool, use the Backspace on the keyboard to remove the last joint and then the LMB to continue the joint chain. For our joint chain, we’ve created four joints for the spine, two for the neck, one for the head and then a joint at the top of the head (purely for aesthetic reasons). Now if you need to reposition the joints, you can rotate them and use only the Translate X attribute of each joint (which refers to its length). Once you are happy with the joints, select the root joint of the chain and go to Modify>Freeze Transformations. Make sure all joints have 0 values for their rotations, and then go through and name the joints accordingly. Our joint chain is labelled like so from root to tip: “spine1_jnt”, “spine2_jnt”, “spine3_jnt”, “spine4_jnt”, “neck1_jnt”, “neck2_jnt”, “head_jnt” and “headEnd_jnt”.
Step 03 – Arm and finger joints
In the Front view now, create a six-joint chain. Make the first click at the clavicle, following that the shoulder, then the root of the humerus, the elbow, the wrist, and finally at the end of the palm. Again, use just the rotation attributes and Translate X to get the joints into the correct position. Once in place, remember to go to Modify>Freeze Transformations to zero out the rotation values. For the fingers, create the joint chains from the Top view. For each finger, we created a five-joint chain. The first joint was at the origin of each metacarpal, then we created a joint for each of the phalanges, and finally a joint at the tip of the finger. Once you have all your joints in place, select the root joint for each finger and parent them under the wrist joint. Make sure to then go in and rename the joints. As this is for the left arm, also add a prefix of l_ to all the joints.
Step 04 – Create the root and hip joint
Let’s create the root joint next. This joint will carry the entire rig. For the root joint, jump into the Side view and create a single, isolated joint. Create this away from the rest of the rig so it does not attach itself to the current skeleton. Next, hold down the V key and point snap it to the same position as the root of the spine chain. Rename this joint “root_jnt”. Now for the hip: still in the Side view, create a two-joint chain, and then rename the joint chain from root to tip: “hip_jnt” and “hipEnd_jnt”. Now select hip_jnt and point snap it to the same position as root_jnt. Next take the root joint of the spine (spine1_jnt) and hip_jnt, and parent them under root_jnt. Then take the root joint for the arm chain (clavicle_jnt) and parent it under the closest spine joint (spine4_jnt).
Step 05 – Continue to make the leg and head joints
For the leg, create a five-joint chain in the Side view. The first joint was placed just below the root joint, then at the knee, the ankle, the ball of the foot and then the tip of the toes. Again, rename the joints (adding l_), and work in all the views to translate and rotate the joints into place. For the toe joints, create them in a similar way to the finger joints by starting with the metatarsals and then working down the toes. Once the toe joints are created, select the root joint for each toe chain and parent them all under ball_jnt. Remember to freeze the transformations on all the joints so that we have clean rotation values. Now take the root joint for the leg and parent it under hip_jnt. Next, mirror the left joints over to the right-hand side. Start by selecting the leg joint and go to Skeleton>Mirror Joint (Options). When the window pops up, make sure Mirror across is set to YZ, Mirror function is set to Behavior, Search for is l_ and Replace with is r_. Once the leg is mirrored over, repeat the process for the arm. The model is not fully symmetrical so just go in and check that the mirrored joints are correctly in place.
Step 06 – Skin the model
We now need to attach it to the model, via a process referred to as skinning. In the Outliner, start by selecting all the joints other than the end joints (as we do not want these as part of the bind). Then Shift-select the model in the viewport and go to Skin>Smooth Bind (Options). Use the following settings and hit Bind Skin: Bind to: Selected Joints, Bind Method to Geodesic Voxel (or Classic Distance if you are using Maya 2014, 2013), Normalize weights to Interactive, Max Influences to 8, Falloff to 0.3 and Resolution to 1024. Once the bind has been calculated, you can rotate the joints and the model should deform. Some areas by default will be pretty pants and we’ll need to clean up the initial bind. To do this, we primarily use the Paint Skin Weights Tool. With the model selected, activate the tool and in the Settings, you should see a list of joints that are influencing the model. Here you can select a joint and then define how much influence that joint has over the vertices of the mesh. Go through and pose the character by rotating the joints, and use Paint Skin Weights to tidy up the troublesome areas. Only focus on one side as we can always mirror the weighting over. For this tutorial, it took around 45 minutes to one hour to paint the weights.
Step 07 – Mirror the weights and clean them up
With the main forms deforming well on one side, we can mirror the weights over. To do this, select the model and go to Skin>Mirror Skin Weights (Options). In here, set the Mirror across to YZ, enable Direction, and hit Apply. Again, rotate some joints to check if the weights have been mirrored over. At this stage, you’ll probably find that you have a few vertices that are not behaving as well as you’d like. For example, on our rig, rotating the arms resulted in some of the vertices of the belly being pulled. To fix this, we could continue to paint the weights, but to fix this quickly we used the Hammer Skin Weights tool. To use this tool, select the troublesome vertices and then go to Skin>Hammer Skin Weights. Hopefully by now, you’ll have taken care of the majority of the skinning. Once you’ve finished using the Hammer Weights tool, pop the rig back to its default pose and mirror the weights over again.
Step 08 – Add IK handles and controls
At this stage, we could pose the mesh and send it back to Mudbox. What we’d like to do now, however, is quickly add some IK handles and some controls to make the process of posing the character slightly faster. This will also help to keep the legs planted on the ground when posing the hips and the torso. We’ll explain the process for the left arm here, but you can repeat the step on the right arm and the legs. Start by going to Skeleton>IK Handles (Options) and then set the Current solver to Rotate-Plane Solver. Next make a first click on l_upperArm_jnt, and then a second click on l_wrist_jnt. You should now be able to select the IK handle that has been created, and using the Move tool, you can pose the entire arm. You can also use the Twist attribute that lives on the IK handle to position the elbow. IK handles are created in world space so you cannot simply zero out the Translate values to get them back to their creation position. To enable us to do this, let’s create a control. First, go to Create>NURBS>Circle (make sure Interactive Creation is disabled) and then rename the circle “l_arm_ctrl”. Now with l_arm_ctrl selected, hit Cmd/Ctrl+G to group it to itself, and rename this “l_arm_ctrl_offset”. We now need to position the control so select l_arm_ctrl_offset, hold down V, and point snap the _offset node to the same position as the IK handle. Now take the IK handle and parent it under l_arm_ctrl. You should now be able to use the control to position the IK handle, and zeroing out the values of the control (not the scale) should result in the IK handle going back to its default pose.
Step 09 – Pose the sculpt
Using a combination of the FK joints and the IK controls, pose the character as you wish. If you do find that there are artefacts in the pose, do not worry yourself, we will clean these up before we send the model over. With the sculpt in the pose, duplicate the mesh and then hide the original skinned model. Now take the duplicated mesh and go to Edit>Delete By Type>History and then unlock the transform attributes in the Channel Box. Next, select the mesh and hit F3 to switch to the Polygons menu set. Then go to Mesh Tools>Sculpt Geometry Tools (Options). Set the Operation to Relax and then start cleaning up the troublesome areas using the left mouse button. You could handle this in Mudbox but the Relax feature of this tool is a firm favourite of ours.
Step 10 – Send the pose to Mudbox
Go to File>Export and save the model as an OBJ file. We’ve named the file “orc_poseA.obj”. Next, jump into Mudbox and make sure the sculpt is at its lowest subdivision level. Then go to the Layers tab and make sure you are looking at the Sculpt layers. Click on the Options icon (small, round grey icon), and go to Import Layer. Select orc_poseA.obj and the sculpt should immediately jump to the new pose. You should now be able to jump up the subdivision levels to reapply the hi-res details. If for any reason, you find that the hi-res details have a bubbly effect (this seems to happen in around one in ten sculpts), this is how you can go about cleaning it up. First, pop the sculpt back to its default pose, and then extract a Displacement map (usually a 4k, 32-bit floating point EXR). The mesh we’re using has UVs but if it did not, then take advantage of Ptex. Next, delete all the subdivision levels on the sculpt (Mesh>Delete Highest Level). Then resubdivide the mesh back up to its highest level, and apply the Displacement map (UV & Maps>Sculpt Using Map). You should now be able to apply the pose or any other pose and have everything look as it should.