インタフェース: simpleFaceManager
 
 
 

インタフェース > コア インタフェース > simpleFaceManager

 

   

コア インタフェース - クイック ナビゲーション

このコア インタフェースは、面ごとのデータ保存機能を提供します。3ds Max 9 以降で使用可能です。

   

メソッド:

<Interface>simpleFaceManager.addChannel <object>object type:<enum> id:<DWORD array> name:<string> 	 

object Validated by Validator function 	 
type enums: {#integer | #index | #float | #boolean | #point2 | #point3} 	 
type default value:	 #integer 	 
id default value: #() 	 
id Validated by Validator function 	 
name default value: undefined   

指定されたタイプの指定されたオブジェクトに、ユーザ定義の ID および名前を使用して新しい面ごとのデータ チャンネルを追加します。

ID は genClassID() メソッドを使用して生成することができ、スクリプト プラグインのクラス ID と同じ形式を使用します。

obj = Plane length:60.0 width:60.0 widthsegs: 1 lengthsegs: 2
convertto obj Editable_Poly
idA = genClassID returnValue:true
channelA = simpleFaceManager.AddChannel obj type: #integer id:idA
channelA.name = "The Integer Channel"
channelA.SetValues #(5,2)
idB = genClassID returnValue:true
channelB = simpleFaceManager.AddChannel obj type: #float id:idB
channelB.name = "The Float Channel"
channelB.SetValues #(3.1459,7.236)

   

<void>simpleFaceManager.removeChannel <object>object <DWORD array>id 

id Validated by Validator function

指定された ID を持つチャンネルを指定されたオブジェクトから削除します。

   

<Interface>simpleFaceManager.getChannel <object>object <DWORD array>id 

object Validated by Validator function
id Validated by Validator function

指定されたオブジェクトから指定された ID を持つチャンネルの simpleFaceChannel MixinInterface を返します。

--上記の例から続きます。
theInt = simpleFaceManager.getChannel obj idA

   

<Interface by value array>simpleFaceManager.getChannels <object>object 

object Validated by Validator function

指定されたオブジェクトのすべてのチャンネルの simpleFaceChannel MixinInterface の配列を返します。

--上記の例から続きます。
SimpleFaceManager.getChannels obj
--> #(<MixinInterface:simpleFaceChannel>, <MixinInterface:simpleFaceChannel>)

インタフェース: simpleFaceChannel

この MixinInterface は SimpleFaceData クラスによって公開され、指定したチャンネル内の面ごとのデータに対するアクセスを提供します。

3ds Max 9 以降 で使用可能です。

   

プロパティ:

.name : string : Read|Write 

データ チャンネルの名前を取得/設定します。

   

.id : DWORD by value array : Read 

チャンネルの一意の ID を取得します。

   

.type : enum : Read 

type enums: {#integer|#index|#float|#boolean|#point2|#point3} 

チャンネル内に保管されているデータの型を取得します。

   

.numFaces : DWORD : Read 

チャンネル内の面またはポリゴンの数を取得します。

--上記の例から続きます。
theInt = simpleFaceManager.getChannel obj idA
--> <MixinInterface:simpleFaceChannel>
theInt.name
--> "The Integer Channel"
theInt.type
--> #integer
theInt.numfaces
--> 2

   

メソッド:

<fpvalue by value>getValue <index>face 

face Validated by Validator function 

インデックスで指定された面の値を取得します。

--上記の例から続きます。
theInt.getValue 1
--> 5
theInt.getValue 2
--> 2
theInt.getValue 3
-- ランタイム エラー: 無効な面インデックス。

   

<boolean>setValue <index>face <value>value 

face Validated by Validator function 
value Validated by Validator function 

インデックスで指定された面の値を設定します。

--上記の例から続きます。
theInt.setValue 1 6
--> true

   

<fpvalue by value>getValues() 

チャンネルのすべての値を取得します。

--上記の例から続きます。
theInt.getValues()
--> #(6, 2)

   

<boolean>setValues <value>values 

values Validated by Validator function 

チャンネルのすべての値を、指定された配列内の値に設定します。

--上記の例から続きます。
theInt.setValues #(10,12)
--> true
theInt.getValues()
--> #(10, 12)

   

<fpvalue by value>getValueBySelection <bitArray>faces 

faces Validated by Validator function 

bitArray 引数の設定ビットによって指定された面の値を取得します。指定されたすべての面に同じ値が含まれている場合は、その値を返します。指定された面に異なる値が含まれている場合は、undefined を返します。

--上記の例から続きます。
theInt.getValueBySelection #{1}
--> 10
theInt.getValueBySelection #{1..2}
--> undefined

   

<boolean>setValueBySelection <bitArray>faces <value>value 

faces Validated by Validator function 
value Validated by Validator function 

bitArray 引数の設定ビットによって指定されたすべての面の値を、2 番目の引数で指定されたものと同じ値に設定します。

--上記の例から続きます。
theInt.setValueBySelection #{1..2} 42
--> true
theInt.getValues()
--> #(42, 42)
theInt.getValueBySelection #{1..2} --両方の面の値を取得できます。
--> 42

トポロジを変更したりクラスを変換したりしても、面ごとのデータは保持されます。たとえば、上記の例の平面を編集可能メッシュに変換する場合は、チャンネルは維持されますが、新しいメッシュ内の 4 つの面はそれぞれ、編集可能ポリゴン内の対応するポリゴンからデータを継承します。

convertToMesh obj
--> $Editable_Mesh:Plane01 @ [0.000000,0.000000,0.000000]
SimpleFaceManager.getChannels obj --すべてのチャンネルが存在することを確認します。
--> #(<MixinInterface:simpleFaceChannel>, <MixinInterface:simpleFaceChannel>)
theInt=(SimpleFaceManager.getChannels obj)[1] --最初のを取得します。
--> <MixinInterface:simpleFaceChannel>
theInt.numfaces --面の数を確認します。ここでは 4 つの三角形があります。
--> 4
theInt.getValues() --オリジナルの値が伝播していることを確認します。
--> #(42, 42, 42, 42)
convertTo obj Editable_Poly --編集可能ポリゴンに変換します。
--> $Editable_Poly:Plane01 @ [0.000000,0.000000,0.000000]
theInt.numfaces --データが統一されています。
--> 2

編集可能メッシュから編集可能ポリゴンに変換すると、さまざまな面ごとのデータを持った複数の三角形が統合されて単一のポリゴン面が作成されます。この場合は、ポリゴンに追加されている面の最後の値が使用されます。

convertToMesh obj
--> $Editable_Mesh:Plane01 @ [0.000000,0.000000,0.000000]
theInt.numfaces --面の数を確認します。ここでは 4 つの三角形があります。
--> 4
theInt.setValues #(1,2,3,4) --4 つの三角形に異なる値を設定します。
--> true
convertTo obj Editable_Poly --編集可能ポリゴンに変換します。
--> $Editable_Poly:Plane01 @ [0.000000,0.000000,0.000000]
theInt.getValues() --統合されたデータを取得します。#(2,4) であり、#(1,3)ではありません。
--> #(2,4)

既存の面を面分割することによってトポロジを変更する場合は、新しい面はオリジナルの面の値を継承します。

polyop.tessellateByFace obj 1 --最初の面を 4 つの新しい面に面分割します。
--> OK
theInt.numfaces --データ チャンネル内の面の合計数を確認します。

--> 5
--トポロジを変更する場合に、編集可能ポリゴンがポリゴン リストを更新する方法によって、
--これまで 面 2 であったものが 面 1になり、
--面分割によって作成された新しい 4 つのポリゴンには
--そのインデックス 2、3、4、5 が与えられます。
theInt.getValues() --新しいデータを取得します。
--> #(4, 2, 2, 2, 2)