Basic Biped IK/FK Rig

Basic Biped IK/FK Rig
These steps are assuming you have already created your base joints.

Base Rig
Duplicate base rig twice and rename them. One for FK and one for IK.

FK Rig

 * 1. Create control and rotate it to correct orientation using xform :

cmds.xform(ro=(x, y, z)) 


 * 2. Group the control to itself and rename it.


 * 3. Grab control group, then select FK joint, and press 'P' to parent them.


 * 4. Zero out translates and rotations on group. This will snap the group/control to the joint position.


 * Then you can un-parent them using 'Shift + P'.


 * 5. Do the same thing for all the controls required.


 * 6. Parent all of the control/groups under each other.


 * Grp -> next ctrl up -> Press 'P'


 * 7.Parent Constraint joints to controls.


 * Ctrl -> Joint -> Parent Constraint.


 * 8. Create control for Pole Vector. Group to itself, parent to elbow joint, zero out and un-parent (same as the process used for the FK controls). Move the control back a bit so it isn't sitting directly on top of the joint.


 * 9. Set preferred angle on the elbow. Bend the elbow 90 degrees then select 'Set Preferred Angle'.



Step 3

IK Rig

 * 1. Now switching over to the IK rig we need to create the IK handle.


 * Go to the 'Skeleton' menu and select 'Create ik handle'.


 * Make sure you have it set to RP Solver in the settings.


 * Select the shoulder (or hip, whatever you are doing) then wrist (or ankle...)


 * 2. Create another shape control for the "hand". Group it to itself, parent, zero out, then un-parent. All the same as done before.


 * 3. Point Constraint  IK handle to the hand control.


 * Select hand control -> ik Handle -> Constraint


 * Now the chain should follow the hand around.


 * 4. Select elbow control and lock & hide the X and Z rotation. So it can not twist and contort.


 * 5. In the hand control attributes, add a new attribute and name it 'IK_FK_SWITCH'.


 * It must be a float with a min. value of 0 and a max. value of 1.


 * 6. Select joints and controls in the following order and apply a Parent Constraint.


 * Shoulder_FK_Joint -> Shoulder Ctrl -> Shoulder_IK_Joint -> Shoulder_Base_Joint -> Parent Constraint.


 * Maintain Offset : Off


 * Only rotation


 * Do the same thing for all the joints.


 * 7. Select the Pole Vector control -> IK Handle -> Assign Pole Vector Constraint.

IK FK Switch
