Tuesday 7 January 2014

Oreintating Controls Using a Group

I talked about orientating controls in my Dynamic Hair Tutorial Part 4, I did not want to clog up the hair tutorial about other rigging things that I do. I figured I start another post talking about it, maybe I will be linking other tutorials here also.

In this tutorial (I would not really consider it a tutorial, more like a share session), I will be talking about how I orientate controllers (NURBS Curves) to joints/a joint chain; using groups above it and leaving the channels of the controllers empty.

First 3 things to understand, more like 3 situations to understand:


1st situation (top): Curve Oriented
Yay! You got it to point the correct way and the manipulator is pointing the correct way, however, there are values on the channels, which is not animator friendly when they want to animate. Animators would want all the channels to be clean and all to be zeroed out (except for scales).

2nd situation (middle): Freeze Transform
You try to salvage the situation by freeze transforming and killing the values in the channels. Although you killed the values, you have reset the manipulator to its parent (in this case it is the world)

3rd situation (bottom): Group It (new setup)
Since you made a group for the controller, meaning the group is the parent of the controller. At the same time, nothing is done to the rotation of the controller, meaning it will inherit the rotation (not values) from the parent group. In conclusion, you have got the controller to be pointing the correct way but at the same time you leave the channels values empty; best of both worlds.

Next section: I will be showing how I orientate the controllers to a simple rigged mesh and joint chain.

This is a simple FK arm I made up in a few minutes with the mesh following the chain.


Step 1: Create controllers (NURBS Curves) and place them on the place you want the controls to rotate about. In this case, I would put the controls on the same location as the joints. 

Step 2: Group each controller under a group and center pivot (or you can move the pivot of the group to set it the same as the controller).




I cannot show you that I have changed the pivot of the groups, but they are center pivoted.
(meaning same pivot as the controller that it holds.
I turned on the visibility of the local axis of the controllers so you know where are they facing.
Step 3: Either A or B, step A will require building another joint chain above the existing one, for deconstruction (so that you do not mess with the original skinned joints) while step B requires unparenting of the joints.

 Step 3A: Make a joint chain above the original (same position of joints) and orient joints for that, they should be in the same orientation as the skinned joints.
 
Step 3B: Unparent the joints from their parents as shown and note their rotational values in the attributes tab.


Step 4: Note down the joints orient (either the original skinned joint or the specially created duplicate).


Step 5: Copy the values of the joint orients to the group channel.

Values in the groups and no values in the controllers.
 Step 6: Parent the groups to the controls, the controls control the groups which control the control.

I think it is better if there is an image here:


The rest is just orient constraining the controls to the joints and that is all.


In conclusion, your controls will be pointing in the same exact direction as the joints. This works well for FK since the controls will rotate in their local axis transferring the same values to the joints, meaning no mixed values from axis (eg. x and y axis of the controller affecting the x axis of the joint)

I provided a file here if you need it for reference:

https://www.dropbox.com/s/0b6ew7ngl9xipz0/Tut0201.ma

I find this method very useful to orientate controllers in a rig, I do encourage your thoughts and opinions and if you have any critics, I'd be open to it, thank you for your audience and have a nice day.

All materials used were with the intention of education, please credit if you linked it here.

No comments:

Post a Comment