名前付きプロパティ アクセスを使う代わりに、3ds Max オブジェクト値にインデックスを付けて配列のように扱い、トラック ビューでトラックとして表示できるオブジェクト内のアニメート可能プロパティにアクセスすることができます。
これにより、オブジェクト内のすべてのアニメート可能プロパティを反復するタスクや、リスト コントローラ内など、一意の名前を持たないサブコントローラにアクセスするタスクなどを単純化できます。
プロパティ
<maxwrapper_object>.numSubs : Integer, read-only
オブジェクト内のアクセス可能な SubAnim、またはトラックの数を生成します。これは直接の子 subAnims の数であり、トラック ビュー内でまだ表示できないトラック(ノード上の可視性トラック、または FFD 内のアニメートされていない頂点など)が含まれることもあります。このプロパティは、どの MAXWrapper サブクラスに対しても機能します。
メソッド
getSubAnimName <maxwrapper_object> <index> [ asString:<Boolean> ]
指定された MAXWrapper のインデックス付き subAnim の名前を返します。
オプションの asString キーワードが指定され、 true に設定されている場合、名前を文字列で返します。 false に設定されているか、指定されていない場合は、名前値を返します。
getSubAnimNames <maxwrapper_object>
subAnim インデックス順で名前の配列を返します。
getSubAnim <maxwrapper_object> <index>
インデックスで指定された SubAnim を返します。次のインデックス演算子を参照してください。
演算子
<maxwrapper_object>[<index_number>|<subanim_name>]
指定されたインデックスまたは名前を持つ最初の subAnim を返します。インデックス オペレータ [<index_number>] を任意の MAXWrapper オブジェクト(ノード、モディファイヤ、コントローラ、マテリアルなど)に適用できます。SubAnim にアクセスできます。
例: |
for i in 1 to $foo.numSubs do print $foo[i] -- iterate them $bar.position.controller[3] -- third subAnim in a position list controller ffd_mod[i].value -- position of i'th FFD control point |
インデックス演算子は読み込み専用なので、SubAnim を設定することはできません。
インデックスの代わりに、subanim 名を使うこともできます。これは、文字列や名前の値を生成する、任意の式です。3ds Max 4 より前のリリースでは、subAnim の位置でノードに入るには、変形 subanim に対してインデックス 3、位置 subanim に対して 1 を記憶しておく必要がありました。
$foo[3][1] -- position within transform within node |
代わりに、次を使うことができます。 |
$foo[#transform][#position] |
使用できる名前は、トラック ビューに表示されている名前、または関数 getSubAnimName() や getSubAnimNames() を使用して取得した名前です。
MAXScript は SubAnim クラスを定義します。SubAnim クラスのインスタンスは、サブ アニメート可能に対して一般的な描写を提供します。3ds Max オブジェクト上でインデックス演算子を使用すると、必ず SubAnim インスタンスが返されます。
例: |
$box01[3] -> SubAnim:Transform |
通常、ノード内の 3 番目の SubAnim は変換トラックです。
プロパティ
<subAnim>.name : String, read-only
トラックビューに表示されるトラック subAnim の名前を返します。
<subAnim>.parent : Node, read-only
subAnim を実際に所有するオブジェクトは、subAnim の作成時に指定されたオブジェクトとは異なる場合があります。
また、MAXScript では特定の種類の subAnims を非表示にするため、それに含まれる subAnim を自動的に上位に上げることになります。
例: |
s=sphere() sa = s.baseobject[1] --> SubAnim:Radius sa.parent --> ReferenceTarget:ParamBlock sa.index --> 1 --The actual owner of the Radius subAnim is the sphere's parameter block. |
<subAnim>.index : Integer, read-only
subAnim のインデックスを返します。
<subAnim>.value : Value
トラック SubAnim の現在の値であり、 <controller>.value と同じです。適切な値が存在しない場合、またはトラックにコントローラがまだ割り当てられていない場合は、 undefined を返します。 .value プロパティは、現在の MAXScript 時間での値を生成します。この値に割り当てて、その時点でのトラックの値を設定することができます。
<subAnim>.controller : Controller
トラック SubAnim のコントローラです。コントローラがまだ割り当てられていない場合や、SubAnim がアニメート可能でない場合、 undefined を返します。コントローラの SubAnim の .controller プロパティを割り当てることによって、新規コントローラをトラックに割り当てることができます。
<subAnim>.keys : KeyArray, read-only
そのトラックのキー配列を生成するか、キー可能でない場合やコントローラがまだ割り当てられていない場合は undefined を返します。このプロパティは、読み込み専用です。
<subAnim>.isAnimated : Boolean, read-only
アニメートされたコントローラが存在する場合は、 true を生成します。このプロパティは、読み込み専用です。
<subAnim>.object : MAXWrapper, read-only
SubAnim オブジェクトを生成します。割り当てられていない場合は、 undefined を返します。このプロパティは、読み込み専用です。 .object プロパティは、親オブジェクトが決定したプロパティのタイプに応じて、どんな種類の MAXWrapper オブジェクトでも返すことができます。たとえば、 <node>[1].object は、可視性コントローラを返し、まだ割り当てられていない場合は undefined を返します。 <node>[2].object は、ノードにバインドされたスペース ワープのバインドを含み、何もバインドされていない場合は undefined です。 <node>[3].object は、変換コントローラです。 <node>[4].object はノードのオブジェクトであり、モディファイヤが存在する場合は修正されたオブジェクト、存在しない場合は基本オブジェクトです。 <node>[5].object は、ノードに割り当てられたマテリアルで、マテリアルが割り当てられていない場合は undefined です。 <node>[6].object は イメージ モーション ブラー マルチプライア コントローラで、まだ割り当てられていない場合は undefined です。
例 |
b = box() b[4].object -- returns a reference to the Box base object |
<subAnim>.numSubs : Integer, read-only
SubAnim の直接の子の数です。
シーン ノード可視性トラックなどのコントローラをまだ割り当てられていない特定の subAnim の .value 、 .numSubs 、 .category などの subAnim プロパティにアクセスすると、これらのプロパティは 0 などの null 値を返すか、該当する場合は undefined を返します。
メソッド
getSubAnim <subAnim> <index>
インデックスで指定された SubAnim を返します。次のインデックス演算子を参照してください。
演算子
<subAnim>[<index_number>]
インデックスで指定された SubAnim を返します。SubAnim 自体の中にインデックスを付けることにより、ネストされた SubAnim (ネストされたトラック)全体を通して作業することができます。
例 |
$box01[3][2] |
<node>[3] は、常に変換トラックであり、その中の 2 番目のトラックは常に回転トラックであるため、これは回転トラック SubAnim を生成します。SubAnim にインデックスを付けると、常に別の SubAnim が生成されます。3ds Max SDK の SubAnim に慣れている場合は、MAXScript SubAnim が、トラック ビューに表示された構造を反映しながら、隠された SubAnim レベルから自動的に下降することに注意してください。 |
次のように基本オブジェクトにインデックスを付けると、基本オブジェクトのトラック ビュー パラメータで取得できます。
b=box() getSubAnimNames b[4] -- returns #(#length, #width, #height, ...) b[4][2].value -- returns current width value i = 3 b[4][i].controller = float_list() -- assign height controller