
概要 📖 – 曲面を輪郭線で切り抜く
Trim SOPは、スプライン曲面の上に乗ったプロファイルカーブを境界として、曲面の表示範囲を内側・外側で切り抜く SOPです。Operation パラメータで Keep Inside (輪郭の内側を残す) と Keep Outside (輪郭の内側を穴としてくり抜く) を切替でき、後段の Skin SOP や Sweep SOP に整ったトリム曲面を渡す前処理として機能します。
主な用途 🎯
- NURBS / Bezier 曲面の上に乗ったプロファイルカーブを境界として、曲面の表示範囲を切り抜く (トリミング)ことで、円形の窓・穴あき形状・自由曲線でくり抜いたパネルなどを 1 ノードで表現
- Keep Inside / Keep Outside の切替で、輪郭の内側を残すか外側を残すか (穴あけ) を制御し、ロゴ刻印・装飾パネル・建築ファサードの開口部などをスプライン曲面上に作り込む
- 複数のプロファイルカーブを順に Keep Inside → Keep Outside と重ねがけして、ドーナツ状・入れ子状の複雑な開口形状を構築し、Build outer Trim-Loop Explicitly で外周ループを明示的に生成
- Untrim でトリムを解除して元の素のプロファイル曲線へ戻すことで、トリミングのやり直しや、トリム前の曲面形状への復帰を実現
- Trimming Tolerance による交差判定精度の調整で、プロファイルが曲面の縁ぎりぎりを通る難しいケースでもトリムループを安定して閉じることを可能にし、後段の Skin / Sweep SOP に渡せる整ったトリム曲面を生成
データフロー 🔄
入力: プロファイルカーブが乗った NURBS / Bezier 曲面
↓
Group でトリム対象のプロファイルを絞り込み
↓
Operation (Keep Inside / Keep Outside / Untrim 等) で残す範囲を選択
↓
Trimming Tolerance で交差判定の精度を調整、必要なら Build outer Trim-Loop で外周ループを生成
↓
出力: 指定した輪郭で表示範囲が切り抜かれたトリム曲面
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Trim Page 📁
トリム対象の絞り込み 🔍
Group .group 🅰️
– Group (トリム対象グループ) — トリムの対象としたいグループを指定。ポップアップメニューから選ぶか、ポイント・プリミティブの範囲を直接記述
– スプライン曲面内の特定プロファイルを指定する場合はプロファイルパターンを与える (例: *.3 はすべてのスプライン曲面の 4 番目のプロファイルを指定)
– 空欄の場合は対象曲面上のすべてのプロファイルがトリムループの構成要素として扱われる
トリム操作の種類 .optype 🔄
Operation (トリム操作) — 輪郭の内側・外側のどちらを残すか、トリムを解除するかを選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| Keep Outside | .keepout |
輪郭の内側を切り取り、曲面に穴をあける。プロファイルカーブの外側を残し、表示する曲面の限界を定義する外周トリムループが生成される |
| Keep Inside | .keepin |
輪郭の内側を残し、それ以外の表示を取り除く |
| Keep Natural | .keepnatural |
プロファイルの自然な向き (開いているか閉じているか) に基づいてトリム。反時計回りのプロファイルは内側を残し (Keep Inside 相当)、時計回りのプロファイルは内側を破棄する (Keep Outside 相当)。外周トリムループが無い場合は明示的に必要になることがある |
| Untrim | .untrim |
トリムカーブを素のプロファイルへ戻し、トリミングを解除する |
| Change Altitude | .chgalt |
トリムの高度 (Altitude) のみを変更する。下記 Altitude パラメータと併用してトリムイン・トリムアウトの境界を移動させる |
トリムループの構成 🧩
Process Profiles Individually .individual 🔀
– Process Profiles Individually (プロファイルを個別処理) — OFF のとき、グループ内のトリムループ (グループ未指定なら曲面上のすべてのループ) はまとめて 1 つの領域を形成すると見なされる
– 複数の線をつないで複数の閉ループが作れる場合でも、最初に見つかった領域が報告される。閉ループが 1 つあればそのループだけが使われる
– ループが閉じない場合、SOP は領域の境界を使って領域を形成しようと試みる。例えば Carve SOP で U 方向 2 本・V 方向 2 本の計 4 本のプロファイルを抽出してこのオプションを OFF にすると、端点が一致せず・連続でも・正しい順序でもないのに、Trim SOP は領域を解決して穴を作る
Build outer Trim-Loop Explicitly .bigloop ⭕
– Build outer Trim-Loop Explicitly (外周トリムループを明示生成) — 曲面に複数のプロファイルカーブがあり、Keep Inside と Keep Outside を組み合わせて複数回のトリムを行う場合に、外周トリムループを生成するよう指定する
– デフォルトでは曲面ドメインの境界全周を回る外周ループが自動生成される
– Tip: 曲面に最初に穴をあけるときは外周トリムループが必要だが、穴の中身を残して残りを捨てる場合は不要。先に Keep Inside、その後に保持領域の外側で Keep Outside を行うようなケースで明示的に有効化すると役立つ
精度と高度の設定 📏
Trimming Tolerance .trimtol 📐
– Trimming Tolerance (トリミング許容誤差) — 2 本のトリムカーブ同士、またはトリムカーブとパッチの縁が、交差していると見なされるためにどれだけ近接している必要があるかを指定する float 値
– プロファイルが曲面の縁ぎりぎりを通り、トリムループがうまく閉じない場合は、この値を調整して交差判定を安定させる
Altitude .altitude 📊
– Altitude (高度) — トリムの高度を指定する。$ALTITUDE 変数は曲面の現在の高度を表す
– この値が、曲面がトリムインからトリムアウトへ切り替わる境界を定める。Change Altitude 操作と併用する
実践アイデア 💡
Example 1: 丸窓をあける 🕳️
Grid SOP (NURBS 曲面) → Project SOP / Trim SOP (Operation=Keep Outside) ← Circle SOP (プロファイルカーブ) → Out SOP
Trim SOP の最も基本的な使い方です。NURBS 曲面の上に円形のプロファイルカーブを乗せ、Operation を Keep Outside に設定することで、円の内側がくり抜かれて丸窓のような穴あき曲面になります。建築ファサードの開口部や、装飾パネルの抜き穴を曲面上に作り込む場面で機能します。
- Grid SOP を作成し、Connectivity を NURBS に設定してスプライン曲面を生成
- Circle SOP で円形のプロファイルカーブを作り、曲面の上に投影されるよう配置 (必要なら Project SOP で曲面上へ投影)
- Trim SOP の入力に、プロファイルカーブが乗った曲面を接続
- Trim SOP の
OperationをKeep Outsideに設定し、円の内側が穴としてくり抜かれることを Geometry Viewer で確認 - 穴がうまく閉じない場合は
Trimming Toleranceを下げて交差判定を安定させる
Example 2: 内側だけ残す 🪟
NURBS Surface → Trim SOP (Operation=Keep Inside) ← Profile SOP / Carve SOP (プロファイルカーブ) → Skin SOP → Out SOP
Keep Inside モードは、プロファイルカーブの内側だけを残してそれ以外を取り除くモードです。自由曲線で描いた輪郭の形に曲面を切り出したい場合に有効で、ロゴ形状や有機的なパネル形状をスプライン曲面から抜き出すのに向きます。Carve SOP で U / V 方向のプロファイルを抽出して輪郭を組むと、複雑な領域も切り出せます。
- NURBS / Bezier 曲面を用意し、その上に切り出したい輪郭のプロファイルカーブを Profile SOP や Carve SOP で作成
- Trim SOP の入力に曲面を接続し、
OperationをKeep Insideに設定 - 輪郭の内側だけが残り、外側が削除されることを確認
- プロファイルが複数本に分かれている場合は
Process Profiles Individuallyを OFF にし、まとめて 1 つの領域として閉じさせる - 後段に Skin SOP を接続し、切り出したトリム曲面を再構成・立体化
Example 3: トリムを解除 🔁
Trim 済み曲面 → Trim SOP (Operation=Untrim) → Out SOP
Untrim モードは、いったん適用したトリムを解除して素のプロファイル曲線の状態へ戻すモードです。トリム結果が想定と違ったときのやり直しや、トリム前の曲面形状へ復帰させたい場合に使います。複数回のトリムを試行錯誤するワークフローで、リセット用のノードとして組み込んでおくと便利です。
- すでにトリム済みの NURBS / Bezier 曲面を Trim SOP の入力に接続
- Trim SOP の
OperationをUntrimに設定 - トリムループが解除され、曲面が素のプロファイルを持つ状態に戻ることを確認
- 必要に応じて別の
Operation(Keep Inside / Keep Outside) を持つ Trim SOP を後段に接続し、トリムをやり直す
関連オペレータ 🔗
類似機能OP 🔍
- Carve SOP — プリミティブを U / V 方向に切断・抽出する SOP。Trim が表示範囲をくり抜くのに対し、Carve はパラメトリックな切り出しでプロファイルを生成
- Profile SOP — 曲面上のプロファイルカーブを操作・管理する SOP。Trim の入力となるトリムループの前処理に使われる
組み合わせ推奨OP 🔄
- Profile SOP — 曲面上のトリム用プロファイルカーブを生成・編集し、Trim の入力として供給
- Project SOP — 別 SOP で作ったカーブを曲面上へ投影してプロファイル化し、Trim のトリムループに使える形へ整える前処理
- Carve SOP — U / V 方向にプロファイルを抽出し、Process Profiles Individually=Off で領域を形成するトリムループ生成に活用
- Skin SOP — トリムで切り出したプロファイル曲線群を skin して、トリム曲面を再構成する後処理
- Sweep SOP — 整ったトリム曲面・トリムプロファイルを path / cross section として受け取り、立体化する後処理
前処理・後処理SOP 🎯
- 前処理: Profile SOP、Project SOP、Carve SOP、Circle SOP、Grid SOP
- 後処理: Skin SOP、Sweep SOP、Convert SOP、Transform SOP、Out SOP
Info CHOP情報 📊
Trim 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— プロセス開始以降に Trim SOP がクックされた累計回数。Trimming Tolerance を細かく調整して再計算する場合の負荷監視に使用cook_time:cook_time— 直近クックの所要時間 (ミリ秒)。多数のプロファイルを持つ曲面をトリムする場合は値が増えやすく、ボトルネック検出の指標となるcook_frame:cook_frame— Trim SOP が最後にクックされたフレーム番号。クックが期待通り走っているかの確認に使用
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: トリムループが閉じない / 穴があかない
✅ Solution:
Trimming Toleranceの値を段階的に下げる。2 本のトリムカーブ同士や、カーブと曲面の縁が交差していると見なされる近接距離が足りていない場合、穴が閉じずトリムが効かない- プロファイルが複数本に分かれている場合は
Process Profiles Individuallyを OFF にして、ループをまとめて 1 つの領域として閉じさせる - プロファイルカーブが曲面の上に正しく乗っているか確認。乗っていない場合は前段に Project SOP を入れて曲面上へ投影する
❌ Problem: 内側と外側が逆に切り抜かれてしまう
✅ Solution:
OperationをKeep InsideとKeep Outsideで切替えて、残したい範囲を選び直すKeep Naturalはプロファイルの向き (時計回り / 反時計回り) で内外が決まるため、意図しない結果になる場合は明示的に Keep Inside / Keep Outside を指定する- 複数回のトリムを重ねる場合は
Build outer Trim-Loop Explicitlyを有効化して外周ループを明示的に生成し、内外判定を安定させる
❌ Problem: トリムをやり直したい / 元の曲面に戻したい
✅ Solution:
OperationをUntrimに設定することで、トリムカーブを素のプロファイルへ戻し、トリミングを解除する- Untrim 後に改めて別の
Operationを持つ Trim SOP を後段に接続して、トリムを最初からやり直す - 高度のみを調整したい場合は
OperationをChange AltitudeにしてAltitudeパラメータでトリムイン・トリムアウトの境界を移動させる
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Trim SOP
- TouchDesigner公式ドキュメント – Profile SOP
- TouchDesigner公式ドキュメント – Carve SOP

