3ds Max CAT および MAXScript

3ds Max 2011 で導入されて 3ds Max 2013 でリファクタリングされた 3ds Max CAT (CAT は Character Animation Tools の略)は、高度なカスタマイズも可能なキャラクタ アニメーション用の強力なプラットフォームを提供します。この製品の特徴は、スクリプトへのアクセス性の高さです。

3ds Max CAT への MAXScript アクセス

3ds Max CAT では、キャラクタのリグがコントローラおよびオブジェクトの階層として実装されます。

階層の操作、サブアニメーションへのアクセス、コントローラ プロパティの取得、設定および検査における標準 MAXScript の呼び出し規則はすべて 3ds Max CAT で機能します。

*3ds Max CAT *関数公開インタフェースでは、C++ で記述されたオブジェクトへのアクセスで MAXScript の使用を可能にするプロパティ、メソッド、アクションが公開されます。 多様なタイプのオブジェクトで同様のインタフェースの公開が可能であるため、オブジェクトで同様の MAXScript 公開を共有することができます。その例として、CATRig のすべてのコントローラがインタフェース ICATControlFPInterface を提供することが挙げられます。

HubTrans など、より特化したコントローラは、そのタイプのコントローラに関連する関数のみを公開するインタフェースを追加で提供することができます。

コントローラおよびオブジェクトで利用可能な関数を確認するために、2 つの異なる MAXScript 呼び出しを使用することができます。

構文

ShowProperties <MaxObject>
Show <MaxObject>--alternative

Show() または ShowProperties() を使用して、オブジェクトまたはコントローラで利用可能なプロパティを確認します。

ShowInterfaces <MaxObject>

ShowInterfaces() を使用して、オブジェクトまたはコントローラで利用可能な関数、メソッドおよびプロパティを確認します。

例:

    ShowProperties $Character001
    .CATMode : integer
    .CATName : string
    .CATUnits : float
    .ColourMode : integer
    .LengthAxis : string
    .Node : node
    .RootHub : control
    .CATVersion : integer
    .CATRigSpace : matrix3
    .CATRigNodes : node by value array
    .CATRigLayerCtrls : control by value array
    .RootTransformNode : node
    .NumLayers : integer
    .SelectedLayer : integer
    .SoloLayer : integer
    .TrackDisplayMethod : integer
    .Layers : float
    false

    ShowInterfaces $Character001
    Interface: CATParentFPInterface
    Properties:
    .CATMode : integer : Read|Write|Validated by Validator function
    .CATName : string : Read|Write
    .CATUnits : float : Read|Write|Validated by Validator function
    .ColourMode : integer : Read|Write
    .LengthAxis : string : Read|Write|Validated by Validator function
    .Node : node : Read
    .RootHub : control : Read
    .CATVersion : integer : Read
    .CATRigSpace : matrix3 : Read
    .CATRigNodes : node by value array : Read
    .CATRigLayerCtrls : control by value array : Read
    .RootTransformNode : node : Read
    Methods:
     <void>AddHub()
     <boolean>LoadRig <string>filename
     <boolean>SaveRig <string>filename
     <node>GetBoneByAddress <string>Address
     <void>UpdateUserProps()
     <void>AddRootNode()
    Actions:
    Interface: LayerRootFPInterface
    Properties:
    .NumLayers : integer : Read
    .SelectedLayer : integer : Read|Write
    .SoloLayer : integer : Read|Write
    .TrackDisplayMethod : integer : Read|Write
    Methods:
     <integer>AppendLayer <string>name <name>method
    method Validated by Validator function
     <boolean>InsertLayer <string>name <integer>layerID <name>method
    method Validated by Validator function
     <void>RemoveLayer <integer>layerID
     <void>MoveLayerUp <integer>layerID
     <void>MoveLayerDown <integer>layerID
     <boolean>SaveClip <string>filename <time>starttime <time>endtime <integer>startlayer <integer>endlayer
     <boolean>SavePose <string>filename
     <node>LoadClip <string>filename <time>starttime scaledata: <boolean> transformdata: <boolean> mirrordata: <boolean> mirrorworldX: <boolean> mirrorworldY: <boolean>
    scaledata default value: true
    transformdata default value: true
    mirrordata default value: false
    mirrorworldX default value: false
    mirrorworldY default value: false
     <node>LoadPose <string>filename <time>starttime scaledata: <boolean> transformdata: <boolean> mirrordata: <boolean> mirrorworldX: <boolean> mirrorworldY: <boolean>
    scaledata default value: true
    transformdata default value: true
    mirrordata default value: false
    mirrorworldX default value: false
    mirrorworldY default value: false
     <string>CreatePasteLayerTransformNode()
     <string>GetFileTagValue <string>filename <string>tag
     <boolean>LoadHTR <string>filename <string>camfile
     <boolean>LoadBVH <string>filename <string>camfile
     <boolean>LoadFBX <string>filename <string>camfile
     <boolean>LoadBIP <string>filename <string>camfile
     <void>CollapsePoseToCurLayer()
     <boolean>CollapseTimeRangeToLayer <time>StartTime <time>Endtime <time>Frequency regularplot: <boolean> NumPasses: <integer> PosDeltaThreshold: <float> RotDeltaThreshold: <float>
    regularplot default value: false
    NumPasses default value: 2
    PosDeltaThreshold default value: 1.0
    RotDeltaThreshold default value: 5.0
     <void>CopyLayer <index>LayerID
     <void>PasteLayer Instance: <boolean> CopyLayerInfo: <boolean>
    Instance default value: false
    CopyLayerInfo default value: true
    Actions:
    OK

インタフェースによって公開されたプロパティが ShowProperties() 呼び出しの結果として表示されていることに注目してください。

次を呼び出すこともできます。

ClassOf <MaxObject>

これによって、特定のオブジェクトのクラス名が返されます。

CATRig のコントローラ ツリー階層内にあるボーンを表す 3ds Max CAT ボーン オブジェクトの変換コントローラにアクセスするには、次の構文を使用します。

$<NodeName>.transform.controller

同様の内容を次の簡易的な方法で呼び出すことができます。

$<NodeName>[3].controller

または、変換コントローラにアクセスする専用変数がCAT ボーン オブジェクトによって提供されるため、次の呼び出しも可能です。

$<NodeName>.TMcontroller