Building FK Joints With Controls

Maya: Manual Rigging


This class is for students wanting to build fk joints with controls. These can also be handy to mod rigs for custom appendages with simple fk chains. Great for eyebrows, pony tails, pieces of hair and cloth. Custom facial rigs, belts cloth appendages and much more.

Section 1 covers Joint Creation and breaks the joint build into 6 simple steps.

1. Place Joint Pivots
2. Freeze Transforms
3. Orient Joints
4. Tweak X Roll Axis
5. Zero Rotation Axis
6. Mirror Joints

Section 2, Parenting Joints shows us how to parent joints to curves and then to groups to zero out transforms and create controls.

Section 3, Selection Highlighting Shows a neat trick in Maya where we can disable the automatic highlighting of hierarchies which can be annoying in animation rigs.

Section 4, Understanding Shape Nodes allows us to parent multiple curves under one transform node to create fancy controls such as smiley faces which need more than one curbs curve. We then go on to use joints as transforms to parent curves. This is handy as it neatly eliminates an extra transform node for faster rigs.

Section 5 covers doing the whole process quickly in less than 5 mins. We use scripts to help us avoid very repetitive tasks. We use the CG Monks Toolkit which can be downloaded for free.

Section 6 shows us how we can use follicles to allow use to parent joints directly to vertices, this is great for eyebrows or a moustache on a blendshaped face, or belts around the hips or buttons etc.

Section 7 demos the rigging of an entire character in this case Zanzi using a pure fk controls. In the last vid we’ll make some quick mods to give him ik legs and we have a basic but fully rigged character for body controls.

This Page Is Beta: Temp vids and some content may not match.


Joint Creation and Orientation (18 mins)

Creating joints in Maya is easy if we follow these 6 steps. It’s important to orient the joints correctly and zero the rotations and rotation axis. So a few things to remember, follow the list and we’ll have it down in no time.

1.1. Place Joint Pivots
1.2. Freeze Transforms
1.3. Orient Joints
1.4. Tweak X Roll Axis
1.5. Zero Rotation Axis
1.6. Mirror Joints

Video 1.1: Place Pivots (1:54 mins)


1. Joint Tool
2. Place Pivots
3. Scale Move Insert
4. Reparent etc

Video Notes

Place the joints. Rotations and axis and scale doesn’t matter. Only the pivots are important and the parent hierarchy.

Video 1.2: Freeze Transforms (1:30 mins)


1. Select the root
2. Freeze Transforms
– alt f

Video Notes

Select the root of each chain and freeze transforms (alt f on the c3dc hotkeys).

Video 1.3: Orient Joints (6:42 mins)


1. Unparent so no forks
2. Chain end dummies
3. Select each root
4. Orient Joint Window
5. Reset
6. Orient each chain
7. Flip y on flipped
8. Reparent forks
9. Delete dummy ends

Video Notes

Orient the joints so that the x axis points directly down the chain. Open the orient joint window and reset it. Unparent any forks and if mirroring only work on the character left side. Create a dummy at the end of each chain for the last joint to point towards.

Video 1.4: Roll X Values (3:29 mins)


1. Rot Axis visible
2. Goto Component > ?
3. Tweak joint rolls
4. Script for numerical

Video Notes

We can tweak the roll values if desired. This is easy to do but we must remember to zero the Rotation Axis values in the next step.

Video 1.5: Zero Rot Axis (3:39 mins)


1. Parent root to dummy
2. Select the dummy
3. Run the script
4. Unparent root
5. Delete Dummy

Video Notes

To reset the Rotation Axis values to zero we need to use a script. This works only on the child joints of the joint selected so best to parent the joint to a dummy joint and run the script while selecting the dummy joint. (dummy joint is not in video)

Video 1.6: Mirror Joints (1:27 mins)


1. Mirror Joint Window
2. Reset
3. Axis to YZ
4. Joints need parent
5. Set rename prefix
6. Run

Video Notes

Orienting joints is easy. Just remember we can only do one chain at a time and that the selected joint must have a parent on zero. Axis is YZ and behaviour will flip the y axis to point down. This is ok and normal.


Curve Controls as Parents (10 mins)

Here’s a super simple method to make curve controls using groups as parents. The groups help us zero the transforms of the curve control below.

The hierarchy is simple, for each joint we go
grp > crv > jnt

It’s good to learn this simple method first before attempting constrained controls or parenting curves as shape nodes covered in section 4. Also see “selection highlighting” in Section 3. That will allow the controls not to highlight children which can be annoying for animators.

The last video in this tutorial covers locking and hiding attributes on the group and the joint, making our rigs animator proof. Simply right click > lock and hide on the attributes to hide. To bring them back we can use the window > general > channel control window.

Video 2.1: 2. Curve Controls as Parents (4:22 mins)


1. Create Curves
2. Match by Parent
3. Match by Constraint
4. Match by Script

Video Notes

This video covers the creation of some simple curve controls and different matching techniques in Maya.
– Matching by parenting and zeroing, then unparenting
– Matching by Parent Constraint with maintain offset off, then deleting the constraint
– Matching with a script (shift x (hold) marking menu (up) )
In this example it’s easiest if the curve circles are rotated 90 degrees before matching.

Video 2.2: Zeroing The Hierarchy (4:28 mins)


1. Create Grps
2. Match to Joints
3. Parent
Grp > Crv > Joint

Video Notes

Now we’ll zero out the transforms of the joints and curves by adding and matching groups to the hierarchy. The order will be
– grp
— – crv
– – – jnt

Video 2.3: Lock And Hide Attributes (1:27 mins)


1. Select Channel Box Attributes
2. Right Click Lock and Hide
3. Channel Control Window

Video Notes

To have a clean rig we’ll want to lock and hide the transforms of the grps. It’ll disable them so the animators mess them up. Simply right click on the attributes and use “lock and hide”.

To retrieve locked and hidden attributes we can use
Window > General Editors > Channel Control


Selection Highlighting (2 mins)

Selection Highlighting is a handy switch in the prefs that allows us to disable Maya’s sometimes annoying habit of highlighting the entire hierarchy while the parent object’s selected.

This is great for animators who like to see exactly what controls they have selected.

We have three different modes in the preferences.
– Always Highlighting
– Never Highlighting
– Use Object Selection Highlight

The last method is our preferred and gives us total control. Each object can be switched to ignore selection highlighting under the transform node under display.

Video 3.1: Selection Highlighting (2:43 mins)


1. Prefs > Object Highlighting
2. Select Object
3. Attribute Editor
4. Transform Node
5. Object Display
6. Selection Child (off)
7. Or use script

Video Notes

Very handy little attribute in the prefs is “Object Selection highlighting”. This allows us to disable Maya’s sometimes annoying habit of highlighting the entire hierarchy when the top object is selected.
This is great for animators who like to see exactly what controls they have selected.
We need to switch the prefs to object highlighting

Window > Settings Preferences > Preferences

Settings > Selection > Selection Child Highlighting > Use Object Highlight
Once on it will remain on for all future maya sessions and files. Then it’s just a matter of turning off a setting on each object. And we can use a handy script for this too.

  # selection highlighting on selected objects, so children don't light up when you select the parent
    #prefs must be set to 
    # Settings > Animation > Modifiers > Selection Child Highlighting: Use object highlight setting
import maya.cmds as cmds
for s in, type='transform') or []: cmds.setAttr('%s.selectionChildHighlighting' % s, 0)


Shape Node Parenting (19 mins)

Parenting Shape nodes is the most efficient way to build curve controlled FK chains in Maya. It bypasses the creation of an extra transform node leaving just the joint (with a curve shape) and a group (transform). Although this isn’t a huge speed saving, it is cleaner and keeps the outliner tidy and manageable for fk chains.

There’s a lot to know about shape nodes and their relationship to transform nodes in Maya. Once learned this area becomes very easy and powerful.

Unfortunately in maya out of the box reparenting shape nodes requires a tiny line of .mel. and is annoyingly repetitive.

See the scripted workflow in Section 5 where we can virtually automate this process.

Video 4.1: Understanding Shape Nodes And Reparenting (5:31 mins)


1. Outliner > Show Shapes
2. Attribute Editor > Tabs

Video Notes

Transform and Shape Nodes are a critical component to most objects in Maya.
Transform Nodes = Where Am I?
Shape Nodes = What Am I?
For the most part these nodes are linked. A curve shape node will be linked to a transform node and in the outliner they are the same object. But we can show shapes by
Outliner > Right Click > Show Shapes

This will allow us to distinguish the transform from the shape in the outliner. Usually we want to have this off, but it show’s us how shape nodes can have a sort of parent hierarchy. This is handy as we can parent multiple shape nodes to a single transform.

Video 4.2: Parenting Shape Nodes (5:28 mins)


1. Unparent Curves
2. Freeze transforms
3. Outliner > Show Shapes
4. Select shape then transform
5. parent -r -s;

Video Notes

In this video we’ll join multiple curve shapes to one transform using a simple command. Open the outliner and show shapes. Select the shape node and then the transform of the object we wish to parent to then use the code (.mel)
parent -r -s;
Objects must have frozen transforms and be in the same world space for this to work correctly.

Video 4.3: Parenting Shape Nodes To Joints (8:51 mins)


1. Create Curve Control
2. Parent it to a joint
3. Freeze Transforms Curve
4. Unparent Curve
5. Outliner > Show Shapes
6. Select Shape then joint
7. parent -r -s;

Video Notes

In this video we can see how we can parent shape nodes to joints as well as transform nodes. Joints are one of the only objects in the 3d viewport that don’t have a transform node. Instead they are only a joint node. But shape nodes can be parented to joints in the same way as transform nodes. In this case it’s best to parent the curve first and freeze transforms then unparent to keep the curve from moving/distorting. Again we use the .mel command…
parent -r -s;


Fast FK Setup With Scripts (6 mins)

This is the fast way to build FK chains in Maya with the help of some handy scripts for building controls and parenting shape nodes fast.

In the first video we’ll create and orient a joint chain quickly.

In the second video we’ll use the free toolbox from CG Monks. The CG Monks Toolkit has loads of powerful features.

We’ll see how fast it can be to create, orient and build control curves a fk joint chain in Maya. With this workflow we can easily create fk chains with curve controls in little time.

Video 5.1: Fast Joint Creation (1:58 mins)


1. Position Joints
2. Freeze Transforms
3. Orient Joints
4. Roll X (optional)
5. Zero Rot Axis (optional)
6. Mirror Joints (optional)

Video Notes

Orienting joints can be fast and easy with the steps we learned earlier. Here we skip the Rolling of X, Zero Rot Axis and Mirror as these steps aren’t necessary.

Video 5.2: Scripted Control Creation and Shape Node Parenting (4:22 mins)


1. Name Joints
2. CG Monks Icon
3. Rigging Tab
4. TD Tools
5. Options > Reset
6. Pick Shape
7. Select Joints
8. Create
9. Group In Place
10. Rot 90
11. Freeze
12. unparent
13. Delete Transforms
14. Select Curves
15. ShapeParent
16. Connect
17. Select Joints
18. Connect

Video Notes

In this section we’ll use the CG Monks Toolkit to quickly create curve controls, parent shape nodes and zero transforms for multiple objects. As we’ve found in previous sessions this can be very repetitive, so by using this great set of tools we can cut our creation time down to just a couple of minutes.

There’s a lot of steps here so check the list (left). But since we know the process the buttons will make it very easy. At some stage I’d like to script this further to eliminate more steps. In theory, all we need is the joints named and to select the top joint and the type of curve and scale of the curve. All other steps can be automated.


Follicles and Parenting to Vertices (10 mins)

Follicles allow us to parent joints (and other objects) to vertices. This is super handy for skinning objects to meshes where they may be affected by blend shapes etc. For example, eye brows, moustaches, buttons on clothes, belts and lots more.

Follicles are part of Maya’s hair system. But as many riggers have found they are the easiest and most efficient way of parenting objects directly to a mesh’s surface. The script used here is

Follicle Constraint by Michael Paixao

And it eliminates a bunch of steps that would be required to crate a hair system delete the unused nodes and get a follicle into the correct location.

Note* Follicles work with UVs, so the object must have solid UVs. We should be confident that the mesh won’t change much from here. We can rebuild follicles if we need to make mesh changes but it can be tricky, so best to be sure our mesh is good with solid UVs before setting up follicles.

Video 6.1: Follicles (3:04 mins)


1. Select Vert
2. Run Script
3. Rename Follicle

Video Notes

This video explains how in certain circumstances it’s not enough to be able to parent joints to other joints, in this case the moustache to the head joint. As the face smiles with a blend shape the moustache won’t move with the blend shape.

This is where we can use follicles to directly parent joints to the mesh itself.

Follicle Constraint by Michael Paixao

Video 6.2: Parenting To Follicles (2:34 mins)


1. Select Joint
2. Shift Select Follicle
3. Parent

Video Notes

Now it’s very easy to parent any object to the follicle. In this case we’re parenting joints. But we could parent any object or constrain as well.

Video 6.3: Problems With Follicle Orients and Constraint Workaround (4:22 mins)


1. Select Follicle
2. Select Joint
3. Point Constraint

Video Notes

There’s a couple of small issues with follicles.
1. They tend to flip with triangulated edges so best to keep them on vets or edges.
2. The orientation can be unpredictable

Regarding orientation unpredictability we can parent our joints (or grouped joints) to a more stable object and then point constrain instead of parenting. Now the joints will orient with another joint but will still translate with the mesh.


Zanzi Example (20 mins)

This section features a demo of Zanzi with joint placement and control setup at first to build a complete fk character.

In the second video we add skin selection sets for each mesh and skin with default settings. These will need to be tweaked later. In the last part of the second video we create a simple Ik legs to pose the character. This would be a very simple but working rig that animators could use.

Video 7.1: Joint and Control Setup For Zanzi FK rig (12:10 mins)

Video 7.2: Default Zanzi Skinning and IK Leg Setup (7:53 mins)

Leave a reply