Friday, 19 December 2014

Complete Human Character Rig In 3D Studio Max, Part 4 Hand & Finger Controls

Today we’re bringing you the fourth part of Soni Kumari’s exceptional Human Rigging tutorial series for 3D Studio Max. In this lesson, you’ll learn how to construct the necessary controls and constraints for the character's hands and fingers!
  1. Complete Human Character Rig In 3D Studio Max, Part 1
  2. Complete Human Character Rig In 3D Studio Max, Part 2
  3. Complete Human Character Rig In 3D Studio Max, Part 3
  4. Complete Human Character Rig In 3D Studio Max, Part 4 Hand & Finger Controls
  5. Complete Human Character Rig In 3D Studio Max, Part 5 Skinning
Throughout this series author Soni Kumari will walk you through the entire process of constructing a fully realized character rig from scratch using Max’s proprietary toolset. Over the course of the project Soni will give you a series of in-depth lessons, working towards building a intuitive, animation friendly character rig from the ground up. If you’ve always wanted to learn how rig but didn’t know where to start, this series is for you.
In the fourth Part of the tutorial, you'll learn how to create the hand and finger controls. Let’s start 3ds Max and open the "Character upper Body controls.max" file which was saved in the last part of the tutorial.
Since we have already created Iks for both hands in the previous part of the tutorial, first rename them as IK_R_Hand01 and IK_L_Hand01.
Before starting the next process of rigging, we have to lock the controller’s transformations. In the previous steps, we have already locked the scale transform of both foot controls - CtrlC_R_Leg and 01 CtrlC_L_Leg 01. So now with CtrlC_R_Knee 01 selected, Alt+Right-click and choose the Curve Editor option in the pop-up menu.
This opens the Curve Editor window. In the Curve Editor window, select Scale node.
With the Scale node selected, Right-click and select the Lock command in the pop-up menu to lock the scale property.
In the same way, lock the scale property of the CtrlC_L_Knee 01 control too.
Now, with the CtrlC_COG01 selected, press Alt+Right-click and choose the Curve Editor command to open the Curve Editor window.
In the Curve Editor window, lock the Scale property of the CtrlC_COG01 control too.
Sometimes we may have to lock other transform properties in some cases. Like in the case of the CtrlC_Hip shake 01 control, we have to lock both the Scale and Position properties. So with the CtrlC_Hip shake 01 selected, Alt+Right-click and select the Curve Editor. In the Curve Editor window, select the X, Y and Z Positions and also select Scale. In the case of CtrlC_Hip shake 01 control, we need only the Rotation property left.
So with the X, Y and Z Positions and Scale selected in the Curve Editor, Right-click and choose the Lock command.
Just like this we have to lock the Position and Scale properties of the CtrlC_Spine01 control also. So with the CtrlC_Spine01 control selected, open the Curve Editor window, select the X, Y, Z Positions and Scale, and lock these properties.
Just like this, keep locking the other controller's Scale and Position properties, as per requirement. This is quite necessary for animation.
We’ll lock the Neck and Head controls also for the Position and Scale nodes. Here we’ll use only the Rotation property for animation.
Now, we'll start creating the next controls curves. So jump into the perspective view, and create a rectangle shape near the neck as shown in the image below.
With the rectangle shape selected, Right-click and select the Convert to Editable Spline command.
Now, select the rectangle shape and press Shift+A for Quick Align, and then click on Bn_L_Clavicle01 as shown in the image below.
Now, select the rectangle shape again and then click on the Affect Object Only button under the Hierarchy panel. And then place it around the neck area as shown in the image. After this, switch off the Affect Object Only button.
Rename the rectangle shape as "CtrlC_L_Clavcle01" and with it selected, click on the Mirror tool. This opens the Mirror Options dialog box . Select Copy mode and then press the OK button. This will make a mirrored copy of the rectangle shape on the other side.
Select the newly created mirrored rectangle shape and after pressing Shift+A, click on the Bn_R_Clavicle01 bone to quick align. Also Rename the shape curve as "CtrlC_R_Clavcle01".
Now, for the constraint joint and clavicle control curve, we have to create a point helper. So in the Create Panel, click on Helpers and then select Point button. Then in the Display group, check on the Axis Tripod and Box options with a size value of4.0. Now click on the grid to create a point helper.
With the point helper selected, press Alt+A and then click on Bn_L_Clavicle01 to quick snap.
When you click on Bn_L_Clavicle01, it opens the Align Selection window. Here turn on all X, Y and Z Positions and also all Align Orientation Axes X, Y and Z, then press the OK button.
Now, with the aligned point helper selected, press the Mirror button and then set the Offset to something similar to what's shown in the image. Then check on the Copy radio button and finally click on OK. This makes a mirrored duplicate point helper on the opposite side.
Now, Rename both point helpers as "PointCtrl_R_Clavcle01" and "PointCtrl_L_Clavcle01".
Now with Bn_L_Clavicle01 selected, go to Animation > Constraints and choose the Orientation Constraint.
Now, with the Orientation Constraint selected, click on PointCtrl_L_Clavcle01 to apply the Orientation Constraint.
Now click on the Select and Link button and then first select PointCtrl_L_Clavcle01 and drag and drop onto CtrlC_L_Clavcle01 to link.
Now, for the right side clavicle control link. Follow the same process as we did previously in steps 25, 26 and 27. Let’s also Rename the right side clavicle control as "CtrlC_R_Clavcle01".
Now, for linking. Click on the Select and Link button, then first select CtrlC_R_Clavcle01 and CtrlC_L_Clavcle01 and then drag the mouse button and drop it onto CtrlC_Chest01.
After doing this, don’t forget to freeze both newly created clavicle control curves.
Now, jump into the Top view to create the hand controls. So either select the Line tool or Rectangle tool, and draw a rectangular shape on the viewport.
Now, with the rectangular shape selected, press Shift+A and click on IK_ L_Hand01 to align the rectangular shape with the left hand IK.
Now, select the rectangular shape curve and in Vertex mode, reshape it as shown in the image below. It should roughly look like a hand shape.
With the rectangular shape curve selected, press the Mirror button on the main tool bar, select the Copy radio button in Mirror options box, and then click on OK. This will make a mirrored duplicate rectangle shape on the opposite side.
Select the new mirrored rectangular shape, then press Shift+A and click on IK_R_Hand01 to snap the curve to the right hand control shape.
Now Rename both side hand control shapes as "CtrlC_R_Hand01" and "CtrlC_L_Hand01", and also change their colors.
Now, go to Create panel > Helper > Point and then click on grid to create a point helper.
Select the newly created point helper, and then press Alt+A and click on Bn_L_Hand01. This opens the Align Selection settings box. In the settings box, check on all X,Y and Z positions also check on all X,Y and Z axes under Align Orientation. Then click on the OK button.
Again select the newly created point helper and press Ctrl+V to make a clone of the point helper. In the Clone Options window, select Copy and then click OK.
After cloning the point helper, select it and then press Alt+A and click on Bn_R_Hand01. It opens the Align Selection settings box. Here check on all X,Y and Z positions, also check on all X,Y and Z axes under Align Orientation and then click on OK. Also Rename both point helpers as "PointCtrl_R_hand01" and "PointCtrl_L_hand01".
Now with Bn_L_Hand01 selected, go to Animation > Constraints and choose the Orientation Constraint.
Now, with the Orientation Constraint selected, click on PointCtrl_L_hand01 to apply the orientation constraint.
Now, click on the Select and Link button and then first select PointCtrl_L_hand01 and then drag and drop onto CtrlC_L_Hand01 for linking.
In this way, follow the same process for the right side hand control and also link the helper to the hand control.
After creating the new control, we must do a Freeze Transform. So with both CtrlC_R_Hand01 and CtrlC_L_Hand01 selected, Alt+Right-click and select the Freeze Transform option in the pop-up menu.
Now with IK_ L_Hand01 selected, go to Animation > Constraints and choose the Position Constraint.
With the Position Constraint chosen, click on PointCtrl_L_hand01 to apply the Position Constraint on the IK handle.
Follow the same process for the right hand control helper also.
For checking the hand controls connectivity, Rotate and Move the controls and make a pose as you wish.
Select, CtrlC_R_Hand01 and CtrlC_L_Hand01 then Alt+Right-click and apply the Transform To Zero Command.
When you use Transform To Zero, all selected control curves will go into the initial pose like in the image.
Now, with CtrlC_L_Hand01 selected, open the Curve Editor and select the Scale node first and then Right-click, and choose Lock. Do the same for right side hand control curve also.
Now, we are going to create the Elbow control. So jump into the Top view and with the help of either the Line or Rectangle tool (with Snap mode enabled), draw a square shape as shown in the image below.
Now, jump into Perspective view, then with the Rotate tool and Snap selected, hold down Shift and drag in the Y Axis. This opens the Clone Options window. Here select the Copy option and then press the OK button.
Just like this, make another instance of the square shape and arrange them altogether as shown in the image. Now select any of the shapes, go to the Modify panel and with the Attach option enabled, click on the other two squares shapes one by one.
Now, select the attached square curve and quick snap it with the elbow bone, and also Scale it down it as shown in the image below.
Now, make one more clone of square shape and then quick align it with the right side elbow bone, just like we did previously.
Now, select both shapes and move them behind in the Y Axis, as shown in the image. Also Rename them as "CtrlC_R_Elbow01" and "CtrlC_L_Elbow01" respectively.
Select IK_ L_Hand01 and then go to the Motion panel.
In the IK Solver Properties (underneath Pick Target), click on the None button and then click on CtrlC_L_Elbow01 in the viewport to select it as the target.
Now, do the same things for the right elbow control. And also do a Freeze Transform for both Elbow controls.
Now, we will create the fingers controls. For this, first we have to make a curve shape for each individual finger. So jump into the side view, go to the Create panel, and select the NGon shape tool. Set the Sides to 4, and then drag on the viewport to create a shape as shown in the image below.
Now, again jump into the Perspective view, select the Ngon shape curve, Right-click and choose Convert To: > Convert to Editable Spline.
Select the newly created NGon shape, and press Alt+A and then click on Bn_L_Thumb01. This opens the Align Selection settings box. Here check on all X,Y and Z positions and also check on all X,Y and Z axes under Align Orientation, and then click OK.
After doing this, again go to the Modify panel and in Spline component mode, Rotate the shape according to the thumb start bone.
Again with the same NGon shape selected, go to the Hierarchy panel and select the Affect Object Only option and then move the NGon a bit upward as shown in the image.
With the NGon selected, press Ctrl+V to open the Clone Options and make a copy of the shape.
With the newly cloned NGon shape selected, press Alt+A and click on Bn_L_Index01. This opens the Align Selection settings box. Here check on all X,Y and Z positions and also check on all X,Y and Z axes under Align Orientation, and then click on OK.
Now with this NGon selected, press Ctrl+V to make one more clone.
Just like before, select the newly cloned Ngon shape, and then press Alt+A and click on Bn_L_Index01. This opens the Align Selection settings box. Here turn on all X,Y and Z positions, with all X,Y and Z axes checked under Align Orientation, and then click on OK.
Just like this, keep Cloning the NGon shapes for the rest of the fingers and align them as you have done before.
Now Rename all the finger controls as "CtrlC_L_Thumb01", "CtrlC_L_Index01", "CtrlC_L_Middle01", "CtrlC_L_Ring01" and "CtrlC_L_Pinky01" respectively.
Now, with the Bn_L_Thumb01 bone selected, go to Animation > Constraints and choose the Orientation Constraint.
Now, with the Orientation Constraint chosen, click on CtrlC_L_Thumb01 to apply the Orientation Constraint on the Thumb control.
Just like this, with the Bn_L_Index01 bone selected, go to Animation > Constraints and then choose Orientation Constraint.
With the Orientation Constraint selected, click on CtrlC_L_Index01 to apply the Orientation Constraint onto the Index control.
Next, with the Bn_L_Middle01 bone selected, go to Animation > Constraints and then choose Orientation Constraint.
With the Orientation Constraint chosen, click on CtrlC_L_Index01 to apply the Orientation Constraint onto the Index control.
So just like this, follow the same process for the rest of the fingers.
Now we will make Custom Attributes. To add Custom Attributes, first select CtrlC_L_Thumb01 then go to the Modify panel and then choose the Attribute Holder command in the modifier list.
With CtrlC_L_Thumb01 selected, go to the Animation menu and then select the Parameter Editor.
This opens the Parameter Editor settings window. First change the Parameter Type to String and then write "Thumb" in the UI Type Name field. Then inside the Default Text box, write "Secondary control" and then press the Add button.
After that, once again while in the Parameter Editor, change the Parameter Type to Float this time and then write "Thumb Middle Z" in UI Type Name field. Then keep the Width value at 100 and the Range from -360 to 360 and then press the Add button.
Just like this, once again in the Parameter Editor, change the Parameter Type to Float and then write "Thumb End Z" in the UI Type Name field. Keep the Width value at 100 and the Range from -360 to 360 and then press the Add button.
Next, select CtrlC_L_Index01 and then choose the Attribute Holder modifier from the Modifier list.
With CtrlC_L_Index01 selected, open the Parameter Editor settings window again. First change the Parameter Type to String, and then write "Index" in UI Type Name field. Finally write "Secondary control" inside the Default Text box and then press the Add button.
Again in the Parameter Editor, change the Parameter Type to Float and then write "Index Middle Y" in the UI Type Name field. Keep the width value at 100 and the Range value from -360 to 360 and then press the Add button.
Again in the Parameter Editor, change the Parameter Type to Float and then write "Index End Y" in the UI Type Name field. Keep the width value at 100 and the Range from -360 to 360 and then press the Add button.
Next, select CtrlC_L_Middle01 and then choose the Attribute Holder modifier from the Modifier list.
With CtrlC_L_ Middle01 selected, go to the Animation menu and then select the Parameter Editor. This opens the Parameter Editor window. Here change the Parameter Type to String, and write "Middle" in the UI Type Name field. Then inside the Default Text box, write "Secondary control" and then press the Add button.
Again in the Parameter Editor, change the Parameter Type to Float and write "Middle Middle Y" in the UI Type Name. Keep the width value at 100 and Range from -360 to 360 and then press the Add button.
Continuing with the Parameter Editor, change the Parameter Type to Float and write "Middle End Y" in the UI Type Name field, with the Width value at 100 and the Range from -360 to 360 and then press the Add button.
Follow the same process to make the Ring finger’s secondary control attributes.
And just like this, do the same to make the Pinky finger’s secondary control attributes.
Now, we will connect all attributes with wire parameters. So first select CtrlC_L_Thumb01, then Right-click and choose Wire Parameters... in the popup menu.
When you choose Wire Parameters..., a pop-up menu appears. Here go to Modified Object > Attribute Holder > Custom Attributes and then choose Thumb Middle Z.
Now, with Thumb Middle Z selected from the previous pop-up menu, click on Bn_L_Thumb02. Another pop-up menu appears. Here go to Transform > Rotation > Zero Euler XYZ and then select Z Rotation.
this opens the Parameter Wiring window. In the left side, Thumb Middle Z is highlighted and in the right side, Z Rotation: Bezier Float is highlighted. Since Thumb Middle Z will control the Z Rotation, select and click on the left to right control direction arrow button.
Now, write the Expression DegToRad(Thumb_Middle_Z) and then click on the Connect button.
Again, select CtrlC_L_Thumb01 and then choose Wire Parameters. Go to Modified Object > Attribute Holder > Custom Attributes and then choose Thumb End Z in the pop-up menu.
Now, the Parameter Wiring window opens. Since Thumb End Z will control the Z Rotation, select and click on the left to right control direction arrow button. Also write the expression DegToRad(Thumb_End_Z) and then click on the Connect button.
Now, for the Index finger wiring, select CtrlC_L_Index01, Right-click and choose Wire Parameters. A pop-up menu appears. Here go to Modified Object > Attribute Holder > Custom Attributes and then choose Index Middle Y.
Now, with the Index Middle Y selected from the previous pop-up menu, click on the Bn_L_Index02 bone. Another pop-up menu appears. Here go as Transform > Rotation > Zero Euler XYZ and then select Y Rotation.
This opens the Parameter Wiring window. On the left side, Index Middle Y is highlighted and on the right side, Y Rotation: Bezier Float is highlighted. Since Index Middle Y will control the Y Rotation, select and click on the left to right control direction arrow button. Also write the expression DegToRad(Index_Middle_Y) and then click on the Connect button.
Next, select CtrlC_L_Index01, Right-click and choose Wire Parameters. This opens a pop-up menu. Here go to Modified Object > Attribute Holder > Custom Attributesand then choose Index End Y.
With Index Middle Y selected from the previous popup menu, click on the Bn_L_Index03 bone and then select Transform > Rotation > Zero Euler XYZ and then select Y Rotation.
Now, the Parameter Wiring window opens. On the left side, Index End Y is highlighted and on the right side, Y Rotation: Bezier Float is highlighted. Since Index End Y will control the Y Rotation, select and click on the left to right control direction arrow button. Also write the expression DegToRad(Index_End_Y) and then click on the Connect button.
Now, for the middle finger wiring, select CtrlC_L_Middle01, Right-click and choose Wire Parameters. Here go as Modified Object > Attribute Holder > Custom Attributesand then choose Middle Middle Y.
With Middle Middle Y selected from the previous pop-up menu, click on the Bn_L_Middle02 bone and then go to Transform > Rotation > Zero Euler XYZ and then select Y Rotation.
Now, the Parameter Wiring window opens. On the left side, Middle_Middle_Y is highlighted and on the right side, Y Rotation: Bezier Float is highlighted. Since Middle_Middle_Y will control the Y Rotation, select and click on the left to right control direction arrow button. Also write the expressionDegToRad(Middle_Middle_Y) and then click on the Connect button.
Again, select CtrlC_L_Middle01, Right-click and choose Wire Parameters. This opens a pop-up menu. In the pop-up menu, go to Modified Object > Attribute Holder > Custom Attributes and then choose Middle End Y.
With Middle End Y selected from the previous pop-up menu, click on the Bn_L_Middle03 bone and then select Transform > Rotation > Zero Euler XYZ and then select Y Rotation.
The Parameter Wiring window opens again. On the left side, Middle_End_Y is highlighted and on the right side, Y Rotation: Bezier Float is highlighted. Since Middle_End_Y will control the Y Rotation, select and click on the left to right control direction arrow button. Also write the expression DegToRad(Middle_End_Y) and then click on the Connect button.
Now, follow the same process for each of the two remaining fingers.
And this way you can create wire connections and custom attributes for the right hand controls as well.
Finally check the finger controls and save the file as "Complete Upper Body Controls".max. In the next part of the tutorial we will learn how to apply the skin modifier onto the character mesh.

No comments:

Post a Comment