float_list : floatController
point3_list : point3Controller
position_list : positionController
rotation_list : rotationController
scale_list : scaleController
コンストラクタ
float_list ...
point3_list ...
position_list ...
rotation_list ...
scale_list ...
リスト コントローラは、複数のコントローラを組み合わせて 1 つの効果を生成します。内部に組み込んだコントローラの処理順序を管理するツールを備えた合成コントローラです。内部コントローラは、上から下の順序で評価されます。したがって、リストの最上部のコントローラが最初に評価されます。単一のサブコントローラの負担を重み付けして、アニメーションのミキシングを可能にすることができます。
パラメータにリスト コントローラを割り当てると、現在のコントローラはそのリスト コントローラの 1 つ下のレベルに移動して、割り当てたコントローラがリストの最初のコントローラになります。2 番目のパラメータはそのリスト コントローラの下に追加され、[使用可能]という名前が付けられます。このパラメータは、リストに追加する次のコントローラ用の空のプレースホルダです。
[プロパティ]
.weight ArrayParameter default: #() -- float array
サブコントローラの重み値の配列
.average Boolean default: false -- boolean; Average_Weights
重みの平均化を制御します。
CDF
available
プロパティには、「ファントム」コントローラが入っている
controller
プロパティがあります。コントローラをリスト コントローラに追加するには、コントローラを
available.controller
プロパティに割り当ててください。次のスクリプトでは、コントローラを作成して、それをリスト コントローラに追加する例を示します。
リスト コントローラのプロパティ リストには、リスト コントローラ内の (存在する場合) サブコントローラも含まれます。これらのコントローラのタイプは、リスト コントローラのタイプによって決まります。たとえば、float_list には、任意の数の
bezier_float コントローラを含めることができます。
例
|
=float_list ()-- リスト コントローラを作成します。
showproperties p-- プロパティを表示します。
p.available.controller-- 「ファントム」コントローラ
p1=bezier_float ()-- 新規のベジェ浮動小数点コントローラを作成します。
p.available.controller=p1-- それをリスト コントローラに追加します。
p2=bezier_float ()-- 新規のベジェ浮動小数点コントローラを作成します。
p.available.controller=p2-- それをリスト コントローラに追加します。
getpropnames p-- リスト コントローラのプロパティを表示します。
showproperties p-- リスト コントローラのプロパティを表示します。
p.numSubs-- リスト コントローラの subAnim の数です。
getsubanimnames p-- リスト コントローラの subAnim の名前を表示します。
p[2].object-- 2 番目のベジェ浮動小数点コントローラを取得します。
|
出力
|
Controller:Float_List-- 1 行目の結果です。
.weight : float array
.average (Average_Weights) : boolean
.available : float-- 2 行目の出力
false-- 2 行目の出力
Controller:-- 3 行目の結果 (「ファントム」コントローラ)
Controller:Bezier_Float-- 4 行目の結果
Controller:Bezier_Float-- 5 行目の結果
Controller:Bezier_Float-- 6 行目の結果
Controller:Bezier_Float-- 7 行目の結果
#(#weight, #average, #bezier_float, #available)-- 8 行目の結果
.weight : float array-- 9 行目の出力
.average (Average_Weights) : boolean-- 9 行目の出力
.bezier_float : float-- 9 行目の出力
.bezier_float : float-- 9 行目の出力
.available : float-- 9 行目の出力
false-- 9 行目の出力
4-- 10 行目の結果
#(#bezier_float, #bezier_float, #available, #Weights)-- 11 行目の結果
Controller:Bezier_Float-- 12 行目の結果
OK
|
例
|
lst = $.pos.controller-- これがリスト コントローラの場合、
showInterfaces lst-- インタフェース名は「list」です。
|
リスト コントローラ インタフェース:
プロパティ
このプロパティには、リスト コントローラ リスト ボックスに表示される項目数が含まれます。
.active: index : Read|Write
現在アクティブな項目のインデックスを取得/設定します。
メソッド:
このメソッドは、リスト コントローラ リスト ボックスに表示される項目数を返します。
<void>setActive <index>listIndex
このメソッドを使って、リストのインデックス付き項目をアクティブにできます。その項目のパラメータはモーション パネルに表示され、すべての入力はインデックス付きサブコントローラに送られます。
<index>listIndex: アクティブな項目として設定する項目のインデックス。
このメソッドは、現在アクティブな項目のインデックスを返します。
<void>delete <index>listIndex
このメソッドにより、インデックス付きのサブコントローラをリストから削除できます。
<index>listIndex: リストから削除する項目のインデックス。
<void>cut <index>listIndex
このメソッドにより、インデックス付きのサブコントローラをリストから削除して、後で貼り付けられるようにバッファに保存できます。
<index>listIndex: カットする項目のインデックス。
<void>paste <index>listIndex
このメソッドにより、バッファのサブコントローラを、リスト内のインデックス付きスロットに貼り付けることができます。
<index>listIndex: 貼り付け先のスロットのインデックス。
<string>getName <index>listIndex
このメソッドは、ユーザ定義の名前が存在しない場合に、インデックスで指定されたサブコントローラのクラス名を返します。
<index>listIndex: 名前を取得する項目のインデックス。
<void>setName <index>listIndex<string>name
このメソッドにより、インデックス付きの項目の名前を設定できます。
<index>listIndex : 項目のインデックス。
<string>name: 設定する名前。
本製品に付属の SDK ヘルプ ファイルの「Class IlistControl」も参照してください。
例
|
b = Box lengthsegs:1 widthsegs:1 heightsegs:1 length:65.7611 width:32.0211 height:39.8261 pos:[-15.6972,-84.9615,0] isSelected:on
b.pos.controller = position_list ()
b.pos.controller.Available.controller = Position_XYZ ()
b.pos.controller.Available.controller = tcb_position ()
b.pos.controller.Available.controller = bezier_position ()
lst = b.pos.controller-- リスト コントローラ
showInterfaces lst-- インタフェース名は「list」です。
lst.getCount()-- カウント関数
lst.count-- カウント プロパティ (読み込み専用)
lst.SetActive 3-- アクティブ関数を設定します。
lst.GetActive()-- アクティブ関数を取得します。
lst.active-- アクティブ プロパティ
lst.cut 2-- 2 番目のサブコントローラを切り取ります。
lst.paste 1-- 切り取ったサブコントローラをリストの最上部に貼り付けます。
lst.delete lst.count-- 最後から 2 番目のサブコントローラを削除します。
lst.setName 2 "My Bezier"-- sets 2 番目のサブコントローラの名前を設定します。
lst.getName 2-- サブコントローラの名前を取得します。
|
ListCtrl メソッド
次のメソッドは、バージョン 4 より前の 3ds Max で使用できました。これらは、以前との互換性のためにサポートされていますが、機能は上で説明されている新しいメソッドに引き継がれています。
listCtrl.getName <list_controller> <index_integer>
リスト コントローラにあるインデックスで指定されたサブコントローラの名前を返します。
listCtrl.setName <list_controller> <index_integer> <string>
リスト コントローラにあるインデックスで指定されたサブコントローラの名前を設定します。文字列が NULL 文字列 ("") の場合、既定のコントローラ名が使用されます。
listCtrl.getActive <list_controller>
リスト コントローラにあるアクティブなサブコントローラのインデックスを返します。
listCtrl.setActive <list_controller> <index_integer>
リスト コントローラにあるインデックスで指定されたサブコントローラをアクティブなコントローラとして設定します。