
modCharSetup
is a Maya Character Setup set of scripts that allows a rigger to automate the setting up of characters in a manner that is modular. Parts of the character are divided into multiple different parts that are independent on their own. Because of this, creating a character with more than two arms or even arms that aren’t connected to the body and instead to the head, probably, has never before been this easy. The entire suite of tools from the script is designed to allow a rigger to finish setting up controls within 30 minutes per character.
1. Create Placers

Step one is create your placers. Placers allows us to input the positions of joints and controllers to Maya without necessarily creating th . Everything will be done automatically by the script. You have three kinds of placers that you could use. Each of th representing a specific kind of setup. The first is the Three Joint Limb. The TJL, is the setup for most limbs. You would typically use this for your arms, legs and other similar body appendages with two segments or three joints. Hence, the name.
Usage: Click on the Three Joint Limb icon. Provide a name for the set up (e.g. rightArm or leftBunnyEar). Then position each placer created where roughly you’d like to have the joints created.
The TJL, when set up, is outfitted with stretch and an ability to blend between FK and IK. It will also have a “pseudo parent” that (aside from housing the attribute that controls the blending between FK and IK) allows us manage the joints and controls associated to the setup.
The next kind of setup is the X-number Joint Limb. The XJL is very similar to the TJL in that it too will have stretch, and FK to IK blending. The only difference is XJL allows you to have a specified number of joints you’d like to have for your set up.

Usage: Click on the X-number Joint Limb icon. Provide a name for the set up (e.g. tentacleA, dragonTail or antennae). Enter the number of joints you’ll need for the setup (e.g. 2, 5, 21). Then position each all placers created roughly where you’d like to have the joints and controllers created for you.
The last kind of setup is the Reverse Foot Limb. The RFL is again very similar to the TJL. The first three joints of the RFL works a lot like a regular TJL. The succeeding joints will form a control set up typical to most characters’ foot controls.

Usage: Click on the Reverse Foot icon. Provide a name for the set up (e.g. frontLeftHoof or leftLeg). Then position each placer created roughly where you’d like to have the joints created. You can also twist or rotate the bankIn, bankOut and ankle placers, so that the controllers would rotate properly once created.
2. Converting Placers into Setups
Once you’ve finished creating all your placers, modCharSetup now has most of the information it’ll need to generate your character. Your next step is to convert all the placers into their actual setups. But before you do so, it would be a good idea to save a copy of the scene, just so that you’ll have something to return to, if later you realize the positions you provided through the placers aren’t correct.
Converting placers into their respective setups is very easy. All you need to do is select any placer that belongs to a particular setup and hit the Create From Placer Icon. You can select multiple placers from multiple set ups, if you want. Executing the tool would convert all th automatically for you.
NOTE: Upon using the Create From Placer Tool, you’ll see that a bunch of new objects are created in the outliner. If you think it made your scene messy, please do not try cleaning up yet. Don’t even rearrange the objects’ hierarchies. Keep everything where they are for now. Each node created is important. If you follow the usage of the script all the way until end, you’ll see that the modCharSetup is well capable of cleaning up after itself.
3. Good Old parentConstraints
Once all the set ups are created, you’ll see that modCharSetup created a couple of things for you. Firstly, on your screen, all your controls are created. Try moving your controllers (most probably IK controllers and pole vectors) and you’ll see that everything is set up. Reverse foot controllers all have the necessary attributes that make foot blends and foot placings possible.
Secondly, in your outliner, you’ll see what looks like a huge mess of transform nodes created but actually is very orderly. There are sets of transform nodes (or groups) for each entity (or set up) you created. When I say entity, I mean each time you created a set of placers and gave it a name, that’s one entity. Each m ber of that entity, will have the name you provided upon creation as the first part of their name.
So all the m bers of an entity will be considered one set.
In each ‘set,’ there’s a transform node with name + “_skinJoints.” Like for an example “leftArm_skinJoints”. This node will contain all the joints that are for skinning and are associated to leftArm. There will be a transform node with name + “controllers.” Like for an example “leftArm_FK_Controllers”. This node will contain all the controllers that are for leftArm. There are other groups.
There will be a transform node with only the name you provided. This is a special node. We will call this node a pseudo parent. It is called pseudo parent because it is a fake parent. Move it around, rotate it. You’ll notice that it controls the set up that has its namesake. It acts like it is the true parent, even though, looking at the outliner shows it is clearly not.
Whenever we want a certain setup to follow a part of another setup, we make a joint from the other setup control this transform node, usually through a parentConstraint.
For a list of all groups, refer to the table below.
| Name Style |
Example Name |
| name |
leftArm |
| Your “pseudo parent.” Contains the FK-IK blend for TJL, XJL and RJL setups. Also serves as parent for th . You constrain this, you properly constrain the “entity”. |
| name + “_skin_GRP” |
leftArm_skin_GRP |
| Where all your joints for skinning are found. |
| name + “_FK_Controllers_GRP” |
leftArm_FK_Controllers_GRP |
| Where all your FK controllers are found. |
| name + “_IK_Controllers_GRP” |
leftArm_IK_Controllers_GRP |
| Where all your IK controllers are found. |
| name + “_RB_Controllers_GRP” |
ribbonForLeftArm_RB_Controllers_GRP |
| Where all Controllers for the Ribbon are found. |
| name + “_refJoint_GRP” |
ribbonForLeftArm_refJoint_GRP |
| Where reference joints for the ribbon controls are transferred to. |
| name + “donotdelete” |
leftArm_donotdelete |
| Where extra important stuff are hidden. |
| name + “donotdeleteribbon” |
ribbonForLeftArm__donotdeleteribbon |
| Where extra important stuff specific to ribbons are located. |
To do this, select a joint that you would like to serve as a parentConstraint target. Shift select the “pseudo” parent. Go to Animation Set–>Constraints–>Parent Constraint. Try it out. Do this for each setup you wish to be controlled by another. I’ll probably have a button for this in the future.
4. Ribbonize, Tie Ups and Hold Ups.

The Ribbonize Tool converts any number of joints and creates a ribbon control setup to live inside th . Ideally, the joints should be from the same hierarchy, but I’ve tried using this same tool to make ribbons spanning inter-hierarchies and still got to it to work. I’ll probably make distinctions in the future for this.
Just note, when you use the Ribbonize Tool, all affected joint hierarchies are transferred to another group called refJoints. You can still use some or all of th in your skinClusters. I wish I could offer a general rule, but these things really differ from case to case.

Usage: Select multiple joints from the same hierarchy. Execute the tool by clicking on it. Enter the name of the ribbon setup when prompted.
The Tie Up tool, as the name att pts to describe, ties everything up to create your character.

Usage: Select multiple objects from all the setups. Make sure at least one node is selected from each setup and no object outside your character is selected. Execute the tool by clicking on it. Enter the name of the character when prompted.
Earlier, I explained that all setups created by the modCharSetup are governed by “pseudo parents“. This is a very logical way to create our character. It is limited though in the sense that if there is nothing for the “pseudo parents” to connect to or follow, how then do we control th ? That’s where the Hold Up Tool comes in handy. For setups that follow nothing else but the root of your character, you can simply select any control or joint belonging to that setup and execute this tool. You’ll be given a controller just for that set up.

Usage: Select multiple controllers from the setups you’d like to hold up. Then Execute this tool by clicking on it. Provide a name for your control when prompted.
More Information
The three tools–Ribbonize, Tie Ups and Hold ups–may be used in any order (after the setups have been created). But ideally, Tie Ups is held until last. Also notice that you could use Ribbonize and Holdups multiple times, but Tie Ups can only be used once per character.
5. Magic Controls

After using the Tie Up Tool, you are done. From this point onwards, everything we do would simply be additional stuff. They are bonuses of a sort. You could skip this part if you want, but let me tell you, this particular step is easy and the returns of which is most rewarding and impressive.
The entire idea behind these magic controls is that you’ll have a selection UI similar to the one described in “Fast, Easy, Flexible Selection UI.” To do this, you set up controllers that act in a way you’d like your extensions to.
An example of this is to create a curve. Group it. And make its group constrained to the persp camera via a parentConstrarint. Now where ever and how ever you move your persp camera, these controllers would always follow.
Then select the control curve you’d like to have an extension to, like for an example the head control, and then shift select the curve you just created that is following the camera and hit the Magic Control Button.
You’ll notice that the extension curve still follows the camera everywhere. But now whenever you select it, you effectively select the head control as well, as if they are one and the same thing.