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 : TSTR by value
.CATUnits : float
.ColourMode : integer
.LengthAxis : TSTR
.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 : TSTR by value : Read|Write
.CATUnits : float : Read|Write|Validated by Validator function
.ColourMode : integer : Read|Write
.LengthAxis : TSTR : 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 <TSTR>filename
<boolean>SaveRig <TSTR>filename
<node>GetBoneByAddress <TSTR by value>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 <TSTR>name <name>method
method Validated by Validator function
<boolean>InsertLayer <TSTR>name <integer>layerID <name>method
method Validated by Validator function
<void>RemoveLayer <integer>layerID
<void>MoveLayerUp <integer>layerID
<void>MoveLayerDown <integer>layerID
<boolean>SaveClip <TSTR>filename <time>starttime <time>endtime <integer>startlayer <integer>endlayer
<boolean>SavePose <TSTR>filename
<node>LoadClip <TSTR>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 <TSTR>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
<TSTR>CreatePasteLayerTransformNode()
<TSTR>GetFileTagValue <TSTR>filename <TSTR>tag
<boolean>LoadHTR <TSTR>filename <TSTR>camfile
<boolean>LoadBVH <TSTR>filename <TSTR>camfile
<boolean>LoadFBX <TSTR>filename <TSTR>camfile
<boolean>LoadBIP <TSTR>filename <TSTR>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() 呼び出しの結果として表示されていることに注目してください。
次を呼び出すこともできます。
これによって、特定のオブジェクトのクラス名が返されます。
CATRig のコントローラ ツリー階層内にあるボーンを表す 3ds Max CAT ボーン オブジェクトの変換コントローラにアクセスするには、次の構文を使用します。
$<NodeName>.transform.controller
同様の内容を次の簡易的な方法で呼び出すことができます。
$<NodeName>[3].controller
または、変換コントローラにアクセスする専用変数がCAT ボーン オブジェクトによって提供されるため、次の呼び出しも可能です。