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 の[選択開始](Start Picking)ボタンを使用したオペランドの追加に対応します。
<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
[最適化](Optimize)オプションの状態を返します。
<void>SetOptimize <node>node <boolean>flag
[最適化](Optimize)オプションの状態を指定された値に設定します。
<boolean>GetCookieCut <node>node
切り取りのタイプで[クッキー](Cookie)が有効な場合は true、それ以外の場合は false を返します。
<void>SetCookieCut <node>node <boolean>flag
切り取りのタイプで[クッキー](Cookie)オプションを指定された状態に設定します。
<boolean>GetImprint <node>node
[形跡](Imprint)オプションが有効な場合は true、それ以外の場合は false を返します。
<void>SetImprint <node>node <boolean>flag
[形跡](Imprint)オプションを指定された状態に設定します。
<float>GetDecimationPercent <node>node
デシメーションのパーセンテージを返します。
<void>SetDecimationPercent <node>boolnode <float>percent
パーセント は 0 から 1120403456 までの範囲で確認されます。
デシメーションのパーセンテージを設定します。
<boolean>GetMakeQuad <node>node
[四辺形を作成](Make Quadrilaterals)オプションが有効である場合は true、そうでない場合は false を返します。
<void>SetMakeQuad <node>boolnode <boolean>flag
[四辺形を作成](Make Quadrilaterals)オプションを指定された状態に設定します。
<float>GetQuadSizePercent <node>node
[四辺形のサイズ %](Quad Size)のパーセンテージを返します。
<void>SetQuadSizePercent <node>boolnode <float>percent
パーセント は 0 から 1120403456 までの範囲で確認されます。
[四辺形のサイズ %](Quad Size)のパーセンテージを設定します。
<integer>GetPlanarEdgeRemoval <node>node
[平面エッジ削除](Planar Edge Removal)のモードを返します。有効な値は次のとおりです。
0 - すべてを削除
1 - 非表示のものだけを削除
2 - エッジ削除なし
<void>SetPlanarEdgeRemoval <node>node <integer>mode
[平面エッジ削除](Planar Edge Removal)のモードを設定します。有効な値は次のとおりです。
0 - すべてを削除
1 - 非表示のものだけを削除
2 - エッジ削除なし
例 1
|
--Creating a match using two consecutive boolean operations between
--a box, a cone and a sphere:
theBox = box height:100 width:10 length:10--create a box
theCone = cone radius1:4 radius2:15 height:110--create a cone
theSphere = sphere radius:6--create a sphere
xf = xform()--create an XForm modifier
addModifier theSphere xf--add the XForm to the sphere
xf.gizmo.scale = [1,1,2]--scale the sphere along Z
--create an intersection of the box as operand A and the cone as operand B:
ProBoolean.createBooleanObject theBox theCone 1 0 0
--assign materials to the box and to the sphere:
theBox.material = standard diffuse:(color 255 200 100)
theSphere.material = standard diffuse:brown
ProBoolean.SetBoolOp theBox 0--set the boolean operation to union
ProBoolean.setOperandB theBox theSphere 0 0--add the sphere asnewoperand B
|
例 2
|
--Creating a Pencil using multiple boolean subtractions
--of a box, two cones and a cylinder:
--Step 1: create a box and two cones, assign materials:
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
|
--Step 2: Subtract both cones from the box
ProBoolean.createBooleanObjects theBox #(theCone2,theCone1) 2 0 0
|
--Step 3: Create a 6-sided cylinder and assign a material
theCyl = cylinder radius:10 sides:6 height:150 smooth:false pos:[0,0,1]
theCyl.material = standard diffuse:(color 255 200 100)
|
--Step 4: "sharpen" the cylinder using the box with the conical hole
ProBoolean.createBooleanObject theCyl theBox 2 0 0
|