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

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

Clip SOP の平面切断機能を示す図

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

概要 📖 – 平面によるジオメトリの切断

Clip SOPは、入力ジオメトリを任意の平面で切断し、平面より上・下・両側のいずれかを残す SOPです。Direction で平面の法線方向を指定し、Distance で平面の位置をオフセットします。切断時に上下のジオメトリを別グループとして抽出する機能も持ちます。

主な用途 🎯

  • 3D モデルを任意平面で切断(プロダクト・建築モデルの分割)
  • 断面ジオメトリの抽出(クロスセクション可視化)
  • 平面より上下の片側だけを残す領域フィルタリング
  • Distance を時間変化させて切開アニメーションを作る演出
  • 破壊・展開エフェクトの初期ジオメトリ分割として下流の物理シミュレーションに渡す前処理

データフロー 🔄

入力: SOP ジオメトリ

Direction で切断平面の法線を指定

Distance で平面位置をオフセット

Keep で保持する側を選択

出力: 切断後のジオメトリ (任意で Above/Below グループ付き)

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Page 📋

Group .group 🎯

切断対象とする入力グループの指定:

  • Group パターン: 入力にグループがある場合、ここで指定したグループ名のジオメトリのみを切断対象とする。*[1-10] 等のパターンマッチングが利用可能

Keep .clipop ✂️

切断後にどの部分を保持するかを決定するメニューパラメータ

項目 内部名 説明
Primitives Above the Plane .above 切断平面より上側 (Direction が示す方向側) のプリミティブのみを保持
Primitives Below the Plane .below 切断平面より下側 (Direction と逆方向側) のプリミティブのみを保持
All Primitives .both 切断平面の上下両方のプリミティブを保持し、平面位置に折り目 (crease) を作る

※ 注意: Create Groups を有効化するには Keep を「All Primitives」に設定する必要があります。

引用元: 公式 docs

切断平面パラメータ 📐

Distance .dist 📏
– 切断平面を Direction ベクトル方向にオフセットする距離
– デフォルトの Direction 0 1 0 の場合、Distance に正値を入れると平面が Y 方向上方に移動

Direction .dir 🧭
– 切断平面の法線ベクトル (X, Y, Z) を指定
– デフォルト 0 1 0 は XZ 平面で切断 (Y 軸方向の法線)
1 0 0 は YZ 平面、1 1 0 のような値で 45 度斜めの平面も指定可能
– 内部パラメータ:

  • X (dirx)
  • Y (diry)
  • Z (dirz)

グループ生成 (All Primitives 時のみ) 🏷️

Create Groups .newg
– 有効化すると、切断平面の上下に分かれたジオメトリにそれぞれ専用グループを割り当てる
Keep を「All Primitives」に設定したときのみ利用可能

Above Plane .above ⬇️
– Create Groups 有効時、切断平面より下側のジオメトリに割り当てるグループ名
– 公式 docs の文言と挙動が一見逆に見えるため、生成された結果を Inspect で確認すること

Below Plane .below ⬆️
– Create Groups 有効時、切断平面より上側のジオメトリに割り当てるグループ名
– Above Plane と命名が反転している仕様のため、グループ確認は必須


実践アイデア 💡

Example 1: 建築モデルの断面表示 🏛️

Model SOP → Transform SOP → Clip SOP (Above) → Geometry COMP → Render TOP

外部から取り込んだ建築モデルを Transform SOP で姿勢調整した後、Clip SOP で水平面より上を切り落とし、内部構造をクロスセクションとして可視化する基本フロー。

  1. Model SOP または File In SOP でモデルを読み込む
  2. Transform SOP でモデルの中心が原点に来るよう調整
  3. Clip SOP の Direction を 0 1 0、Distance を切断したい高さに設定
  4. Keep を「Primitives Below the Plane」にして上半分を除去
  5. Geometry COMP → Render TOP で結果を表示

Example 2: 時間アニメーションで切開していく演出 🎬

Sphere SOP → Clip SOP (Distance: animated) → Geometry COMP

Distance パラメータに時間関数を CHOP リファレンスで紐づけ、切断平面が時間とともに進行する演出を作る。スライス断面アニメーションや切開エフェクトの基礎。

  1. 対象ジオメトリ (Sphere / Model 等) を入力に接続
  2. Clip SOP の Distance に absTime.seconds * 0.5 のような Python 式を入力
  3. Keep を「All Primitives」にして折り目位置がスムーズに移動する状態を作る
  4. 再生して切断平面の進行を確認

Example 3: 破壊エフェクトの初期分割 💥

Sphere SOP → Refine SOP → Clip SOP (All Primitives + Create Groups) → Bullet Solver COMP

破壊シミュレーションの前段として Clip SOP で初期分割を行い、上下グループを Bullet Solver に別オブジェクトとして渡す。Refine SOP で事前にポリゴンを細かくしておくと自然な切断面が得られる。

  1. Refine SOP でジオメトリのポリゴン密度を上げる
  2. Clip SOP の Keep を「All Primitives」、Create Groups を有効化
  3. Above Plane / Below Plane に任意グループ名を入力
  4. 出力を Bullet Solver COMP に渡して上下を独立オブジェクト化

関連オペレータ 🔗

類似機能OP 🔍

  • Boolean SOP — 任意ジオメトリ同士のブール演算 (積・和・差) で切断・抽出
  • Trim SOP — NURBS サーフェスをカーブで境界トリミング
  • Carve SOP — U/V パラメータで曲線・サーフェスの一部を抽出

組み合わせ推奨OP 🔄

  • Cap SOP — 切断面に蓋を生成して閉じたメッシュにする
  • Refine SOP — 前段でポリゴン密度を上げ滑らかな切断面を得る
  • Group SOP — Create Groups で生成したグループを後段で参照・操作
  • Geometry COMP — 切断後のジオメトリを 3D シーンに配置・表示

前処理・後処理SOP 🎯


Info CHOP情報 📊

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

ジオメトリ統計 📐

  • 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: このオペレータのエラー数

SOP 共通情報チャンネル 📊

  • num_points: 出力ジオメトリのポイント数 (切断後)
  • num_prims: 出力ジオメトリのプリミティブ数 (切断で分割された結果)
  • num_vertices: 出力ジオメトリの総頂点数
  • last_cook_ms: 最後にクックされた処理時間 (ミリ秒)

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

よくある問題と解決策 🔧

❌ Problem: Create Groups が動作しない
✅ Solution:

  • Keep が「All Primitives」になっているか確認 (Above / Below 単独では Create Groups は無効)
  • Above Plane / Below Plane フィールドに有効なグループ名 (空文字でない) を入力
  • 出力を Group SOP 等で受けて生成されたグループ一覧を確認

❌ Problem: 想定と違う面で切断される
✅ Solution:

  • Direction の各成分 (X / Y / Z) が法線ベクトルとして正しいか確認 (例: 床面に水平に切断したいなら 0 1 0)
  • Distance の符号と原点位置の関係を確認 (Direction 方向に正値で平面が移動)
  • 前段で Transform SOP による姿勢変換が入っていないか確認

❌ Problem: 切断面が開いたメッシュになる
✅ Solution:

  • Keep を「All Primitives」にした上で後段の Cap SOP で開口部を閉じる
  • ジオメトリが NURBS / Mesh ではなく Polygon になっているか Convert SOP で確認
  • 切断面の頂点が共有されていない場合は後段 Facet SOP の Unique Points / Consolidate Points で結合

❌ Problem: ポリゴンが粗く切断面がガタつく
✅ Solution:

  • 前段の Refine SOP でポリゴン分割数を増やして滑らかな切断面を得る
  • ベース形状を高解像度のメッシュに変える (Sphere SOP の Rows / Columns を上げる等)
  • 切断後 Facet SOP でノーマルを再計算してシェーディング品質を改善

参考資料 📚

その他 🔗

公式リソース 📖

関連オペレータ 🔗

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