リスト コントローラ
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
番目のパラメータはそのリスト コントローラの下に追加され、[使用可能](Available)という名前が付けられます。このパラメータは、リストに追加する次のコントローラ用の空のプレースホルダです。
プロパティ
.weight ArrayParameter default: #() -- float array
サブコントローラの重み値の配列
.average Boolean default: false -- boolean; Average_Weights
重みの平均化をコントロールします。
CDF available プロパティには、「ファントム」コントローラが入っている controller プロパティがあります。コントローラをリスト コントローラに追加するには、コントローラを available.controller プロパティに割り当ててください。次のスクリプトでは、コントローラを作成して、それをリスト コントローラに追加する例を示します。
リスト コントローラのプロパティ リストには、リスト コントローラ内の (存在する場合) サブコントローラも含まれます。これらのコントローラのタイプは、リスト コントローラのタイプによって決まります。たとえば、float_list
には、任意の数の bezier_float コントローラを含めることができます。
例:
|
p=float_list ()-- create a list controller
showproperties p-- show its properties
p.available.controller-- the "phantom" controller
p1=bezier_float ()-- create a new bezier float controller
p.available.controller=p1-- add it to the list controller
p2=bezier_float ()-- create a new bezier float controller
p.available.controller=p2-- add it to the list controller
getpropnames p-- show the list controller properties
showproperties p-- show the list controller properties
p.numSubs-- the number of list controller subAnims
getsubanimnames p-- show the list controller subAnim names
p[2].object-- retrieve the second bezier float controller
|
出力
|
Controller:Float_List-- result line 1
.weight : float array
.average (Average_Weights) : boolean
.available : float-- output line 2
false-- output line 2
Controller:-- result line 3 (the "phantom" controller)
Controller:Bezier_Float-- result line 4
Controller:Bezier_Float-- result line 5
Controller:Bezier_Float-- result line 6
Controller:Bezier_Float-- result line 7
#(#weight, #average, #bezier_float, #available)-- result line 8
.weight : float array-- output line 9
.average (Average_Weights) : boolean-- output line 9
.bezier_float : float-- output line 9
.bezier_float : float-- output line 9
.available : float-- output line 9
false-- output line 9
4-- result line 10
#(#bezier_float, #bezier_float, #available, #Weights)-- result line 11
Controller:Bezier_Float-- result line 12
OK
|
例
|
lst = $.pos.controller-- if this is a list controller
showInterfaces lst-- interface name is "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-- the list controller
showInterfaces lst-- interface name is "list"
lst.getCount()-- count function
lst.count-- count property (read only)
lst.SetActive 3-- set active function
lst.GetActive()-- get active function
lst.active-- active property
lst.cut 2-- cut the second sub-controller
lst.paste 1-- paste it to the top of the list
lst.delete lst.count-- delete the second to last sub-controller
lst.setName 2 "My Bezier"-- sets the name of the second sub-controller
lst.getName 2-- gets the name of the sub-controller
|
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>
リスト コントローラにあるインデックスで指定されたサブコントローラをアクティブなコントローラとして設定します。