MAXScript Extensions > MAXScript Extensions for 3ds Max CAT >

# MAXScript Access To CATRigs

| 3ds Max CAT - Quick Navigation

The following page provides an overview of the various major components of the 3ds Max CAT animation system, their Function Publishing Interfaces and possible MAXScript access approaches.

## CATParent

The CATParent Helper Object stores the common shared information about a character rig including the name of the rig and the [CATUnits Ratio] value.

It also holds the layers system details including the name of each layer and its global weight.

It provides some useful arrays listing all controllers and all nodes used in the rig for fast iterations through all components using MAXScript.

The CATParent exposes the following two Function Publishing Interfaces:

Interface: CATParentFPInterface

Interface: LayerRootFPInterface

In order to create a new character using a pre-saved Rig file, one could simply create a new CATParent Helper and call the LoadRig() function of the CATParentFPInterface:

EXAMPLE
    theParent = CATParent()--create a new CATrig parent:
    $Object:Character001 @ [0.000000,0.000000,0.000000]
    theParent.LoadRig (GetDir #plugcfg +"\\CAT\\CATRigs\\Marine\\Marine.rg3")
    true
    theParent--note that loading a rig deletes the original parent!
     <Deleted scene node>

| 3ds Max CAT - Quick Navigation

## CATControl

3ds Max CAT can be describe dasa hierarchy of controllers andnodes. Each bone is represented by a controller (CATControl) managingthe bone's behavior, animation and functionality, and a CATBone scene object used mainly for display, Skin Deformations and rendering purposes.

Every bone controller in the CATRig structure exposes the CATControlInterface. This means that every bone can return the CATParent and a name and can be used to save or load clip files or paste a layer.

You can use the .CATPatent property exposed by the CATControlInterface to access the CATParent from any CATBone. In other words, if you have a pointer to a finger or an arm bone, you can easily find out the CATParent and perform all the loading, saving and layer operations using it.

EXAMPLE
    theParent =$MarineLUpperarm2[3].CATParent--get the parent from the control
    $Object:Marine @ [0.000000,0.000000,0.000000]
    theParent.loadRig(getDir #plugcfg+"\\CAT\\CatRigs\\Marama\\Marama.rg3")
    true

Every bone controller also exposes the CATNodeControlFPInterface interface which provides properties and methods related to arbitrary bones management, transformation matrix access in various coordinate systems etc.

The ExtraRigNodesInterface lets you ad dand remove extra rig nodes and access the array of extra rig nodes.

You can always access the corresponding scene node of a bone controller by using its .node property:

EXAMPLE
If you have a bone selected that has extra bones added to it, like a head bone that has facial bones, you can use the following:
    theHeadCtrl =$MarineHead[3]--get the Head's controller:
    theArbBone = theHeadCtrl.GetArbBone 1--get its first arbitrary bone:
    theArbBone.node--get the scene node of that bone:
You will now have the node of the first extra bone that is attached to the head bone.

Note

Internally, an "Extra" bone is called an "Arb" (shot for "Arbitrary") bone.

An ArbBone has no predefined use, unlike digit, limb, spine or tail bones which provide respective built-in behavior to simulate fingers, arms, legs, spines and tails.

## Hubs

The Hub is a special bone where multiple specialized bone groups like limbs, spines and tails can be connected to the rig.

The Hub bone exposes a unique HubFPInterface for features available only to Hubs. This includes the adding of spines, arms, legs and tails.

## Limbs

Limbs are bones dedicated to the creation of arms and legs.

All Limb Bone controllers expose the following Interfaces:

Interface: LimbFPInterface

Interface: CATControlInterface

## Tails

Tail bone controllers are dedicated to the creation of tails.

The TailTrans controller expose the following Interfaces:

Interface: CATControlInterface

Interface: CATNodeControlFPInterface

Interface: ExtraRigNodesInterface

## CATObjects

All CATBones use a CATObject to display their geometry in the viewport.

The CATObject exposes the CATObjectFPInterface which provides control over the custom mesh display.

| 3ds Max CAT - Quick Navigation

#### See Also

- 3ds Max CAT and MAXScript