ジャンプ先: 概要. 戻り値. 関連. フラグ. MEL 例.

概要

polyBoolOp [-caching boolean] [-faceAreaThreshold linear] [-mergeUVSets int] [-nodeState int] [-operation int] [-preserveColor boolean] [-useThresholds boolean] [-vertexDistanceThreshold linear] poly poly

polyBoolOp は、取り消し可能、照会可能、および編集可能です。

入力ポリゴン間のブール演算(論理和、論理積、論理差)によって、新しいポリゴンを作成します。
論理差の場合に限り、オブジェクトを選択する順序が重要になります
(結果 = オブジェクト 1 - オブジェクト 2)。
コマンド ラインでオブジェクトを指定しない場合は、アクティブ リストのオブジェクトを使用します。

戻り値

string[]オブジェクト名とノード名

照会モードでは、戻り値のタイプは照会されたフラグに基づきます。

関連

polyCBoolOp, polySeparate, polyUnite

フラグ

caching, faceAreaThreshold, mergeUVSets, nodeState, operation, preserveColor, useThresholds, vertexDistanceThreshold
ロング ネーム(ショート ネーム) 引数タイプ プロパティ
-faceAreaThreshold(-fat) linear createqueryedit
ブール演算の前にフェースを折りたたむかどうかを決定する領域のしきい値です。useThresholds を true に設定していない限り、アトリビュートは無視されます。
既定: 0.0001
-operation(-op) int createqueryedit
ブール演算処理のタイプです。1 = 論理和、2 = 論理差、3 = 論理積。既定のタイプは論理和です。
既定: kBoolOpUnion
-preserveColor(-pcr) boolean createqueryedit
true の場合、ブール演算処理は、新しいメッシュのカラーを計算します。false の場合、新しいメッシュにカラーは設定されません。
既定: false
-useThresholds(-uth) boolean createqueryedit
true の場合、vertexDistanceThreshold よりも少ない分離で頂点をマージし、faceAreaThreshold よりも狭い領域でフェースを折りたたみます。false の場合、頂点のマージとフェースの折りたたみを行いません。
既定: false
-vertexDistanceThreshold(-vdt) linear createqueryedit
ブール演算を適用する前に頂点(エッジ)をマージする必要があるかどうかを決定するしきい値です。useThresholds を true に設定していない限り、アトリビュートは無視されます。
既定: 0.001
Flags from polyCBoolOp
Flags From polyUnite Node
-caching(-cch) boolean createqueryedit
すべてのアトリビュートのキャッシングを切り替えることで、再計算を不要にします。
-mergeUVSets(-muv) int createqueryedit
UV セットが出力メッシュにマージされる方法を指定します。
  • 0 = マージなし: 各メッシュの各 UV セットは出力において新しい UV セットになります。
  • 1 = 名前でマージ: 同じ名前を持つ UV セットがマージされます。
  • 2 = UV リンクでマージ: 入力メッシュの UV リンクがそのまま動作するように UV セットがマージされます。
既定は「名前でマージ」です。
-nodeState(-nds) int createqueryedit

Maya のディペンデンシー ノードには 6 種類の設定可能な状態があります。通常(Normal)(0)エフェクトなし(HasNoEffect)(1)ブロッキング(Blocking)(2)ステータスは、グラフの評価方法を変更するために使用されます。

待機 - 通常(Waiting-Normal)(3)待機 - エフェクトなし(Waiting-HasNoEffect)(4)待機 - ブロッキング(Waiting-Blocking)(5)は、内部でのみ使用されます。これらは、インタラクション(例: 操作)の実行中にグラフのパーツを一時的に遮断します。操作が完了すると、ステータスは適切にリセットされます(例: 待機 - ブロッキング(Waiting-Blocking)ブロッキング(Blocking) にリセットされます)。

通常(Normal)およびブロッキング(Blocking)のケースはすべてのノードに適用できますが、エフェクトなし(HasNoEffect)はノード特定です。多くのノードはこのオプションをサポートしていません。プラグインは状態を MPxNode::state アトリビュートに保存します。誰もがこのアトリビュートを設定したり確認したりすることができます。これらの 3 つの状態に関するその他の詳細は次の通りです。

状態 説明
通常(Normal) 通常のノードの状態です。これが既定の設定です。
エフェクトなし(HasNoEffect)

エフェクトなし(HasNoEffect)オプション(別名: 通過)は、同じデータ タイプの出力を生成する入力を操作している場合に使用されます。 ほぼすべてのデフォーマが、他のいくつかのノードと同様に、この状態をサポートします。前に説明したように、すべてのノードでサポートされるわけではありません。

ノードの計算メソッドでエフェクトなし(HasNoEffect)状態のサポートを実装し、適切な操作を実行することが一般的です。プラグインはエフェクトなし(HasNoEffect)もサポートします。

この状態を普通に実装するには、ノードにアルゴリズムを適用しないで、適合する出力に直接入力をコピーします。デフォーマの場合は、この状態を適用することにより、入力ジオメトリが出力でデフォーム解除されたままになります。

ブロッキング(Blocking)

これはディペンデンシー ノードのベース クラスで実装され、すべてのノードに適用されます。ブロッキング(Blocking)は評価フェーズ中に接続に適用されます。 ブロックされた接続に対する評価要求が失敗を返すと、目的プラグが現在の値を保持します。 ダーティな伝播はこの状態の間接的な影響を受けますが、ブロックされた接続がクリーンアップされることはありません。

ノードをブロッキング(Blocking)に設定すると、すべての送信接続が解除されたのと同じ動作になる可能性があります。 ブロックされたノードの評価を直接要求しない限り、その後に再評価されることはありません。ブロックされたノードは getAttr 要求に引き続き応答しますが、下流ノードの getAttr は、ブロックされたノードを再評価しないことに注意してください。

ブロッキング(Blocking)に対して階層のルート変換を設定しても、自動的にはこの階層の子変換に影響しません。これを実行するには、ブロッキング(Blocking)状態に対してすべての子ノードを明示的に設定する必要があります。

たとえば、すべての子トランスフォームをブロッキング(Blocking)に設定するには、次のスクリプトを使用します。

 import maya.cmds as cmds def blockTree(root): nodesToBlock = [] for node in {child:1 for child in cmds.listRelatives( root, path=True, allDescendents=True )}.keys(): nodesToBlock += cmds.listConnections(node, source=True, destination=True ) for node in {source:1 for source in nodesToBlock}.keys(): cmds.setAttr( '%s.nodeState' % node, 2 ) 

このスクリプトを適用してオブジェクトの描画を継続できますが、アニメートは行えません。


既定: kdnNormal

フラグはコマンドの作成モードで表示できます フラグはコマンドの編集モードで表示できます
フラグはコマンドの照会モードで表示できます コマンド内でフラグを複数回使用できます。

MEL 例

// Union
polyCube -n Cube1 -w 1 -h 10 -d 1;
polyCube -n cub1 -w 3 -h 3 -d 3;
polyBoolOp -op 1 -n result1 cub1 Cube1;

// Difference
polyCube -n Cube2 -w 1 -h 10 -d 1;
polyCube -n cub2 -w 3 -h 3 -d 3;
polyBoolOp -op 2 -n result2 cub2 Cube2;
move 5 0 0 result2;

// Intersection
polyCube -n Cube3 -w 1 -h 10 -d 1;
polyCube -n cub3 -w 3 -h 3 -d 3;
polyBoolOp -op 3 -n result3 cub3 Cube3;
move 10 0 0 result3;