CAT, short for Character Animation Toolkit, is a flexible and easy-to-use character animation system for 3ds Max.
CAT lets you quickly create custom rigs and then control them using a layer-based animation system and seamless IK-FK blending.
It can be combined with Maya or MotionBuilder's HumanIK toolset, which features robust full-body IK and retargeting systems,
to produce animations more efficiently.
In this movie, we'll show you how to send a CAT rig to HumanIK and back, while simultaneously avoiding interoperability pitfalls.
For a broader, in-depth look at animating exclusively in CAT, refer to the "Using CAT" series,
available in the Character Animation playlist of the 3ds Max Learning channel.
Let's start in 3ds Max. Create a new CAT rig in the scene using the "BaseHuman" template.
Set the CATUnits Ratio to 1.
With the parent node selected, and the Select and Move tool active,
zero out its Move transform values by right-clicking the Coordinate Display fields' spinner arrows.
While CAT allows you to create any type of rig structures, HumanIK is predominantly designed for bipedal characters.
Thus in order for HumanIK to understand your CAT rig, it must have two arms, two legs, a pelvis, a spine, and a head.
As long as this requirement is met, any additional joints, such as wings or tails,
will be transferred as standard joints so you can animate them separately.
Now before you transfer this CAT rig to HumanIK, there are a few ground rules to be mindful of:
Every time you send your rig from one product to another, FBX acts as an interoperability bridge to preserve your data during transfer.
It's important that during this transfer session, you don't rename your skeleton hierarchy.
Doing so will break the joint mapping information that FBX establishes initially, which will compromise results once your data comes back.
For example, notice the naming convention of your CAT rig.
While 3ds Max and MotionBuilder support spaces in object names, Maya does not.
In order to preserve the interoperability bridge, FBX automatically replaces these spaces with their ASCII code.
If you were to rename your character in Maya to remove this ASCII code,
it would compromise this bridge once you send this character back to 3ds Max.
To avoid seeing these ASCII placeholders, let's rename the CAT rig's hierarchy in 3ds Max, before we even send it over.
Select the root helper and in the Modify panel, rename it to "CATrig_". This applies the new name to each joint.
Next, you need to set up your CAT rig in a HumanIK-preferred T-stance pose.
Abiding by this reference pose is the best way to ensure that HumanIK understands your skeleton's structure
once you export your CAT rig to Maya or MotionBuilder.
During an export, a skeleton definition based on this reference pose is created from your CAT rig, which HumanIK relies on.
We'll come back to this in a little bit in the HumanIK portion of this tutorial.
By default, your CAT rig matches more of an A-stance, so let's adjust it to comply with the HumanIK T-stance pose.
Rotate the left upper arm to 180 degrees in the X axis, and 0 degrees in both the Y and Z axes.
Apply the same rotation values to the left forearm.
Rotate the left palm to 90 degrees in the X axis, and 0 degrees in both the Y and Z axes.
To mirror these changes to the right arm, select an arm joint, and in the Modify panel under Limb Setup, click Copy Limb Settings.
Then select a right arm joint and click Paste/Mirror Limb Settings.
Select both the feet's IK platforms and move them to -7.5 units in the Y axis and -2.5 in the Z axis to straighten the legs.
By default, this CAT rig has IK targets for its feet only, so let's create some for its palms as well.
In the Motion panel under Limb Animation, click Create IKTarget to add a point helper to serve as the IK goal for the arm.
Repeat this for the other palm.
The last requirement for compatibility is specific to the Spine Control for the spine and neck joints.
It is currently set to Procedural, which means that the shape of the spine and neck are defined by an algorithm
as opposed to standard Position/Rotation/Scale (PRS) controllers.
When 3ds Max exports a CAT rig, FBX bakes down each of these procedurally-controlled joints to keyframed rotation values.
However, once 3ds Max receives the CAT rig back,
FBX takes these keyframed values and converts them back to CAT's procedural system,
which may result in slight differences in the resulting animation.
You can avoid these discrepancies by setting the Spine Control to Keyframed.
Now, the data you send back and forth will be much more accurate.
A warning dialog prompts you of the conversion and the impact of the rig. Click Yes.
Repeat this with the neck joint.
You can export your CAT rig using either the Send To commands or the standard FBX export process.
If you have 3ds Max 2013, Maya 2013, and MotionBuilder 2013 installed on the same machine,
using a Send To command leads to a more streamlined workflow.
Let's send our rig to Maya. First select any joint from your CAT rig hierarchy, and go to Send to > Send to Maya > Send as New Scene.
This selects and exports your entire CAT rig, along with its IK targets.
It automatically creates a skeleton definition from your CAT rig's current T-stance pose.
Alternatively, using the standard export process, you need to select the entire joint hierarchy beforehand.
In the FBX Export dialog, make sure you use the following settings:
Set the FBX plug-in version to 2013.
Turn on the "Bake Animation" option if you plan on sending an animated rig.
Turn on the "CAT Characters as HIK" option to create a HumanIK skeleton definition in the output FBX file.
With this turned on you can avoid having to create a skeleton definition manually after.
In Maya, the incoming CAT rig is read as a standard joint hierarchy.
Open the Outliner and select and hide the IK targets for both hands and feet since we don't need them here.
Notice that each joint is baked down to a key per frame.
FBX does this as a precaution during a Send To transfer, whether your CAT rig was animated or not beforehand.
To access the HumanIK toolset, go to Window > Animation Editors > HumanIK.
The HumanIK Character Controls load as a side panel that you can toggle via its tab, as well as detach as a modeless window.
A new HumanIK character has automatically been created from the skeleton definition exported from 3ds Max.
Click the Definition tab to display the character's joint mapping information based on that same skeleton definition.
The green validation status confirms that HumanIK fully understands the character's structure.
Depending on how you set up your CAT rig's T-stance,
you may instead get a warning indicating that HumanIK still understands your skeleton, but with some reservations.
For example, if you had left your CAT rig in an A-stance pose before exporting it,
HumanIK would color the arms' nodes orange to indicate differences from the expected pose.
These differences come into play if you plan to use the HumanIK retargeting solver to drive your character using another as a source.
A warning status in your skeleton definition can lead to offsets in the retargeted animation.
Let's retarget some motion capture onto your character.
From the Character menu, set your current character to "--None--".
This switches you to the Start pane, where you can create new skeletons and control rigs,
as well as define existing ones using new skeleton definitions.
Click Mocap Example to open the Visor,
which contains a collection of example scenes and asset resources that come with your Maya installation.
Here, in the Mocap Examples tab, Middle-mouse drag the "dance2.ma" item to the workspace to import it to your scene.
This new mocap character is automatically listed in the Character menu
since it already contains a skeleton definition that HumanIK understands.
This new character is much larger than yours. However, retargeting works regardless of the scale difference between characters.
That said, if you want to see both characters more clearly,
you can scale down the mocap character a bit using the reference node's scale attribute.
To retarget the mocap character's animation onto your character, first set "CATrig__Character" as the current character.
Then from the Source menu, choose "MocapExample".
The mocap character now drives your character's motion like a puppet.
From here, you could adjust the retargeting between your character and the mocap source on a per-limb basis
using each effector's IK Blend and Pull attributes.
For a complete list of retargeting-specific attributes, go to Edit > Definition > Edit Properties.
You could also make further changes to this retargeted animation by baking it onto a full-body IK control rig.
However, for the scope of this tutorial, we'll leave the animation as is.
If we were to send our CAT rig back to 3ds Max now,
the mocap character would also come along since it currently acts as a retarget source.
To break this link, we'll bake the animation to our CAT rig's skeleton.
With "CATrig__Character" set as the current character, go to Bake > Bake To Skeleton.
Before you import your data back to 3ds Max, make sure that your CAT rig is set to Setup mode.
This ensures that 3ds Max properly evaluates the data coming back, especially if it applies to extra joints on your CAT rig's structure.
Now to export your character, select any joint from its hierarchy and click the Update button at the bottom right of the Maya Interface.
This is the same as using File > Send to 3ds Max > Update Current Scene.
If you're using the standard export process, select the "CATrig_" reference locator and "CATrig_Pelvis" joint beforehand.
3ds Max imports the animation back onto the original CAT rig based on each joint's name.
You'll notice that the IK controllers on the CAT rig's palms and feet are still active, and not merged down to an FK-only solution.
This is because the imported HumanIK animation contains both IK and FK data,
which is transferred to the corresponding IK controllers you previously enabled.
A new "Take 001(HIK)" layer stores the incoming data.
Each subsequent transfer between applications will result in an additional layer.
Conversely, if you use animation layers in Maya, all active layers are baked on export to a single CAT layer.
At this point, you can further your animation by adding adjustment layers to tweak your existing poses.
You can also add a CAT Motion layer to create new procedural animations that you can then blend to your motion.