
概要 📖 – 範囲指定で頂点や面を削除
Delete SOPは、プリミティブやポイントを番号・境界・法線などの条件で識別して削除する SOPです。番号指定・境界ボリューム・法線方向といった複数手段を組み合わせて削除対象を絞り込めるため、ジオメトリの整理や領域抽出にも活用できます。
主な用途 🎯
- 番号・パターン指定でプリミティブやポイントをまとめて削除
- バウンディングボックス/球の内側だけを抽出または除外
- 法線の向きで床面・天井面・カメラ背面など方向別に絞り込み
- Filter Expression で属性値に応じた条件削除
- ジオメトリだけ消してポイントを残す動作で再メッシュ化の下準備
データフロー 🔄
入力: ジオメトリ SOP
↓
削除条件 (Group / Number / Bounding Volume / Normal ページのいずれかを有効化)
↓
Operation で削除 or 反転 (Delete Selected / Delete Non-Selected)
↓
出力: 条件にマッチした要素を除外した SOP
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
基本削除設定 📁
対象グループ指定 🎯
Group .group 🏷️
– Group (グループ名) — このノードで新規作成するグループの名前を指定
– デフォルト値はこの SOP の名前と一致
– Group SOP で作成済みの既存グループ名を入れると、そのグループに含まれる要素だけを削除対象として扱える
削除モード .negate 🔄
Operation (削除モード) — 選択した要素を消すか、それ以外を残すかを切替
| 項目 | 内部名 | 説明 |
|---|---|---|
| Delete Selected | .dele |
選択した要素を削除 (デフォルト) |
| Delete Non-Selected | .keep |
選択した要素以外を削除 (= 抽出として利用) |
削除対象の種類 .entity 🧩
Entity (削除対象の種類) — 削除する単位がプリミティブ (面) かポイント (頂点) かを選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| Primitives | .primitive |
プリミティブ (面・曲線・サーフェスなど) を削除 |
| Points | .point |
ポイント (頂点) を削除 |
ジオメトリ種別 .geotype 🔷
Geometry Type (ジオメトリ種別) — 特定の種類のプリミティブに限定して削除対象に含める
| 項目 | 内部名 | 説明 |
|---|---|---|
| All Types | .all |
すべての種類のジオメトリを対象 (デフォルト) |
| Bezier Curve | .bezierc |
Bezier 曲線のみ対象 |
| Bezier Surface | .bezier |
Bezier サーフェスのみ対象 |
| Circle | .circle |
円プリミティブのみ対象 |
| Mesh | .mesh |
メッシュプリミティブのみ対象 |
| Metaball | .meta |
メタボールのみ対象 |
| NURBS Curve | .nurbc |
NURBS 曲線のみ対象 |
| NURBS Surface | .nurb |
NURBS サーフェスのみ対象 |
| Particles | .part |
パーティクルのみ対象 |
| Sphere | .sphere |
球プリミティブのみ対象 |
| Tube | .tube |
チューブプリミティブのみ対象 |
| Triangle Strip | .tristrip |
トライアングルストリップのみ対象 |
| Triangle Fan | .trifan |
トライアングルファンのみ対象 |
番号で削除 🔢
番号モード設定 🔘
Use Number .usenumber ✅
– Use Number (番号モード有効化) — Number ページの選択機能を有効化するスイッチ
– オフのときは Pattern / Start/End / Filter Expression は全て無視される
番号の指定方式 .groupop 📐
Operation (番号の指定方式) — 番号で要素を絞り込む方法をパターン式か範囲指定かで切替
| 項目 | 内部名 | 説明 |
|---|---|---|
| Delete by Pattern | .pattern |
Pattern 欄に書いた番号パターンで対象を選択 |
| Delete by Range | .range |
Start/End と Select _ of _ で連続範囲を指定して選択 |
パターン式 🧮
Pattern .pattern 🔡
– Pattern (パターン式) — Delete by Pattern モード時に削除対象を指定する文字列
– 形式は S.P (S=親サーフェス番号、P=プロファイル番号) で、プリミティブとプロファイルを混在記述可能
– 例: 0-100:2 = 0〜100 を 2 個飛びで選択 / !4 = 4 番以外 / * = すべて / 9-0 = 0〜9 を逆順 / 0.* = プリミティブ 0 上の全プロファイル
範囲指定 📏
Start / End .range 📍
– Start / End (範囲指定) — Delete by Range モード時に削除する番号の開始と終了
– 例: 0〜99 を指定するとプリミティブ/ポイント番号 0 から 99 までを対象にする
Select _ of _ .select 🪟
– Select _ of _ (n / m 間引き選択) — Start/End の範囲内で m 個ごとに n 個を選ぶ間引き指定
– 例: 1 / 2 → 2 個ごとに 1 個を対象に含める (= 1 つおきに削除)
属性式で絞り込み 🧠
Filter Expression .filter 🧮
– Filter Expression (属性式で絞り込み) — 各ポイント/プリミティブごとに評価する Python 式
– 評価結果が真 (truthy) になった要素が削除対象に追加される
– 例: 法線 Y 成分が負のものだけ削除する条件式を書けば、属性駆動で柔軟な削除ができる
境界で削除 📦
境界モード設定 🔘
Use Bounds .usebounds ✅
– Use Bounds (境界モード有効化) — Bounding Volume ページの判定を有効化するスイッチ
– 有効時、ビューポート上に削除判定の境界形状がガイドジオメトリとして表示される
境界形状の種類 .boundtype 🔷
Bounding Type (境界形状の種類) — 判定に使う境界ボリュームの形状を選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| Bounding Box | .usebbox |
直方体に内包される要素を選択 |
| Bounding Sphere | .usebsphere |
球に内包される要素を選択 |
境界の大きさと位置 📐
Size .size 📏
– Size (境界サイズ) — Bounding Box または Bounding Sphere の X / Y / Z 寸法
Center .t 📍
– Center (境界中心) — 境界ボリュームの中心の X / Y / Z 座標
法線で削除 🧭
法線モード設定 🔘
Use Normal .usenormal ✅
– Use Normal (法線モード有効化) — Normal ページの方向判定を有効化するスイッチ
– 主軸方向 (Direction) と展開角度 (Spread Angle) で円錐状の方向範囲を作り、その範囲内の法線をもつ要素を選択する
方向軸と展開角 🧭
Direction .dir 📐
– Direction (主軸方向) — 法線判定の基準となるベクトル
– 例: (0, 1, 0) = Y 軸 (床のように上向きの面) / (0, -1, 0) = 下向き (天井) / (1, 0, 0) = X 軸
Spread Angle .angle 📐
– Spread Angle (展開角度) — 主軸からの偏差を許容する角度 (度)
– 主軸を中心とする円錐を想像し、その円錐内に法線が入る要素が選択対象になる
Backface from .camera 🎥
– Backface from (背面判定の視点) — 指定したオブジェクト (通常はカメラ) から見て背面 (backface) になるプリミティブを選択
– 視錐台に対する裏面カリングをジオメトリ側で先に行いたいときに使う
後処理オプション 🧹
Delete Unused Groups .removegrp 🗑️
– Delete Unused Groups (未使用グループ削除) — 削除後に要素数 0 になったグループも併せて消す
– 空グループを残したい場合はオフ
Delete Geometry, Keep Points .keeppoints ♻️
– Delete Geometry, Keep Points (面だけ削除しポイント残し) — プリミティブだけ消してポイントを残す
– 後段の Add SOP などでポイントを再利用し、新しい接続を引き直すワークフローと相性が良い
実践アイデア 💡
Example 1: 床向き法線で抽出 🌄
Mountain 入力 SOP → Facet SOP (Compute Normals) → Delete SOP (Use Normal=ON, Direction=(0,1,0), Spread Angle=15, Operation=Delete Non-Selected) → Geometry COMP
山岳メッシュから「ほぼ水平な床面のみを残す」処理。法線がほぼ上向き (Y 軸 ±15°) の面以外を削除し、歩行可能エリアの抽出やマップタイル生成の前処理として使えます。
- Mountain メッシュを Convert SOP でポリゴン化し、Facet SOP で法線を再計算
- Delete SOP を後段に接続、Normal ページの
Use Normalをオン Directionを(0, 1, 0)、Spread Angleを 15 度に設定OperationをDelete Non-Selectedに変更し、上向き法線「以外」を削除
Example 2: 番号パターンで間引き 🔢
Grid SOP (Rows=20, Columns=20) → Delete SOP (Use Number=ON, Operation=Delete by Pattern, Pattern=0-399:2, Entity=Points)
Grid SOP で生成した格子ポイント群を 2 個飛びで削除し、市松模様や粒度を下げたサンプリング点列を作る例。Pattern 式の S:N 記法で広範囲の間引きを 1 行で書けます。
- Grid SOP を配置 (20×20 = 400 ポイント)
- Delete SOP を後段に接続し、
EntityをPointsに切替 - Number ページで
Use Numberをオン、OperationをDelete by Patternに設定 Patternに0-399:2を入力 (0〜399 から 2 個ごとに 1 個を削除)
Example 3: 境界内だけ残す 📦
City Model SOP → Delete SOP (Use Bounds=ON, Bounding Type=Bounding Box, Size=(50,50,50), Center=(0,0,0), Operation=Delete Non-Selected) → Geometry COMP
巨大な都市モデルから、中央 50 m 角の関心領域内のジオメトリだけを残す例。Bounding Box 内に入る要素「以外」を削除することで、表示・編集対象を局所化してパフォーマンスを稼げます。
- 都市モデル SOP を Delete SOP に入力
- Bounding Volume ページで
Use Boundsをオン Bounding TypeをBounding Box、Sizeを(50, 50, 50)、Centerを(0, 0, 0)に設定OperationをDelete Non-Selectedに変更し、ボックス内に内包される要素のみ残す- Geometry COMP でレンダリングし、関心領域だけが表示されることを確認
関連オペレータ 🔗
類似機能OP 🔍
- Select SOP — 条件にマッチする要素「だけ」を抽出する SOP (Delete SOP の反対側の用途)
- Clip SOP — 平面でジオメトリを切断・カリングする
- Trim SOP — 曲線やサーフェスを U/V 区間でトリミングする
組み合わせ推奨OP 🔄
- Group SOP — 事前にグループ化しておくと Delete SOP の
Group欄でグループ単位の削除が可能 - Merge SOP — Delete SOP の出力を他ジオメトリと統合
- Convert SOP — 削除前にプリミティブ種別を統一しておくと
Geometry Typeの動作が安定する - Geometry COMP — Delete SOP の出力をレンダリングパイプラインに投入
前処理・後処理SOP 🎯
- 前処理: Grid SOP、Sphere SOP、Group SOP
- 後処理: Merge SOP、Convert SOP、Facet SOP
Info CHOP情報 📊
Delete 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— プロセス開始以降にこのオペレータがクックされた合計回数cook_time:cook_time— 直近のクック所要時間 (ミリ秒)cook_frame:cook_frame— このオペレータが最後にクックされたフレーム番号
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: ノードを通しても何も削除されない
✅ Solution:
- Number / Bounding Volume / Normal のいずれかで
Use ...スイッチをオンにしているか確認 (どれもオフだと削除条件が成立しない) Operationが意図したモード (Delete Selected/Delete Non-Selected) になっているか確認Entityがプリミティブ削除なのにポイントを指定している (またはその逆) の取り違えがないかを確認
❌ Problem: 期待した範囲が選ばれない
✅ Solution:
Geometry TypeがAll Types以外になっていて、対象種別の要素が無いケースがないか確認- Number ページの
Patternの書式 (S.P記法やワイルドカード) が公式 Pattern Matching の構文に合っているか確認 - Bounding Volume の
Size/Centerが想定座標系とズレていないか、ガイドジオメトリで視覚的にチェック
❌ Problem: 法線で意図した面が選ばれない
✅ Solution:
- 入力 SOP の法線が未計算 / 反転している可能性 — 上流に Facet SOP を入れて法線を再計算する
DirectionとSpread Angleの組み合わせを見直し、円錐の開き角度が狭すぎないか確認Backface fromを使う場合は指定したカメラ オブジェクトが意図したビュー方向を向いているか確認
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Delete SOP
- TouchDesigner公式ドキュメント – Group SOP
- TouchDesigner公式ドキュメント – Select SOP
- TouchDesigner公式ドキュメント – Pattern Matching

