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

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

Delete SOP の頂点・面削除機能を示す図

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

概要 📖 – 範囲指定で頂点や面を削除

Delete SOPは、プリミティブやポイントを番号・境界・法線などの条件で識別して削除する SOPです。番号指定・境界ボリューム・法線方向といった複数手段を組み合わせて削除対象を絞り込めるため、ジオメトリの整理や領域抽出にも活用できます。

主な用途 🎯

  • 番号・パターン指定でプリミティブやポイントをまとめて削除
  • バウンディングボックス/球の内側だけを抽出または除外
  • 法線の向きで床面・天井面・カメラ背面など方向別に絞り込み
  • Filter Expression で属性値に応じた条件削除
  • ジオメトリだけ消してポイントを残す動作で再メッシュ化の下準備

データフロー 🔄

入力: ジオメトリ SOP

削除条件 (Group / Number / Bounding Volume / Normal ページのいずれかを有効化)

Operation で削除 or 反転 (Delete Selected / Delete Non-Selected)

出力: 条件にマッチした要素を除外した SOP

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

基本削除設定 📁

対象グループ指定 🎯

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°) の面以外を削除し、歩行可能エリアの抽出やマップタイル生成の前処理として使えます。

  1. Mountain メッシュを Convert SOP でポリゴン化し、Facet SOP で法線を再計算
  2. Delete SOP を後段に接続、Normal ページの Use Normal をオン
  3. Direction(0, 1, 0)Spread Angle を 15 度に設定
  4. OperationDelete 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 行で書けます。

  1. Grid SOP を配置 (20×20 = 400 ポイント)
  2. Delete SOP を後段に接続し、EntityPoints に切替
  3. Number ページで Use Number をオン、OperationDelete by Pattern に設定
  4. Pattern0-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 内に入る要素「以外」を削除することで、表示・編集対象を局所化してパフォーマンスを稼げます。

  1. 都市モデル SOP を Delete SOP に入力
  2. Bounding Volume ページで Use Bounds をオン
  3. Bounding TypeBounding BoxSize(50, 50, 50)Center(0, 0, 0) に設定
  4. OperationDelete Non-Selected に変更し、ボックス内に内包される要素のみ残す
  5. 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 🎯


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 TypeAll Types 以外になっていて、対象種別の要素が無いケースがないか確認
  • Number ページの Pattern の書式 (S.P 記法やワイルドカード) が公式 Pattern Matching の構文に合っているか確認
  • Bounding Volume の Size / Center が想定座標系とズレていないか、ガイドジオメトリで視覚的にチェック

❌ Problem: 法線で意図した面が選ばれない
✅ Solution:

  • 入力 SOP の法線が未計算 / 反転している可能性 — 上流に Facet SOP を入れて法線を再計算する
  • DirectionSpread Angle の組み合わせを見直し、円錐の開き角度が狭すぎないか確認
  • Backface from を使う場合は指定したカメラ オブジェクトが意図したビュー方向を向いているか確認

参考資料 📚

その他 🔗

公式リソース 📖

この記事は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をコピーしました