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

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

Trim SOP のプロファイルカーブによる曲面トリミングを示す図

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

概要 📖 – 曲面を輪郭線で切り抜く

Trim SOPは、スプライン曲面の上に乗ったプロファイルカーブを境界として、曲面の表示範囲を内側・外側で切り抜く SOPです。Operation パラメータで Keep Inside (輪郭の内側を残す) と Keep Outside (輪郭の内側を穴としてくり抜く) を切替でき、後段の Skin SOPSweep 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 で外周ループを生成

出力: 指定した輪郭で表示範囲が切り抜かれたトリム曲面

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

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 に設定することで、円の内側がくり抜かれて丸窓のような穴あき曲面になります。建築ファサードの開口部や、装飾パネルの抜き穴を曲面上に作り込む場面で機能します。

  1. Grid SOP を作成し、Connectivity を NURBS に設定してスプライン曲面を生成
  2. Circle SOP で円形のプロファイルカーブを作り、曲面の上に投影されるよう配置 (必要なら Project SOP で曲面上へ投影)
  3. Trim SOP の入力に、プロファイルカーブが乗った曲面を接続
  4. Trim SOP の OperationKeep Outside に設定し、円の内側が穴としてくり抜かれることを Geometry Viewer で確認
  5. 穴がうまく閉じない場合は 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 方向のプロファイルを抽出して輪郭を組むと、複雑な領域も切り出せます。

  1. NURBS / Bezier 曲面を用意し、その上に切り出したい輪郭のプロファイルカーブを Profile SOPCarve SOP で作成
  2. Trim SOP の入力に曲面を接続し、OperationKeep Inside に設定
  3. 輪郭の内側だけが残り、外側が削除されることを確認
  4. プロファイルが複数本に分かれている場合は Process Profiles Individually を OFF にし、まとめて 1 つの領域として閉じさせる
  5. 後段に Skin SOP を接続し、切り出したトリム曲面を再構成・立体化

Example 3: トリムを解除 🔁

Trim 済み曲面 → Trim SOP (Operation=Untrim) → Out SOP

Untrim モードは、いったん適用したトリムを解除して素のプロファイル曲線の状態へ戻すモードです。トリム結果が想定と違ったときのやり直しや、トリム前の曲面形状へ復帰させたい場合に使います。複数回のトリムを試行錯誤するワークフローで、リセット用のノードとして組み込んでおくと便利です。

  1. すでにトリム済みの NURBS / Bezier 曲面を Trim SOP の入力に接続
  2. Trim SOP の OperationUntrim に設定
  3. トリムループが解除され、曲面が素のプロファイルを持つ状態に戻ることを確認
  4. 必要に応じて別の 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 🎯


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 IndividuallyOFF にして、ループをまとめて 1 つの領域として閉じさせる
  • プロファイルカーブが曲面の上に正しく乗っているか確認。乗っていない場合は前段に Project SOP を入れて曲面上へ投影する

❌ Problem: 内側と外側が逆に切り抜かれてしまう
✅ Solution:

  • OperationKeep InsideKeep Outside で切替えて、残したい範囲を選び直す
  • Keep Natural はプロファイルの向き (時計回り / 反時計回り) で内外が決まるため、意図しない結果になる場合は明示的に Keep Inside / Keep Outside を指定する
  • 複数回のトリムを重ねる場合は Build outer Trim-Loop Explicitly を有効化して外周ループを明示的に生成し、内外判定を安定させる

❌ Problem: トリムをやり直したい / 元の曲面に戻したい
✅ Solution:

  • OperationUntrim に設定することで、トリムカーブを素のプロファイルへ戻し、トリミングを解除する
  • Untrim 後に改めて別の Operation を持つ Trim SOP を後段に接続して、トリムを最初からやり直す
  • 高度のみを調整したい場合は OperationChange Altitude にして Altitude パラメータでトリムイン・トリムアウトの境界を移動させる

参考資料 📚

その他 🔗

公式リソース 📖

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