3ds Max オブジェクトでのアニメート可能なプロパティへのアクセス

名前付きプロパティ アクセスを使う代わりに、3ds Max オブジェクト値にインデックスを付けて配列のように扱い、トラック ビューでトラックとして表示できるオブジェクト内のアニメート可能プロパティにアクセスすることができます。

これにより、オブジェクト内のすべてのアニメート可能プロパティを反復するタスクや、リスト コントローラ内など、一意の名前を持たないサブコントローラにアクセスするタスクなどを単純化できます。

プロパティ

<maxwrapper_object>.numSubs : Integer, read-only     

オブジェクト内のアクセス可能な SubAnim、またはトラックの数を生成します。これは直接の子 subAnims の数であり、トラック ビュー内でまだ表示できないトラック(ノード上の可視性トラック、または FFD 内のアニメートされていない頂点など)が含まれることもあります。このプロパティは、どの MAXWrapper サブクラスに対しても機能します。

メソッド

getSubAnimName <maxwrapper_object> <index> [asString:<bool>] [localizedName:<bool>]

指定された MAXWrapper のインデックス付き subAnim の名前を返します。

オプションの asString キーワードが指定され、true に設定されている場合、名前を文字列で返します。false に設定されているか、指定されていない場合は、名前値を返します。

3ds Max 2022 の新機能: localizedName キーワード パラメータが true (既定値)の場合、UI に表示される名前が返されます。それ以外の場合は、ローカライズされていない名前が返されます。

getSubAnimNames <maxwrapper_object> [localizedNames:<bool>]

subAnim インデックス順で名前の配列を返します。

3ds Max 2022 の新機能: localizedNames キーワード パラメータが true (既定値)の場合、UI に表示される名前が返されます。それ以外の場合は、ローカライズされていない名前が返されます。

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(). を使用して取得した名前です。

SubAnim クラス

MAXScript は SubAnim クラスを定義します。SubAnim クラスのインスタンスは、サブ アニメート可能に対して一般的な描写を提供します。3ds Max オブジェクト上でインデックス演算子を使用すると、必ず SubAnim インスタンスが返されます。

例:

    $box01[3] -> SubAnim:Transform

通常、ノード内の 3 番目の SubAnim は変換トラックです。

プロパティ

<subAnim>.name : String, read-only

トラックビューに表示されるトラック subAnim の名前を返します。

<subAnim>.parent : Node, read-only

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]

回転トラック SubAnim を生成します。[3] は、常に変換トラックであり、その中の 2 番目のトラックは常に回転トラックであるためです。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