ProBoolean 合成オブジェクト

ブール演算オブジェクトは、ブール演算を一度または複数回実行して 2 つ以上のオブジェクトを結合したものです。ProBoolean は、それぞれに異なるブール演算を使用して複数のオブジェクトを結合する機能など、従来の 3ds Max ブール演算オブジェクトにさまざまな機能を追加します。

また ProBoolean は、ブール演算結果を四角形の面に自動的に細分化できます。これにより、メッシュスムーズおよびターボスムーズを使用したエッジのスムージングに適した結果が得られます。

マテリアル、テクスチャ、頂点カラー

ProBoolean および ProCutter は、テクスチャ座標、頂点カラー、マテリアル(オプション)、マップ(オプション)をオペランドから最終的な結果に渡します。生成された面にオペランド マテリアルを適用することも、元のマテリアルを保持することもできます。オリジナルのオペランドのいずれかにマテリアル マップまたは頂点カラーがある場合は、オペランドから生成された面はそのグラフィック アトリビュートを保持します。ただし、テクスチャ座標または頂点カラーがある場合は、共面を削除することができないため、結果のメッシュ品質は低下します。ProBoolean 演算の実行後にテクスチャを適用することをお勧めします。

ProBoolean は、マテリアル適用時の 2 つのオプションを提供します。このオプションは[パラメータ](Parameters)ロールアウトの[マテリアルを適用](Apply Material)グループで使用できます(上図参照)。既定値の方法は[オペランド マテリアルを適用](Apply Operand Material)で、生成される面にオペランド マテリアルが適用されます。一方、[元のマテリアルを保持](Retain Original Material)を選択すると、生成される面にはブール演算で最初に選択されたオブジェクトのマテリアルが強制的に適用されます。

以下の図に、2 つのオプションの違いを表します。赤いボックスと青い球がある状態からブール演算を始めます(左図)。ボックスをベース オブジェクトとして使用し、球を除去するオペランドとして使用します。既定値の[オペランド マテリアルを適用](Apply Operand Material)オプションを使用すると、中央の図のような結果になります。[オリジナル マテリアルを保持](Retain Original Material)を選択すると、右側の図のような結果になります。

左: 元のオペランド

中央: [オペランド マテリアルを適用](Apply Operand Material)がアクティブの状態

右: [元のマテリアルを保持](Retain Original Material)がアクティブの状態

サポートされるブール演算

ProBoolean は、[和](Union)、[交差](Intersection)、[差](Subtraction)、[合成](Merge)、[アタッチ](Attach)、[挿入](Insert)をサポートします。和、交差、差の 3 つの操作はそれぞれ、標準のブール演算合成オブジェクトの対応する操作と同様の効果になります。合成操作は、元のポリゴンを取り除くことなく 2 つのメッシュを交差して結合します。これは、メッシュの一部を選択して取り除く必要がある場合に便利です。

アタッチ操作は、複数のオブジェクトをそれぞれのトポロジに影響を及ばさずに、1 つのオブジェクトに合成する操作です。各オブジェクトは、基本的に合成したオブジェクト内でも個別の要素として保たれます。挿入操作は、オペランド B からオペランド A のバウンディング シェイプを除去し、切り取った箇所をオペランド A に置き換える操作です。

また、ブール演算では、[形跡](Imprint)と[クッキー](Cookie)の 2 種類の操作がサポートされます。[形跡](Imprint)オプションは、エッジを削除または追加することなく、オペランドと元のメッシュの間に交差エッジを挿入します(刻み付けます)。[形跡](Imprint)はベース オブジェクト(選択された元のオブジェクト)の面を分割し、メッシュに新しいエッジを追加します。クッキーは指定したブール演算を実行しますが、オペランドの面を元のメッシュに追加しません。このタイプは、メッシュに穴を開ける場合や、別のオブジェクトの内部のメッシュの一部を取得する場合に使用します。

ブール演算オブジェクトの編集

[修正](Modify)パネルから ProBoolean オブジェクトまたは ProCutter オブジェクトにアクセスすると、既存のセットにオペランドを追加することができます。また、オペランドを削除したり変換(移動、回転、スケールなど)することもできます。

ポリゴンの削減

ProBoolean と ProCutter にはデシメーション機能が組み込まれています。一般に、ブール演算と統合するとデシメーションの品質は向上します。この理由は、ブール演算オブジェクトにはどのエッジが交差エッジであるかということに関するメタ情報が含まれているためです。デシメーション機能はこの情報を認識して、交差エッジを適切に維持するために使用します。

文字、ロフト、NUBRS

文字 オブジェクトにブール演算を実行する場合には、文字が相互に交差しないこと、またそれぞれの文字が閉じていることを確認してください。また、自己交差するロフト オブジェクトNURBS オブジェクトを作成してしまうという間違いも起こりやすいものです。ロフト オブジェクトでは、終点とロフト カーブが曲がっているポイントをチェックします。

手順

ProBoolean 合成オブジェクトを作成するには:

  1. ブール演算用にオブジェクトを作成して配置します。たとえば、ボックスから球状のシェイプを削除するには、ボックスと球を作成して、削除するボックスの部分と球のボリュームが交差するように球を配置します。
  2. ベース オブジェクトを選択します。手順 1 の例では、ボックスを選択します。
  3. [作成](Create)パネルで、 ([ジオメトリ](Geometry))をアクティブにしたまま、ドロップダウン リストから[合成オブジェクト](Compound Objects)を選択します。[オブジェクト タイプ](Object Type)ロールアウトで[ProBoolean]をオンにします。
  4. [パラメータ](Parameters)ロールアウトで、使用するブール演算タイプ([和](Union)、[交差](Intersection)、[差](Subtraction)など)を選択します。さらに、選択した次のオペランドを 3ds Max がブール演算オブジェクトに転送する方法を選択します([参照](Reference)、[コピー](Copy)、[移動](Move)、または[インスタンス](Instance))。 また、[マテリアルを適用](Apply Material)を元のマテリアルを保持するように選択することも、既定値で選択されている[オペランド マテリアルを適用](Apply Operand Material)のままにすることもできます。
  5. [選択開始](Start Picking)ボタンをクリックします。
  6. ブール演算に含める 1 つまたは複数のオブジェクトを選択します。
  7. オブジェクトを選択する際には、新しく選択した各オブジェクトに対して、ブール演算([合成](Merge)など)およびオプション(クッキーやインプリント)を変更することができます。同様に、次のオペランドをブール演算に転送する方法([参照](Reference)、[コピー](Copy)など)および[マテリアル適用](Apply Material)の選択も変更できます。[選択を開始](Start Picking)ボタンが押された状態のままであればオペランドを続けて選択できます。選択した各オブジェクトがブール演算に追加されます。

    [修正](Modify)パネルがアクティブになると、[選択を開始](Start Picking)ボタンをクリックして追加するオブジェクトを選択することで、選択中の ProBoolean オブジェクトにオブジェクトを追加できます。

例: サブオブジェクト操作を含む既存のブール演算を変更するには:

    ProBoolean では、さまざまなブール演算を同時に組み合わせることができることに加え、ブール演算オブジェクトを設定しながらまたは設定後にオペランドの組み合わせ方法を変更することもでき、非常に柔軟に操作が行えます。

  1. はじめに、以下の図のように、ボックス、球、小さめのボックス、円柱を追加します。

    上: フロント ビューポート

    下: パース ビューポート

  2. ボックスを 選択します。
  3. [作成](Create)パネルで、 ([ジオメトリ](Geometry))をアクティブにしたまま、ドロップダウン リストから[合成オブジェクト](Compound Objects)を選択します。[オブジェクト タイプ](Object Type)ロールアウトで[ProBoolean]をオンにします。
  4. [パラメータ](Parameters)ロールアウトの[操作](Operation)領域で、[交差](Intersection)を選択します。
  5. [ブール演算をピック](Pick Boolean)ロールアウトで[選択開始](Start Picking)をクリックし、次に球をクリックします。

    結果は球とボックスの交差、つまり、両方のオブジェクトが占有する共通ボリュームを表す単一オブジェクトとなります。この例では、球とボックスの重なった部分です。この時点ではいずれのオブジェクトにもマテリアルはありませんが、結果にはボックスの作成時に 3ds Max がランダムに割り当てた既定値の色が使用されます。

    [選択開始](Start Picking)がアクティブ(カラー スキームに応じて青または黄色)になっていることに注目してください。これは、ブール演算オブジェクトに組み込むオブジェクトを引き続き選択することができ、操作を進めていく過程で操作を変更することもできることを意味しています。

  6. [演算](Operation)を[和](Union)に設定して、小さい方のボックスをクリックします。

    結果は、球と大きいボックスの交差と小さなボックスの和(追加)となります。ここでも、結果には元のオブジェクトのカラーが割り当てられます。

  7. [操作](Operation)を[差](Subtraction)に変更し、円柱をクリックします。

    前のブール演算結果から、円柱の交差ボリュームが除去されます。

    ブール演算オブジェクトの作成に使用したオペランドと操作のすべての履歴が、[パラメータ](Parameters)ロールアウトの最下部の階層ビュー リストに表示されます。Box01 のブール演算は[和](Union)で開始され、Sphere01 が[交差](Intersection)で組み込まれ、Box02 が[和](Union)で組み込まれ、最後に Cylinder01 が[差](Subtraction)で組み込まれました。

    注: リスト内の最初のオブジェクトの操作は、ブール演算オブジェクトには影響を与えませんが、この操作をリスト内の他の位置に移動すると、影響を与えるようになります。この影響については、この演習の最後で確認できます。

    このリストと[サブオブジェクト操作](Sub-object Operations)領域にある他のコントロールを使用して結果を変更できます。

  8. リストで、[差 - Cylinder01](Subtr - Cylinder01)項目をハイライト表示し、[操作](Operation)を[和](Union)に設定します。
  9. [サブオブジェクト操作](Sub-object Operations)領域で、[操作を変更](Change Operation)ボタンをクリックします。

    操作を変更した結果、円柱が減算オブジェクトではなく加算オブジェクトとしてブール演算オブジェクトに表示されます。また、リスト内の円柱のエントリは[和 - Cylinder01](Union - Cylinder01)に変更され、円柱のブール演算が[和](Union)に変更されたことを示しています。

    また、操作の順序を変更することがができます。この操作は結果に影響を与えます。

  10. リストで、[和 - Cylinder01](Union - Cylinder01)項目を選択してハイライト表示し、続いて項目[1: 交差 - Sphere01](1: Inter - Sphere01)をハイライト表示します。

    [操作の順序を変更](Reorder Ops)の横にある編集可能フィールドに、リスト内でのこの項目の位置(1)が表示されます。

  11. フィールドの値を 1 から3 に変更し、[操作の順序を変更](Reorder Ops)ボタンをクリックします。

    [交差 - Sphere01](Inter - Sphere01)項目がリストの最後に移動します。

    ブール演算オブジェクトが大幅に変わります。リスト内の変更後の順番は、どのように現在のシェイプが作成されたかを表します。2 つのボックスと円柱は[和](Union)によって結合され、それぞれのボリュームを加算しています。その結果に対して、球が[交差](Intersection)でその結果に組み入まれ、4 つのオブジェクトすべてで共有されるボリュームのみが残ります。

インタフェース

モディファイヤ スタック

変更された ProBooleanオブジェクトを選択すると、モディファイヤ スタックには 1 つの展開可能な項目[ProBoolean]が表示されます。

この項目を展開する([+]アイコンをクリックする)と、1 つの従属ブランチ[オペランド](Operands)が表示されます。

ProBoolean オブジェクト内のオペランドをオブジェクト全体に影響を与えずに変換するには、[オペランド](Operands)ブランチをクリックしてハイライト表示します。

これで、ビューポート内で標準的な選択方式を使用するか、[パラメータ](Parameters)ロールアウトの下部にある階層ビュー リストにある名前をハイライト表示することで、1 つまたは複数のオペランドを選択できます。

1 つのオペランドだけが選択されている場合は、(名前ではなく)オブジェクト タイプが別のスタック エントリとして[ProBoolean]エントリの下に表示されます。この項目をクリックすると、[修正パネル](Modify panel)のオペランドのパラメータに直接アクセスできます。

[パラメータ](Parameters)ロールアウト [表示](Display)が[結果](Result)に設定されている場合、オペランドを選択すると、ビューポートにオペランドの座標軸または変換ギズモが表示されますが、既定値ではオペランド自体は表示されません。

オペランドを表示するには、[パラメータ](Parameters)ロールアウト [表示](Display)を[オペランド](Operands)に設定します。

オペランドの表示/非表示に関係なく、3ds Max のその他すべてのオブジェクトと同様に、オペランドはオペランドのサブオブジェクト レベルで変換およびアニメートすることができます。

減算されるオペランドの位置をアニメートして ProBoolean オブジェクトを変更

ベース オブジェクト(階層ビュー リストの最初のオブジェクト)を変換またはアニメートすることもできます。

[ブール演算をピック](Start Picking)ロールアウト

選択開始
これをクリックしてから、ブール演算オブジェクトに転送する各オペランドを順番にクリックします。各オペランドを選択する前に、[参照](Reference)、[移動](Move)、[コピー](Copy)、[インスタンス](Instance)の選択、[操作](Operation)オプション、[マテリアルの適用](Apply Material)の選択を変更できます。
ヒント: 既定値の設定で多数のオペランドをブール演算オブジェクトに追加する場合は、オブジェクトを選択するたびに結果を計算すると、プロセスの速度が低下します。最適なフィードバックを保持するために、[パラメータ](Parameters)ロールアウト [表示](Display)を[オペランド](Operands)に設定します。オペランドの追加が終了したら、[パラメータ](Parameters)ロールアウト/[表示](Display)の設定を[結果](Result)に戻します。または、[拡張オプション](Advanced Options)ロールアウトで[更新](Update)を[手動](Manually)に設定して、ブール演算の実行後に[更新](Update)ボタンをクリックして結果を確認する方法もあります。

ラジオ ボタンを選択して、選択する次のオペランドをブール演算オブジェクトへ転送する方法を指定します。

  • [参照](Reference)ブール演算では、選択されたオペランドへの参照を使用するので、ブール演算オブジェクトに組み込まれた後もオブジェクトは残ります。その後、元々選択したオブジェクトに修正を加えると、ブール演算も修正されます。[参照](Reference)を使用して、元のオペランドをモディファイヤで変更して新しいオペランドと同期させることはできますが、その逆はできません。
  • [コピー](Copy) ブール演算で、選択したオペランドのコピーが使用されます。選択したオブジェクトはブール演算の影響を受けずに、そのコピーがブール演算に組み込まれます。
  • [移動](Move) 選択したオペランドはブール演算に含まれ、シーン内で個別のオブジェクトとして使用できなくなります。これは既定の選択です。
  • [インスタンス](Instance) ブール演算で、選択したオブジェクトのインスタンスが作成されます。選択したオブジェクトに追加の変更を行うと、ブール演算に含まれるインスタンス化されたオブジェクトも変更され、逆方向の場合も同様に変更されます。

[パラメータ](Parameters)ロールアウト

[操作](Operation)領域

これらの設定で、ブール演算オペランド同士が物理的にどのように相互に影響するかを決定します。

2 つ以上の別々の項目を 1 つのブール演算オブジェクトに結合します。
交差
元のオブジェクト間の物理的な交差から「新しい」オブジェクトを作成します。交差していないボリュームは削除されます。
元のオブジェクトから、選択したオブジェクトのボリュームを除去します。
合成
どのジオメトリも除去することなく、オブジェクトを単一オブジェクトに組み合わせます。オブジェクトが交差している部分には新しいエッジが作成されます。
注: 以下の図では、表示プロパティの[背面非表示](Backface Cull)がオフになっているために、すべてのエッジが表示されています。

左: 元のオブジェクト(ボックス)とオペランド(小さいボックス)

中央: [和](Union)操作。小さいボックスの一部が除去されています。

右: [合成](Merge)操作。交差部分に新しいエッジが表示されています。

アタッチ
2 つ以上の別々の項目を、各項目のトポロジを変更せずに、1 つのブール演算オブジェクトに結合します。基本的に、結合された項目内でも、オペランドは各要素を保持します。

[アタッチ](Attach)(左)と[和](Union)(右)で結合されたボックスと球のプリミティブ

挿入
最初に 1 番目のオペランドから 2 番目のバウンディング ボリュームを除去し、次に 2 つのオブジェクトをグループ化します。

実際は、[挿入](Insert)は 1 番目のオペランドを液体のボリュームとして扱うため、挿入されたオペランドに穴または何らかの「液体が入る」形のものがあれば、「液体」はそのボリュームに流れ込むことになります。下の図は、この作用の例を示しており、左がシェーディングされたジオメトリで、右が対応するワイヤフレームです。

液体に挿入されたボウル。ボウルに穴が開いていたり傾いていれば、液体はその空洞の中に流れ込みます。

注: [挿入](Insert)は液体の置き換えをシミュレートするわけではなく、1 番目のオペランドの全体的な容積は変わりません。
形跡
シェイプのアウトライン(または交差エッジ)を元のメッシュ オブジェクトに刻み付けます。

左: 元のオブジェクト(ボックス)とオペランド(テキスト)

中央: 標準の[差](Subtraction)操作

右: [形跡](Imprint)をオンにした状態での[差](Subtraction)操作

注: [形跡](Imprint)操作の結果は、メインの[操作](Operation)に何を選択しているかに関係なく、常に同じです。
クッキー
元のメッシュ シェイプの面を切り取り、それらの面にのみ影響を与えます。選択したオペランドの面はブール演算結果には追加されません。

1. 元のオブジェクト(ボックス)とオペランド(球)

2. 標準の[差](Subtraction)操作

3. [クッキー](Cookie)をオンにした状態での[差](Subtraction)操作

4. 標準の[交差](Intersection)操作

5. [クッキー](Cookie)をオンにした状態での[交差](Intersection)操作

[表示](Display)領域

次の表示モードのいずれかを選択します。

  • [結果](Result)ブール演算の結果のみを表示し、個別のオペランドは表示しません。

    また、[結果](Result)を選択すると、モディファイヤ スタックの[ProBoolean]レベルもアクティブになります。

  • [オペランド](Operands) ブール演算の結果を定義するオペランドを表示します。このモードはオペランドを編集し、結果を変更するために使用します。

    また、[オペランド](Operands)を選択すると、モディファイヤ スタックの[オペランド](Operands)レベルもアクティブになります。

    また、多くのオペランドを選択する場合は、このモードを選択して結果を毎回再計算しないようにします。完了後に[表示](Display)の設定を[結果](Result)に戻します。

[マテリアル適用](Apply Material)領域

次のマテリアル適用モードのいずれかを選択します。

  • [オペランド マテリアルを適用](Apply Operand Material) ブール演算で作成された新しい面にはオペランドのマテリアルが使用されます。
  • [元のマテリアルを保持](Retain Original Material) ブール演算で作成された新しい面には元のオブジェクトのマテリアルが保持されます。
[サブオブジェクト操作](Sub-object Operations)領域

この領域は、階層ビュー リスト内でハイライトされたオペランドを操作します(以下を参照)。

注: これらの演算を実行するために、モディファイヤ スタックの[オペランド](Operands)サブオブジェクト レベルに変更する必要はありません。
選択を抽出
[選択を抽出](Extract Selected)は、選択したラジオ ボタン([削除](Remove)、[コピー](Copy)、[インスタンス](Inst)。以下を参照)に基づいて、階層ビュー リスト内のハイライト表示されたオペランドに操作を適用します。抽出モードには以下の 3 種類があります。
  • [削除](Remove) 階層ビュー リストでハイライト表示されているオペランドをブール演算結果から除外します。これは事実上、ハイライト表示されたオペランドのブール演算オブジェクトへの追加を取り消すことになります。抽出された各オペランドは再び最上位オブジェクトになります。
  • [コピー](Copy) 階層ビュー リストでハイライト表示されている 1 つまたは複数のオペランドのコピーを抽出します。元のオペランドはブール演算結果に含まれたままになります。
  • [インスタンス](Inst) 階層ビュー リストでハイライト表示されている 1 つまたは複数のオペランドのインスタンスを抽出します。この抽出されたオペランドを修正すると元のオペランドも修正され、ブール演算オブジェクトに影響します。
操作の順序を変更
階層ビュー リストでハイライト表示されたオペランドの順序を変更します。順序変更されたオペランドは、[操作の順序付け](Reorder Ops)ボタンの隣にあるテキスト フィールドに入力した位置に移動されます。
操作を変更
ハイライト表示されたオペランドの操作のタイプを変更します([操作](Operation)領域を参照)。 操作のタイプを変更するには、階層ビューでオペランドをハイライト表示し、操作タイプのラジオ ボタンを選択し、[操作を変更](Change Operation)をクリックします。
階層ビュー

[パラメータ](Parameters)ロールアウトの最下部に表示される階層ビューには、選択したメッシュを定義する全ブール演算のリストが表示されます。新しいブール演算を実行するたびに、3ds Maxはリストに新しい項目を追加します。

オペランドを階層ビュー リスト内でクリックすると、ハイライト表示され、これが修正対象になります。リスト内の複数の連続した項目をハイライト表示するには、最初の項目をクリックし、Shift を押したまま最後の項目をクリックします。複数の連続していない項目をハイライト表示するには、Ctrl を押したまま項目をクリックします。リスト項目のハイライト表示を解除するには、Alt を押したままハイライト表示された項目をクリックします。

モディファイヤ スタックの[ProBoolean]レベルでは、ハイライト表示されている項目に対するサブオブジェクト操作のみを実行できます。[オペランド](Operands)サブオブジェクト レベルでは、ハイライト表示されているオペランドの変換と、サブオブジェクト操作が実行できます。詳細は、「モディファイヤ スタック」を参照してください。

[拡張オプション](Advanced Options)ロールアウト

[更新](Update)領域

この領域のオプションは、変更を加えた後にブール演算オブジェクトに対して更新を実行するタイミングを決定します。以下のいずれかを選択します。

  • [常時](Always) ブール演算オブジェクトに変更を行うと同時に更新が実行されます。
  • [手動](Manually) [更新](Update)ボタンをクリックしたときにのみ更新が実行されます。
  • [選択時](When Selected) ブール演算オブジェクトを選択するたびに更新が実行されます。
  • [レンダリング時](When Rendering) レンダリング時、または[更新](Update)をクリックした時にのみ、ブール演算オブジェクトに更新が実行されます。
更新
ブール演算オブジェクトに変更を適用します。[常時](Always)以外のオプションが選択されている場合に使用できます。
注: 最初に[手動](Manually)または[レンダリング時](When Rendering)がアクティブな状態で ProBoolean オブジェクトを作成した場合、オペランド(ベース オブジェクトを含む)は 1 回以上更新を実行しないと表示されません。更新を実行してベース オブジェクトが表示されても、その後に選択したオペランドはもう一度更新を実行しないと表示されません。
デシメーション %
ブール演算オブジェクトのポリゴンから取り除かれるエッジの比率で、結果としてポリゴン数が減少します。たとえば、[デシメーション %](Decimation %)を 20.0 に設定すると、ポリゴン エッジの 20 パーセントが削除されます。

1. [デシメーション %](Decimation %)を 0.0 に設定

2. [デシメーション %](Decimation %)を 30.0 に設定

3. [デシメーション %](Decimation %)を 60.0 に設定

4. [デシメーション %](Decimation %)を 80.0 に設定

[四辺形面分割](Quadrilateral Tessellation)領域

この領域のオプションを使用すると、ブール演算オブジェクトの四角形面分割が有効になります。これは、オブジェクトをサブディビジョン サーフェスの編集とメッシュのスムージングに適した状態にします。また、オブジェクトを編集可能ポリゴン形式への変換に適したものにします。

このオプションの詳細については、「四角形メッシュおよびスムージング」のトピックを参照してください。

四辺形を作成
オンにすると、ブール演算オブジェクトの面分割が三角形から四辺形に変更されます。
注: [四辺形を作成](Make Quadrilaterals)がオンの場合、[デシメーション](Decimation)の設定は結果に影響しません。
四辺形のサイズ %
ブール演算オブジェクト全体の長さの比率として四角形のサイズを決定します。
[平面エッジ削除](Planar Edge Removal)領域

このオプションは、平面上のポリゴンの処理方法を決定します。以下のいずれかを選択します。

  • [全てを削除](Remove All) 面自体がポリゴンを定義するよう、面上のすべての余分な共面エッジを削除します。
  • [不可視エッジのみ削除](Remove Only Invisible) 各面の不可視エッジのみを削除します。
  • [エッジ削除なし](No Edge Removal) エッジは削除されません。