Boolean SOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

※当サイトにはプロモーションリンクが含まれます。

Boolean SOP のブール演算 (union / intersect / minus / edge) 機能を示す図

記事更新の通知はXでアナウンス٩(๑❛ᴗ❛๑)
@maru6o6をフォロー

概要 📖 – 2 つのポリゴンメッシュに対する論理演算 (和・積・差・交差エッジ抽出)

Boolean SOPは、2 つの入力ポリゴンメッシュに対して論理演算 (Union / Intersect / A minus B / B minus A / A Edge / B Edge) を行い、結合・交差・差分形状や交差エッジ face を生成する SOPです。演算の種類は Operation パラメータで切替可能で、結果ジオメトリの陰影が乱れる場合は後段に Facet SOP を入れて Consolidate Points / Orient Polygons / Cusp で整えるのが定石です。

主な用途 🎯

  • 2 つの 3D メッシュの結合 (Union) による複合形状生成で、配管・建築マッス・干渉する複数オブジェクトを 1 つの閉じた形状に統合
  • 立体差分 (A minus B / B minus A) による穿孔・切削表現で、ボックスから球を引いて穴を空けるなどの形状減算を 1 ノードで実現
  • 交差領域 (Intersect) の抽出で、2 つのジオメトリが重なる共通部分のみを残し、型抜き・干渉判定・衝突体積の可視化に使用
  • 交差エッジ (A Edge / B Edge) の曲線抽出で、2 メッシュの接合線を独立した face として取り出し、後段で modeling や注釈に再利用
  • Create Groups による A 入力面・B 入力面の自動グルーピングで、結合後のジオメトリに対し由来別 (Group A / Group B) にマテリアルや属性を分けて適用

データフロー 🔄

入力 1 (A): 閉じたポリゴンメッシュ

入力 2 (B): 閉じたポリゴンメッシュ

Operation でブール演算を選択 (Union / Intersect / A minus B / B minus A / A Edge / B Edge)

Accurate Attributes Interpolation・Create Groups オプションを設定

出力: 演算結果のジオメトリ (Union / Intersect / minus は閉じた立体、Edge モードは交差面 face)

Tips

初心者の方は、以下日本語書籍も手元にあると安心です。

まる。
まる。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!


パラメータ解説 ⚙️

Page 📁

ブール演算の種類選択 🔄

2 つの入力に対して実行するブール演算の種類を選択するメニューパラメータ。Union / Intersect / minus は閉じた立体形状を返し、Edge モードは交差面のみの face を返します。

項目 内部名 説明
. 2 入力のジオメトリを結合し、内部に隠れたポリゴンを削除して 1 つの閉じた形状を返します。配管や交差する形状の合成、内部視点・透過表現を伴うシーンに有効。交差箇所のポイントは consolidate されません。
. 2 入力の重なり部分のみを残した閉じた形状を返します。共通体積外のジオメトリは破棄されます。
. 入力 A の形状から入力 B のジオメトリを切り抜いた閉じた形状を返します。穴あけ・切削表現の基本モード。
. 入力 B の形状から入力 A のジオメトリを切り抜いた閉じた形状を返します (A minus B の逆方向)。
. 2 入力の境界で生じた閉じた face を生成します (twist あり = 非平面となる場合あり)。ポイント順は不定のため、必要に応じて後段に Sort SOP を接続してポイント順序を整列できます。
. A Edge と同様の交差面 face を生成しますが、入力 B 由来の方向で構成されます。後段の Sort SOP でのポイント整列を推奨。

※ 注意: Boolean SOP は出力ポリゴンを自動的に同方向に整えますが、交差カット部の unshared edges が残るため陰影が乱れる場合があります。気になる場合は後段に Facet SOP を入れ、Consolidate Points / Orient Polygons / Cusp を順に有効にしてください。入力に非常に歪な形状のポリゴンが含まれる場合は、前段に Divide SOP を入れて両入力 (または片方) を三角形化してから Boolean に渡すと安定します。Guide ジオメトリは Viewport options の Guide geometry ボタンで非表示にできます。

引用元: 公式 docs

属性補間モード 🎚️

Accurate Attributes Interpolation .accattrib 🎚️
– 有効にすると入力ジオメトリが演算前に 三角形 (triangle) に細分割され、属性補間 (point color / UV / normal 等) の精度が向上
– 無効の場合は 四角形 (quadrilateral) に細分割され、属性補間の精度は下がる代わりに出力ポリゴン数が少なくなる
– point attributes や UV を後段で活用するシェーディング・マテリアル割当に渡す場合は ON が安全

結果ジオメトリの A/B グループ分け 🔍

Create Groups .creategroup 🔍
– 有効にすると、結合後のジオメトリに対し入力 A 由来の face入力 B 由来の faceを別々の Primitive Group として自動作成
– 由来別にマテリアルを切替えたい (例: A だけメタリック / B だけガラス) 場面で有効
– OFF の場合は単一の merged geometry として出力され、後段で由来を区別する手段がなくなる

Group A .groupa 🅰️
Create Groups = On のときに、入力 A 由来の face をまとめる Primitive Group の名前を指定
– 後段で Group SOPMaterial SOP から参照してマテリアルや属性を割り当てる際の識別子となる

Group B .groupb 🅱️
Create Groups = On のときに、入力 B 由来の face をまとめる Primitive Group の名前を指定
– Group A と対になるグループ名で、後段の Material / Group 操作で B 側のみを選択する用途に使用


実践アイデア 💡

Example 1: ボックスから球を引いて穴あきブロックを作成 (A minus B) 🕳️

Box SOP (A 入力) → Boolean SOP (Operation=A minus B) ← Sphere SOP (B 入力) → Facet SOP (Consolidate Points + Cusp) → Out SOP

立体差分 (Subtraction) の最も基本的な使い方です。中心を合わせた Box と Sphere を Boolean SOP に接続し、Operation を A minus B に設定することで、ボックスから球形の穴をくり抜いた形状を 1 ノードで生成できます。後段の Facet SOP で内部交差エッジに残った unshared edges を Consolidate / Cusp して陰影を整えるのが定番のクリーンアップ。

  1. Box SOP を作成 (Size = 5,5,5) し、Boolean SOP の 1 番目の入力 (A) に接続
  2. Sphere SOP を作成 (Radius = 3、Center を Box と同じ原点に揃える) し、Boolean SOP の 2 番目の入力 (B) に接続
  3. Boolean SOP の OperationA minus B に設定し、Geometry Viewer で球状の穴が空いた立方体になることを確認
  4. 後段に Facet SOP を接続し、Consolidate PointsCusp を有効化して交差エッジの陰影を整える
  5. Material SOP で表面マテリアルを割当て、Render TOP でレンダリングし結果を確認

Example 2: 2 本のチューブを Union で結合して配管形状を構築 🛠️

Tube SOP × 2 (異なる位置 / 方向) → Boolean SOP (Operation=Union, Create Groups=On) → Facet SOP → Material SOP × 2 (Group A / Group B で別マテリアル) → Out SOP

Union モードは複数の独立した立体を 1 つの閉じたメッシュに結合し、交差箇所の内部ポリゴンを自動的に削除します。Create Groups を有効化することで、結合後も A 由来 / B 由来の face を別グループとして残せるため、それぞれに別マテリアルを割当てる配管・複合建築モデリングに有効です。

  1. Tube SOP を 2 個作成し、位置と回転を変えて L 字または T 字に配置
  2. それぞれを Boolean SOP の入力 1 / 入力 2 に接続
  3. Boolean SOP の OperationUnion に設定し、内部に隠れたポリゴンが削除されて 1 つの閉じた配管形状になることを確認
  4. Create Groups を ON、Group Atube_a_facesGroup Btube_b_faces に設定
  5. 後段に Facet SOP (Consolidate Points + Orient Polygons + Cusp) を入れて陰影をクリーンアップ
  6. Material SOP を 2 個並列に接続し、片方は Group = tube_a_faces でメタリック、もう片方は Group = tube_b_faces でガラスを割当て

Example 3: A Edgeで交差ラインをfaceに抽出 📐

Grid SOP (A 入力) → Boolean SOP (Operation=A Edge) ← Sphere SOP (B 入力) → Sort SOP → Out SOP

A Edge / B Edge モードは閉じた立体を返す代わりに、2 入力の交差線を 1 つ以上の閉じた face として返します。ポイント順序は不定なため、そのまま Sweep SOP 等で連結すると形状が破綻することがあり、後段の Sort SOP でポイント順序を整列するのが標準的なフォローアップです。地形と球の交差ラインを抽出して輪郭線として使う、配管同士の溶接ラインを取り出す、といった用途に向きます。

  1. Grid SOP を作成し Boolean SOP の入力 1 (A) に接続、Sphere SOP を作成し入力 2 (B) に接続
  2. Boolean SOP の OperationA Edge に設定し、Grid と Sphere の交差円が face として出力されることを確認
  3. 後段に Sort SOP を接続し、ポイント順序を整える
  4. 必要に応じて Convert SOP で polyline 化し、Sweep SOP や Tube SOP の path 入力として再利用

関連オペレータ 🔗

類似機能OP 🔍

  • TODO

組み合わせ推奨OP 🔄

  • Facet SOP — 後段で Consolidate Points / Orient Polygons / Cusp により交差カット部の unshared edges を整理し、陰影品質を回復
  • Divide SOP — 前段で入力ポリゴンを三角形化しておくことで、歪んだポリゴンに対する Boolean 演算の安定性を上げる
  • Convert SOP — NURBS / Bezier 入力を polygon 化してから Boolean に渡すための前処理。Boolean は polygon メッシュを前提に動作するため必須となる場合がある
  • Material SOP — Create Groups で生成された Group A / Group B に対し、それぞれ異なるマテリアルを割り当てて配管・複合形状を仕上げる

前処理・後処理SOP 🎯


Info CHOP情報 📊

Boolean SOP は Info CHOP による詳細情報取得に対応しています。

ジオメトリ統計 📐

  • num_points: この SOP に含まれるポイント数
  • num_prims: この SOP に含まれるプリミティブ数
  • num_particles: この SOP に含まれるパーティクル数

GPU 転送タイミング 🎮

  • last_vbo_update_time: 別スレッドで SOP の CPU データを GPU 上のジオメトリデータに更新するのにかかった時間 (フレーム時間外)
  • last_meta_vbo_update_time: 別スレッドで metaball や NURBS のようなメタサーフェスジオメトリデータを GPU に更新するのにかかった時間 (フレーム時間外)

汎用オペレータ情報 🔄

  • total_cooks: プロセス開始以降にこのオペレータがクックされた合計回数
  • cook_time: 直近のクック所要時間 (ミリ秒)
  • cook_frame: このオペレータが最後にクックされたフレーム番号
  • warnings: このオペレータの警告数
  • errors: このオペレータのエラー数

クック統計 ⏱️

  • total_cooks: total_cooks — プロセス開始以降に Boolean SOP がクックされた累計回数。リアルタイムにブール演算を再計算している場合の負荷監視に使う
  • cook_time: cook_time — 直近のクック所要時間 (ミリ秒)。入力ポリゴン数が多いと急激に増えるため、ボトルネック検出指標
  • cook_frame: cook_frame — Boolean SOP が最後にクックされたフレーム番号。クックが期待通り走っているかの確認に使う

トラブルシューティング ⚠️

よくある問題と解決策 🔧

❌ Problem: Boolean 演算後にメッシュの陰影 (シェーディング) がガタガタ・面が割れて見える
✅ Solution:

  • 後段に Facet SOP を入れて Consolidate Points / Orient Polygons / Cusp を順に有効化するのが定石。交差カット部に残った unshared edges を整理することで陰影が回復する
  • Phong / smooth shading 前提なら法線方向の自動整列が必要。Facet SOP の Orient Polygons が法線整列を担当
  • それでも改善しない場合は前段に Divide SOP を入れて両入力 (または片方) を三角形化してから Boolean に渡すと安定する

❌ Problem: 出力ジオメトリが空 / 想定した穴や結合が生成されない
✅ Solution:

  • 入力 A と B が両方とも閉じたポリゴンメッシュ (closed manifold) であることを確認。開いた face や穴があるメッシュでは Boolean が正常な closed shape を返せない
  • 入力が NURBS / Bezier の場合は前段に Convert SOP を入れて polygon に変換する
  • 2 つの入力が物理的に交差しているか確認 (完全に離れている / 完全に含まれている場合、演算結果が直感と合わないことがある)。Transform SOP で重なり位置を調整

❌ Problem: 歪んだ・非凸 (non-convex) ポリゴンを含むメッシュで Boolean が失敗する
✅ Solution:

  • 前段に Divide SOP を入れて入力を三角形化することで、非凸面・歪な面の解釈不能を回避できる
  • 両方の入力を三角形化するのが理想だが、計算コストを抑えたい場合は問題のある側 (歪んだ面を含む側) だけ三角形化しても効果がある
  • ポリゴン数が膨大になるとクック時間が急増するため、Decimate SOP や Reduce SOP で予め簡略化しておくと安定する

❌ Problem: A Edge / B Edge の出力 face のポイント順序がランダムで後処理が困難
✅ Solution:

  • 後段に Sort SOP を接続してポイント順序を整列することで、ポイント順序が整列され Sweep SOP や Tube SOP の path として再利用可能になる
  • Edge 出力は twist (非平面) する可能性があるため、平面前提の後処理を行う場合は注意が必要
  • 必要であれば Convert SOP で polyline 化し、curve として扱う

❌ Problem: Geometry Viewer に表示される Guide ジオメトリが作業の邪魔になる
✅ Solution:

  • Viewport options ダイアログを開き、Guide geometry ボタンをクリックして無効化する。この設定は global に効くため、他の SOP の Guide ジオメトリ表示も同時に消える点に注意
  • Intersect モード / A Edge / B Edge モードでは Guide ジオメトリとして両入力が表示されるが、A minus B / B minus A では引かれる側のみ、Union では Guide が出ない仕様

参考資料 📚

その他 🔗

公式リソース 📖

この記事はLLMと共に内容を執筆、更新しています。
最新バージョンとの項目差異など、情報の不一致を見つけた心優しい方はXもしくはInsta、メールなどよりサイト管理者までご連絡ください😎


まる。

お仕事のご依頼はDM又はメールにて。
━━━━━━━━━━━━━━━━━
Python/Touchdesigner/M5Stackをこよなく愛すフルスタックエンジニア。
専門は生理心理学、趣味はヨガやサウナ、EMS電気風呂などヘルスケア全般。
脳波や筋電、心拍を中心とした生体情報のセンシング&インタラクティブアートづくりがライフワーク。

普段はワントゥーテンという会社で空間演出エンジニアをしています。
リファラル採用お繋ぎできますので、我こそはという尖った方は経歴と希望職種添えてDMください(エンジニア以外、営業職等もOK)。
ご飯行きましょう。

↓日常垢
Instagram:@malmal0v0

まる。をフォローする
その他の記事はこちら
Math Combine POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED Select TOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Window COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Widget COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

タイトルとURLをコピーしました