
概要 📖 – 平面によるジオメトリの切断
Clip SOPは、入力ジオメトリを任意の平面で切断し、平面より上・下・両側のいずれかを残す SOPです。Direction で平面の法線方向を指定し、Distance で平面の位置をオフセットします。切断時に上下のジオメトリを別グループとして抽出する機能も持ちます。
主な用途 🎯
- 3D モデルを任意平面で切断(プロダクト・建築モデルの分割)
- 断面ジオメトリの抽出(クロスセクション可視化)
- 平面より上下の片側だけを残す領域フィルタリング
- Distance を時間変化させて切開アニメーションを作る演出
- 破壊・展開エフェクトの初期ジオメトリ分割として下流の物理シミュレーションに渡す前処理
データフロー 🔄
入力: SOP ジオメトリ
↓
Direction で切断平面の法線を指定
↓
Distance で平面位置をオフセット
↓
Keep で保持する側を選択
↓
出力: 切断後のジオメトリ (任意で Above/Below グループ付き)
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
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」に設定する必要があります。
切断平面パラメータ 📐
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 で水平面より上を切り落とし、内部構造をクロスセクションとして可視化する基本フロー。
- Model SOP または File In SOP でモデルを読み込む
- Transform SOP でモデルの中心が原点に来るよう調整
- Clip SOP の Direction を
0 1 0、Distance を切断したい高さに設定 - Keep を「Primitives Below the Plane」にして上半分を除去
- Geometry COMP → Render TOP で結果を表示
Example 2: 時間アニメーションで切開していく演出 🎬
Sphere SOP → Clip SOP (Distance: animated) → Geometry COMP
Distance パラメータに時間関数を CHOP リファレンスで紐づけ、切断平面が時間とともに進行する演出を作る。スライス断面アニメーションや切開エフェクトの基礎。
- 対象ジオメトリ (Sphere / Model 等) を入力に接続
- Clip SOP の Distance に
absTime.seconds * 0.5のような Python 式を入力 - Keep を「All Primitives」にして折り目位置がスムーズに移動する状態を作る
- 再生して切断平面の進行を確認
Example 3: 破壊エフェクトの初期分割 💥
Sphere SOP → Refine SOP → Clip SOP (All Primitives + Create Groups) → Bullet Solver COMP
破壊シミュレーションの前段として Clip SOP で初期分割を行い、上下グループを Bullet Solver に別オブジェクトとして渡す。Refine SOP で事前にポリゴンを細かくしておくと自然な切断面が得られる。
- Refine SOP でジオメトリのポリゴン密度を上げる
- Clip SOP の Keep を「All Primitives」、Create Groups を有効化
- Above Plane / Below Plane に任意グループ名を入力
- 出力を 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 でノーマルを再計算してシェーディング品質を改善
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

