
概要 📖 – 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)
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
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 ボタンで非表示にできます。
属性補間モード 🎚️
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 SOP や Material 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 して陰影を整えるのが定番のクリーンアップ。
- Box SOP を作成 (Size = 5,5,5) し、Boolean SOP の 1 番目の入力 (A) に接続
- Sphere SOP を作成 (Radius = 3、Center を Box と同じ原点に揃える) し、Boolean SOP の 2 番目の入力 (B) に接続
- Boolean SOP の
OperationをA minus Bに設定し、Geometry Viewer で球状の穴が空いた立方体になることを確認 - 後段に Facet SOP を接続し、
Consolidate PointsとCuspを有効化して交差エッジの陰影を整える - 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 を別グループとして残せるため、それぞれに別マテリアルを割当てる配管・複合建築モデリングに有効です。
- Tube SOP を 2 個作成し、位置と回転を変えて L 字または T 字に配置
- それぞれを Boolean SOP の入力 1 / 入力 2 に接続
- Boolean SOP の
OperationをUnionに設定し、内部に隠れたポリゴンが削除されて 1 つの閉じた配管形状になることを確認 Create Groupsを ON、Group Aをtube_a_faces、Group Bをtube_b_facesに設定- 後段に Facet SOP (Consolidate Points + Orient Polygons + Cusp) を入れて陰影をクリーンアップ
- 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 でポイント順序を整列するのが標準的なフォローアップです。地形と球の交差ラインを抽出して輪郭線として使う、配管同士の溶接ラインを取り出す、といった用途に向きます。
- Grid SOP を作成し Boolean SOP の入力 1 (A) に接続、Sphere SOP を作成し入力 2 (B) に接続
- Boolean SOP の
OperationをA Edgeに設定し、Grid と Sphere の交差円が face として出力されることを確認 - 後段に Sort SOP を接続し、ポイント順序を整える
- 必要に応じて 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 🎯
- 前処理: Box SOP、Sphere SOP、Tube SOP、Grid SOP、Convert SOP、Divide SOP
- 後処理: Facet SOP、Transform SOP、Material SOP、Out 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 が出ない仕様
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Boolean SOP
- TouchDesigner公式ドキュメント – Facet SOP
- TouchDesigner公式ドキュメント – Divide SOP

