ブール演算オブジェクトは、2 つのオブジェクトにブール演算操作を実行して、それらのオブジェクトを結合します。
オペランド A (左)、オペランド B (右)
ジオメトリ用のブール演算操作の結果です。
ブール演算オブジェクトは、元の 2 つのオブジェクトを合わせたボリュームを持つオブジェクトになります。ジオメトリの交差する部分または重なり合う部分は取り除かれます。
ブール演算オブジェクトは、元の 2 つのオブジェクトに共通していた(重なり合っていた)ボリュームだけを持つオブジェクトになります。
ブール演算オブジェクトは、交差しているボリュームを削除した一方のオリジナル オブジェクトのボリュームを含みます。
2 つのオリジナルのオブジェクトがオペランド A およびオペランド B として指定されます。
ブール演算をスタック表示に積んで、単一のオブジェクトが多数のブール演算を組み込めるようにします。スタック表示へ移動することで、各ブール演算のコンポーネントに再度アクセスして変更を加えることができます。
差: A-B(上)、B-A(下)
和(上)、交差(下)
ほとんどのプリミティブでは、サーフェス上でいくつかのマテリアル ID を使用します。たとえば、ボックスはその側面で 1 ~ 6 のマテリアル ID を使用します。6 つのサブマテリアルとともにマルチ/サブオブジェクト マテリアルを割り当てる場合は、各側面に 1 つのマテリアルが 3ds Max によって自動的に割り当てられます。 2 つのサブマテリアルとともにマルチ/サブオブジェクト マテリアルを割り当てる場合は、3ds Max によって最初のマテリアルが 1、3、5 の側面に、2 番目のマテリアルが 2、4、6 の側面に割り当てられます。
マテリアルが割り当てられているオブジェクトからブール演算を作成する場合、3ds Max では次のようにしてマテリアルが結合されます。
詳細については、[マテリアル アタッチ オプション](Material Attach Options)ダイアログ ボックスを参照してください。
旧リリースでは、ブール演算アルゴリズムにより、予測できない動作が起こることがありました。その解決方法を次に示します。
ブール演算では、オペランドのサーフェス トポロジが完全な状態(面が欠けたり重なっている部分がなく、頂点も連結されていない)でなければなりません。また、サーフェスは、連続する 1 つの閉じたサーフェスであることが必要です。
ブール演算では、この要件を満たさないオペランドがあると、自動的に補正します。ただし、自動補正では必ずしも意図したとおりに補正されるとは限らないので、手動でサーフェスの補正を行った方がよい場合もあります。
ジオメトリの穴を確認するには、[STL-チェック]モディファイヤまたは[計測]ユーティリティを使用します。
穴を埋めるには、[キャップ ホール](Cap Holes)モディファイヤを使用します。
ブール演算では、サーフェスの面の法線が矛盾していない必要があります。しかし、反転された法線が、意図せず作成されることもあります。また、同一方向を向いた複数の面に隣接する面が反転されているサーフェスにも問題があります。このような現象は、CAD プログラムから読み込まれたジオメトリで発生しがちです。ブール演算では、これらの面が最適な状態になるように修正されます。また、手動で修正した方がよい結果が得られます。
シェーディングされたビューポートを使用して、オブジェクトが裏返しに表示されたり、間違った見え方をしていないかを確認しながら、法線の問題点を探すことができます。[編集可能メッシュ](Editable Mesh)(面) [サーフェス プロパティ](Surface Properties)ロールアウト [法線](Normals)領域の[表示](Show)をオンにすることもできます。ここで法線を修正するか[法線](Normal)モディファイヤを使用します。
ブール演算は、メッシュの内側と外側を明確に区別して実行されるため、重複するメッシュでは、不適切な結果を生じる可能性があります。たとえば、ブール演算機能をオンにせずに、2 つの重なっているオブジェクトで[集約](Collapse)ユーティリティを使用した場合、ブール演算のオペランドとしては不適切なオブジェクトが作成されます。このことは、自己重複する[ティーポット](Teapot)プリミティブ(すべてのパーツがオン)でも問題になります。
このようなオブジェクトをブール演算のオペランドとして使用する必要がある場合、各コンポーネントに分解してから、ブール演算と組み合わせることによって、単一の重複のないメッシュとして再構築することができます。
ブール演算では、「反転メッシュ」(法線を反転することで裏返しにされたメッシュ)に対し理想的な結果がいつでも得られるとは限りません。問題は、反転されたメッシュの内側の領域は「外側」として正しく表示される一方で、外側の領域も「外側」として表示される場合がある点です。この問題に対処するには、メッシュを反転せずに、非常に大きなボックスまたは他のプリミティブをメッシュの中心に(ただし、接しないように)作成し、ブール演算でメッシュの減算を行います。それから、編集可能メッシュに変換して、ボックスの面を削除します。これで、ブール演算で正しく操作できる正しく反転されたメッシュが得られます。
2 つのブール演算オペランドが実際には交差せずにぴったり並んでいると、ブール演算操作で不適切な結果が生じる場合があります。まれなことですが、このような事態が生じた場合は、オペランドが少し重なるようにすれば対処できます。
ブール演算は、2 つのオペランドの複雑さが同程度である場合に、最適な結果が得られます。セグメントのないボックスからテキスト(多数の面と頂点からなる複雑なオブジェクト)を減算すると、多数の細長い面が形成され、レンダリング エラーが発生する可能性が高くなります。ボックス セグメントの数を増やすと、結果が改善されます。オペランド間で、複雑さを同程度に保つようにしてみてください。
以前には、ブール演算ではオブジェクトが重なっている必要がありました。2 つのオブジェクトが重ならずに、単にエッジとエッジ、または面と面が接触しているだけの場合は、ブール演算は失敗していました。
このソフトウェアでは、重ならないオブジェクトでもブール演算操作を実行できるようになりました。共有面、共有エッジ、および共有頂点は問題ではなくなりました。他のオブジェクトに完全に内包され、エッジが交差しないオブジェクトでも、ブール演算を作成することができます。
複数のオブジェクトでブール演算を作成する方法については、[集約](Collapse)ユーティリティを参照してください。
ブール演算オブジェクトを作成するには:
オペランドのオブジェクトは、ブール演算オブジェクトのサブオブジェクトとして残ります。ブール演算のオペランド サブオブジェクトの作成パラメータを修正すると、オブジェクト作成後でもオペランドのジオメトリを調整してブール演算の結果を変更したりアニメートしたりできます。
例: 複数のブール演算を含む単一のオブジェクトを作成、修正するには:
2 つの穴があるボックスを作成する場合について考えます。1 つの穴は球オブジェクトを使用し、もう 1 つの穴は円柱オブジェクトを使用して切り取ります。球オブジェクトまたは円柱オブジェクトに変更を加えるには、次の手順を実行します。
円柱または円柱のパラメータをアニメートする場合、モディファイヤ スタック表示でアクセスできるようになりました。
更に、トラック ビューで複数のブール演算を操作することもできます。トラック ビューでオペランドをクリックすると、モディファイヤ スタック表示内のエントリに直接アクセスできるようになります。多数のブール演算を含む複雑なオブジェクトでは、これは前述のものよりも簡単な方法といえます。
オペランド B を選択するときに、ブール演算オブジェクトの[ブール演算を選択](Pick Boolean)ロールアウトにある選択項目に応じて、[参照](Reference)、[移動](Move)(オブジェクト自体を移動)、[コピー](Copy)、または[インスタンス](Instance)を指定します。ブール演算を作成した後で、シーンのジオメトリをどのように使用するかによって選択します。
通常、ブール演算オブジェクトは、重なり合っているオブジェクトから作成するため、オペランド B が削除されていない(既定の[移動](Move)オプションを使用していない)場合、オペランド B によりブール演算オブジェクトの一部が隠れてしまうか、ブール演算オブジェクトによりオペランド B の一部が隠れてしまうことがあります。更に、ブール演算オブジェクトまたは B オブジェクトを移動して、ブール演算の結果を確認しやすくすることもできます。
このボタンを使用して、ブール演算を完了するのに使用する 2 番目のオブジェクトを選択します。
オペランド B を論理演算オブジェクトに転送する方法を指定します。参照、コピー、インスタンス、または移動のいずれかとして転送することができます。
使用する方法に関係なく、オブジェクト B のジオメトリは、ブール演算オブジェクトの一部になります。
[カット](Cut)には、次の 4 種類があります。
ブール演算の結果を視覚化するのは少し困難な作業です。操作の後で修正を加えたり、アニメートしたりする場合などは、特に手間がかかります。[表示/更新](Display/Update)ロールアウトの[表示](Display)領域を使用して、ブール演算の構成方法を視覚化できます。
ブール演算を作成するまでは、この表示コントロールは影響を与えません。
オペランドのジオメトリは、表示またはレンダリングされませんが、合成ブール演算オブジェクトの一部として残ります。オペランド ジオメトリは、すべてのビューポート内でワイヤフレームとして表示されます。
オペランドの表示
結果(A-B)の表示
A-B 後の非表示のオペランドの表示
B-A 後の非表示のオペランドの表示
既定値では、オペランドを変更すると常に、ブール演算オブジェクトが更新されます。シーンにアニメートされた複雑なブール演算が 1 つ以上含まれていると、パフォーマンスが低下する場合があります。[更新](Update)領域のオプションを使用すると、パフォーマンスを改善する代替手段が指定できます。
ブール演算オブジェクトを更新します。[常時](Always)が選択されていると、[更新](Update)ボタンは使用できません。