PolyBoolean インタフェース は ProBoolean クラスによって公開され、ProBoolean 合成オブジェクトを作成および管理するためのメソッドを提供します。3ds Max 9 以降で使用可能です。
ここで説明するメソッドにアクセスするには、
ProBoolean.PolyBoolean.methodName()
を使用するか、単に次のようにします。
メソッド:
<void>CreateBooleanObjects <node>boolnode <&node array>nodes <integer>op <integer>addMethod <integer>matMethod
nodes is In and Out parameter
最初の引数をオペランド A、2 番目の引数として渡されたノードの配列を複数のオペランド B として、複数のオペランドによって新しい ProBoolean オブジェクトを作成します。
3 番目の引数は実行される操作を制御する整数で、UI におけるラジオ ボタンの状態に対応します。有効な値は次のとおりです。
0 - 和
1 - 交差
2 - 差
3 - 合成
4 番目の引数はオペランド B を追加するメソッドを定義する整数で、UI におけるラジオ ボタンの状態に対応します。有効な値は次のとおりです。
0 - 参照
1 - コピー
2 - 移動
3 - インスタンス
5 番目の引数は適用するマテリアルを制御する整数で、UI におけるラジオ ボタンの状態に対応します。有効な値は次のとおりです。
0 - オペランド マテリアルを適用
1 - 元のマテリアルを保持
<void>CreateBooleanObject <node>boolnode <node>node <integer>op <integer>addMethod <integer>matMethod
最初の引数をオペランド A、2 番目の引数をオペランド B として、2 個のオペランドのある新しい ProBoolean オブジェクトを作成します。
3 番目の引数は実行される操作を制御する整数で、UI におけるラジオ ボタンの状態に対応します。有効な値は次のとおりです。
0 - 和
1 - 交差
2 - 差
3 - 合成
4 番目の引数はオペランド B を追加するメソッドを定義する整数で、UI におけるラジオ ボタンの状態に対応します。有効な値は次のとおりです。
0 - 参照
1 - コピー
2 - 移動
3 - インスタンス
5 番目の引数は適用するマテリアルを制御する整数で、UI におけるラジオ ボタンの状態に対応します。有効な値は次のとおりです。
0 - オペランド マテリアルを適用
1 - 元のマテリアルを保持
<void>SetOperandA <node>boolnode
引数をオペランド A として使用し、1 個のオペランドのある新しい ProBoolean オブジェクトを作成します。このメソッドを使用して、ProBoolean 合成オブジェクトの作成を開始した後で、以下に説明するメソッドを使用して設定を切り替えたりオペランド
B を追加したりすることができます。
<void>SetOperandB <node>boolnode <node>node <integer>addMethod <integer>matMethod
ProBoolean 合成オブジェクトにオペランド B を追加します。UI の[選択開始]ボタンを使用したオペランドの追加に対応します。
<boolean>GetOperandSel <node>node <integer>sel
インデックス指定されたオペランドが UI で選択されている場合は true、そうでない場合は false を返します。
<void>SetOperandSel <node>node <integer>sel <boolean>flag
指定された ProBoolean 合成オブジェクトの、インデックスで指定されたオペランドの選択された状態を、指定されたブール値に設定します。
<integer>GetBoolOp <node>node
ProBoolean 合成オブジェクト内で設定されている現在のブール値の操作を返します。
<void>SetBoolOp <node>node <integer>op
ProBoolean 合成オブジェクト内の現在のブール値の操作を、0 ベースのラジオ ボタンの状態に対応する指定された値に設定します。有効な値は次のとおりです。
0 - 和
1 - 交差
2 - 差
3 - 合成
<boolean>GetDisplayResult <node>node
結果の表示モードを返します。true の場合、結果が表示されます。false の場合は、オペランドが表示されます。
<void>SetDisplayResult <node>node <boolean>flag
結果の表示モードを設定します。true の場合、結果が表示されます。false の場合は、オペランドが表示されます。
<boolean>GetShowHiddenOps <node>node
オペランド表示オプションの状態を返します。
<void>SetShowHiddenOps <node>node <boolean>flag
オペランド表示オプションの状態を指定された値に設定します。
<integer>GetUpdateMode <node>node
更新モードを返します。有効な値は次のとおりです。
0 - 常時更新
1 - 選択時に更新
2 - レンダリング時に更新
3 - 手動で更新
<void>SetUpdateMode <node>node <integer>mode
更新モードを設定します。有効な値は次のとおりです。
0 - 常時更新
1 - 選択時に更新
2 - レンダリング時に更新
3 - 手動で更新
<boolean>GetOptimize <node>node
[最適化]オプションの状態を返します。
<void>SetOptimize <node>node <boolean>flag
[最適化]オプションの状態を指定された値に設定します。
<boolean>GetCookieCut <node>node
切り取りのタイプで[クッキー]が有効な場合は true、それ以外の場合は false を返します。
<void>SetCookieCut <node>node <boolean>flag
切り取りのタイプで[クッキー]オプションを指定された状態に設定します。
<boolean>GetImprint <node>node
[形跡]オプションが有効な場合は true、それ以外の場合は false を返します。
<void>SetImprint <node>node <boolean>flag
[形跡]オプションを指定された状態に設定します。
<float>GetDecimationPercent <node>node
デシメーションのパーセンテージを返します。
<void>SetDecimationPercent <node>boolnode <float>percent
パーセント は 0 から 1120403456 までの範囲で確認されます。
デシメーションのパーセンテージを設定します。
<boolean>GetMakeQuad <node>node
[四辺形を作成]オプションが有効である場合は true、そうでない場合は false を返します。
<void>SetMakeQuad <node>boolnode <boolean>flag
[四辺形を作成]オプションを指定された状態に設定します。
<float>GetQuadSizePercent <node>node
[四辺形のサイズ %]のパーセンテージを返します。
<void>SetQuadSizePercent <node>boolnode <float>percent
パーセント は 0 から 1120403456 までの範囲で確認されます。
[四辺形のサイズ %]のパーセンテージを設定します。
<integer>GetPlanarEdgeRemoval <node>node
[平面エッジ削除]のモードを返します。有効な値は次のとおりです。
0 - すべてを削除
1 - 非表示のものだけを削除
2 - エッジ削除なし
<void>SetPlanarEdgeRemoval <node>node <integer>mode
[平面エッジ削除]のモードを設定します。有効な値は次のとおりです。
0 - すべてを削除
1 - 非表示のものだけを削除
2 - エッジ削除なし
例 1
|
--2 つの後続のブール操作を使用して、
-ボックス、円錐、および球を一致させます。
theBox = box height:100 width:10 length:10--ボックスを作成します。
theCone = cone radius1:4 radius2:15 height:110--円錐を作成します。
theSphere = sphere radius:6--球を作成します。
xf = xform()--XFormモディファイヤを作成します。
addModifier theSphere xf--球に XForm を追加します。
xf.gizmo.scale = [1,1,2]--球を Z 軸に沿ってスケーリングします。
--ボックスをオペランド A、円錐をオペランド B として交差を作成します。
ProBoolean.createBooleanObject theBox theCone 1 0 0
--ボックスおよび球に対してマテリアルを割り当てます。
theBox.material = standard diffuse:(color 255 200 100)
theSphere.material = standard diffuse:brown
ProBoolean.SetBoolOp theBox 0--ブール操作を和に設定します。
ProBoolean.setOperandB theBox theSphere 0 0--新しいオペランド B として球を追加します。
|
例 2
|
--1 つのボックス、2つの円錐、および円柱に複数のブール減算を適用して
--鉛筆を作成します。
--手順 1: ボックスと 2 つの円錐を作成し、マテリアルを割り当てます。
theBox = box height:50 width:50 length:50 pos:[0,0,-2]
theCone1 = cone radius1:3 radius2:20 height:80 heightsegs:1 pos:[0,0,15]
theCone2 = cone radius1:0 radius2:15 height:80 heightsegs:1
theCone1.material = standard diffuse:(color 255 220 200)
theCone2.material = standard diffuse:black
|
--手順 1: ボックスと 2 つの円錐を作成し、マテリアルを割り当てます。
ProBoolean.createBooleanObjects theBox #(theCone2,theCone1) 2 0 0
|
--手順 3: 辺が 6 つある円柱を作成し、マテリアルを割り当てます。
theCyl = cylinder radius:10 sides:6 height:150 smooth:false pos:[0,0,1]
theCyl.material = standard diffuse:(color 255 200 100)
|
--手順 4: 円錐状の穴のあるボックスを使用して、円柱を「尖らせ」ます。
ProBoolean.createBooleanObject theCyl theBox 2 0 0
|