ウィンドウに表示
お気に入りに追加
ホーム: Autodesk Maya オンライン ヘルプ
ポリゴン メッシュを統合する
ポリゴン メッシュの統合と分離
ブーリアン演算後にオリジナルのオブジェクトを編集する
ブーリアンを使用してポリゴン メッシュを統合する
Maya のブーリアン演算には、既存のシェイプの相互作用の方法を定義する機能が記述されています。たとえば、あるシェイプのボリュームを使用して別のシェイプをスカルプトすることができます。ブーリアン演算は、他の技法ではモデリングするのが非常に難しいシェイプをモデリングするのに大いに効果を発揮します。
Maya には、次の 3 つのブーリアン演算が用意されています。
- 論理和(Union)は、選択する 2 つのメッシュの体積を結合します。
- 論理差(Difference)は、最初に選択するメッシュから 2 つ目のメッシュの体積を減算します。
- 論理積(Intersection)は、2 つのメッシュの共有体積からなるメッシュを生成します。
ブール演算はオブジェクトをトリミングする際に非常に便利です。
ブール演算は新しいシェイプ ノードを生成します。コンストラクション ヒストリを維持すれば、オリジナルのシェイプを引き続きチャンネル ボックス(Channel Box)、ハイパーグラフ(Hypergraph)、またはアウトライナ(Outliner)で選択でき、ブール演算によって自動的に更新が行われます。さらに、オブジェクトの結合に使用するブール演算を変更することもできます。
ブーリアン演算を使って 2 つのメッシュを統合するには
- 統合するメッシュを選択します。
論理差演算の場合は、減算する元のメッシュを最初に選択します。
-
メッシュ > ブーリアン(Mesh > Booleans)サブメニューでブーリアン機能の 1 つを選択します。
これでオブジェクトのフェースがコネクトされ、オリジナルの両方のメッシュが単一のオブジェクトとして機能するようになります。
オリジナルのオブジェクトを選択するときは、アウトライナ、ハイパーグラフ、アトリビュート エディタ、またはチャンネル ボックスを使用することができます。コンストラクション ヒストリがオンになっていれば、オリジナルを編集したときに、ブール演算によって自動的に更新が行われます。
たとえば、論理差演算を使用して立方体から球体を減算し、その後でオリジナルの球体をアニメートして目的のエフェクトを作成することができます。
ポリゴンのブーリアン演算のトラブルシューティング
- ブーリアン演算が予測どおりに動作しない
-
オリジナルのオブジェクトが閉じたボリュームでなかったり、オリジナルのオブジェクトにほぼ一致する頂点が含まれていたりすると、ブーリアン演算で予期せぬ結果が生じることがあります。他に次のような条件に注意する必要があります。
- 交差領域に境界エッジが含まれていてはいけません。境界エッジは、
ディスプレイ > ポリゴン(Display > Polygons) > 境界エッジ(Border Edges)を選択することで表示できます。
- 非多様体の性質を持つメッシュは避けてください。つまり、エッジは 3 つ以上のフェースにはコネクトされません。
- メッシュ上の法線が一貫してボリュームの外側を向いている必要があります。メッシュ上の法線は、
ディスプレイ > ポリゴン(Display > Polygons) > フェース法線(Face Normals)を使用して確認できます。フェース法線を反転するには、
法線 > 反転(Normals > Reverse)を使用します。
- ブーリアン演算を実行する前に、(たとえば
メッシュ > 穴を埋める(Mesh > Fill Hole)を使用して)オリジナル オブジェクトの隙間などを埋めてください。そしてしきい値(Threshold)の許容値に適切な小さい値を指定して
メッシュの編集 > マージ(Edit Mesh > Merge)のマージ機能を実行し、事実上同期している頂点をマージしてください。
- 関連するメッシュに非常に小さいフェースやエッジが含まれていないことを確認します。ブーリアン演算は、ゼロ領域の(つまり非常に小さい)フェースまたはゼロ長の(つまり非常に短い)エッジが含まれるメッシュ上では機能しません。
ブーリアンの機能により、polyBoolOp ノードでしきい値の使用(Use Thresholds)オプションを使用することで、非常に小さいフェースとエッジが自動的にチェックされます。これによって 2 つのしきい値設定を制御して、小さいフェースとエッジをチェックするかどうか、そしてブーリアン演算中に自動的に削除されるようにするかどうかを指定します。デフォルト設定はオンです。
- 頂点距離のしきい値(Vertex Distance Threshold)では、ゼロ長のエッジ(つまり非常に短いエッジ)をチェックします。指定した値より近い頂点があれば、自動的に 1 つの頂点にマージされます。
- フェース領域のしきい値(Face Area Threshold)では、ゼロ領域のフェース(つまり非常に小さいフェース)をチェックします。指定した値よりも小さい領域があれば、自動的に 1 つの頂点に折り畳まれます。
注:デフォルトのしきい値設定は、開始点として適しています。ブーリアン演算が失敗した場合は、しきい値設定を使用して試すと、最良の結果を得ることができます。polyBoolOp ノードで頂点距離のしきい値(Vertex Distance Threshold)またはフェース領域のしきい値(Face Area Threshold)のいずれかの値を大きくし過ぎると、これが原因でメッシュの一部が見えなくなります。
- ブーリアン演算を使用すると、メモリが不足する
-
大きいポリゴン オブジェクトに対してブーリアン演算を実行すると、大量のメモリが使用されます。このような演算を何回も実行すると、メモリ不足のエラーになる場合があります。
メモリ不足になる可能性を減らすには、元に戻す待ち行列の長さ(Undo Queue Length)を小さくするか、大きいポリゴン オブジェクトに対してブーリアン演算を実行するたびに元に戻す待ち行列をフラッシュ(クリア)してください。