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

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

Trail SOP で動くジオメトリの残像を記録する図

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

概要 📖 – 動く形状の残像を記録

Trail SOPは、入力ジオメトリを過去フレーム分キャッシュし、動きの軌跡を残像として描き出す SOPです。Trail Length で残像の長さ、Result Type で軌跡の構築方法、Compute velocity で速度属性の付与を制御し、動く形状の尾やゴーストを生成します。

主な用途 🎯

  • 動くジオメトリの過去フレームを記録して残像 (トレイル) を生成する用途で、入力に流れ込む形状を過去数フレーム分キャッシュし、その軌跡を 1 ノードで可視化
  • Result Type による残像の構築方法の切替で、元形状の保持 (Preserve Original)、メッシュ接続、ポリゴン接続、速度計算の 4 方式から軌跡の出力形態を選択
  • Trail Length による残像の長さ調整で、何フレーム分さかのぼって軌跡を描くかを指定し、長い尾を引く動きや短い瞬間の残像を作り分け
  • Compute velocity による速度属性の付与で、点が速く動くほど大きくなる速度 (velocity) 属性を計算し、後段のモーションブラーやパーティクル制御に活用
  • Trail Increment による軌跡の間引きで、フレームを一定間隔で飛ばして点数を減らし、長さを保ったまま残像の密度を下げて軽量化やゴースト表現を実現
  • Reset / Reset Pulse による軌跡のクリアで、蓄積したキャッシュをいつでも初期化し、現在の入力形状だけの状態に戻して描き直し

データフロー 🔄

入力: 毎フレーム変化するジオメトリ (移動・変形する点や面)
↓
Trail Length 分のフレームを Cache に蓄積し Result Type に従い軌跡を構築
↓
Connectivity でメッシュ化、Compute velocity で速度属性を付与
↓
出力: 過去フレームの残像を含むジオメトリ
CHECK

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

まる。
まる。

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


パラメータ解説 ⚙️

Page 📁

軌跡の構築方法 .result 🎛️

Result Type (結果の種類) — トレイル (残像) ジオメトリをどう構築するかを指定するメニューパラメータ。

項目 内部名 説明
Preserve Original .preserve Preserve Original (元形状を保持) — 過去フレームの元ジオメトリをそのまま重ねて残す (ゴースト表示向き)
Connect as Mesh .mesh Connect as Mesh (メッシュとして接続) — 各フレームの点を結んでメッシュ (面) として接続
Connect as Polygons .poly Connect as Polygons (ポリゴンとして接続) — 各フレームの点を結んでポリゴンとして接続
Compute velocity .velocity Compute velocity (速度を計算) — 点が速く動くほど大きくなる速度 (velocity) 属性を点に付与

残像の長さと間引き 📏

Trail Length .length 📏
– Trail Length (残像の長さ) — Trail SOP が使う最大フレーム数を指定し、残像の長さを決定
– 例: 25 を指定すると直前 25 フレーム分のジオメトリを連結
– 値を大きくするほど長い尾を引いた軌跡になる

Trail Increment .inc ⏭️
– Trail Increment (フレーム間引き) — 指定したフレーム数だけ飛ばして軌跡を構築し、点数を減らしつつ同じ長さを維持
– 軌跡の解像度 (点の密度) を下げて軽量化する用途
– 2 以上にすると、同じ長さの軌跡でも形状コピーの数が少なくなる (Preserve Original でのゴースト表現に有効)

キャッシュと評価範囲 💾

Cache Size .cache 💾
– Cache Size (キャッシュサイズ) — 使用可能なメモリ内に保持しておくフレーム数
– 残像の長さに応じて十分なキャッシュを確保する必要がある

Evaluate Within Frame Range .evalframe 🎞️
– Evaluate Within Frame Range (フレーム範囲内で評価) — オンにすると、現在のフレーム範囲 ($FSTART 〜 $FEND) 内でのみ評価 (クック) する
– オフの場合、開始フレームより前でも SOP が評価される

メッシュの接続方式 .surftype 🔗

Connectivity (接続方式) — メッシュとして接続する際 (Result Type がメッシュ系) に生成するサーフェスの種類を指定するメニューパラメータ。

項目 内部名 説明
Rows .rows Rows (行) — 水平方向のラインを生成
Columns .cols Columns (列) — 垂直方向のラインを生成
Rows and Columns .rowcol Rows and Columns (行と列) — 行と列の両方。ワイヤーフレーム表示ではクワッド状だが、すべてのポリゴンは開いた状態
Triangles .triangles Triangles (三角形) — グリッドを三角形で構築
Quadrilaterals .quads Quadrilaterals (四角形) — 四角形で側面を生成 (デフォルト)
Alternating Triangles .alttriangles Alternating Triangles (交互三角形) — 向きが交互になる三角形を生成 (Triangles オプションに類似)

行の閉じと速度倍率 🎚️

Close Rows .close 🔁
– Close Rows (行を閉じる) — 選択すると、出力選択の行を閉じた状態にする

Velocity Scale .velscale 🚀
– Velocity Scale (速度倍率) — Compute velocity を選択している場合に、速度を指定値でスケール
– 速度属性の大きさを後段の用途に合わせて調整

軌跡のリセット ♻️

Reset .reset ♻️
– Reset (リセット) — オンの間、キャッシュしたジオメトリをクリアし、トレイルを入力の現在状態に戻す
– オンを維持している間は軌跡が蓄積されない

Reset Pulse .resetpulse ⏺️
– Reset Pulse (リセットパルス) — 1 フレームだけジオメトリをリセットするパルス
– ボタンを押した瞬間に軌跡をクリアして描き直し


実践アイデア 💡

Example 1: 動く点の軌跡を描く ✨

Sphere SOP → Transform SOP (アニメ移動) → Trail SOP (Result Type=Connect as Polygons, Trail Length=30) → Out SOP

アニメーションで移動する小さな球の動きを Trail SOP で過去フレーム分連結し、軌跡をポリゴンラインとして描く基本構成です。Transform SOP のパラメータに時間で変化する式を入れて点を動かし、Trail SOP に流すと、Trail Length で指定した数のフレーム分だけ過去の位置が線で連結され、動きの尾が可視化されます。

  1. Sphere SOP を 1 個配置し、小さめの球を作る
  2. Transform SOP を後段に置き、Translate に時間で変化する式 (例: 正弦波) を入れて球を動かす
  3. Trail SOP を接続し、Result Type を Connect as Polygons に切替
  4. Trail Length に 30 程度を指定 (直前 30 フレーム分の軌跡)
  5. 再生して球の移動に追従する軌跡ラインが描かれることを Geometry Viewer で確認

Example 2: 残像ゴーストを重ねる 👻

Geometry (アニメ) → Trail SOP (Result Type=Preserve Original, Trail Increment=3) → Material SOP

動く形状そのものを過去フレーム分だけ重ねて表示し、ストロボ的なゴースト (残像) を作る用途です。Result Type を Preserve Original にすると過去の形状コピーがそのまま残り、Trail Increment を上げてフレームを間引くことで、密集しすぎないコマ送り風のゴースト表現になります。

  1. アニメーションする任意のジオメトリ (移動・回転する形状) を用意
  2. Trail SOP を接続し、Result Type を Preserve Original に切替
  3. Trail Length でゴーストを残すフレーム数を指定
  4. Trail Increment を 3 程度に上げてコピー数を間引く
  5. 再生してコマ送り状のゴーストが重なって表示されることを確認

Example 3: 速度属性を後段で利用 🚀

Geometry (アニメ) → Trail SOP (Result Type=Compute velocity, Velocity Scale) → 後段の速度依存処理

Trail SOP の Compute velocity モードで点ごとの速度 (velocity) 属性を生成し、後段でモーションブラーやパーティクル制御に渡す用途です。点が速く動くほど velocity 属性が大きくなるため、Velocity Scale で属性値を調整したうえで、速度に応じて見た目や挙動を変える表現に活用できます。

  1. アニメーションするジオメトリを Trail SOP に接続
  2. Result Type を Compute velocity に切替
  3. Velocity Scale で速度属性の大きさを調整
  4. 後段で velocity 属性を参照する処理 (モーションブラーや速度依存の描画) に接続
  5. 点の速さに応じて velocity が変化することを確認

関連オペレータ 🔗

類似機能OP 🔍

  • Particle SOP — 点群を時間発展させて動かす (Trail は既存形状の過去フレーム記録、Particle はシミュレーションによる点の生成・移動)
  • Spring SOP — バネ物理で点を時間変化させる (Trail は軌跡の記録、Spring は動き自体の生成)

組み合わせ推奨OP 🔄

  • Transform SOP — 前段で形状を時間移動・回転させ、その動きを Trail SOP に記録させる
  • Skin SOP — Trail が出力した各フレームの輪郭を後段で面張りしてサーフェス化
  • Convert SOP — Trail のメッシュ・ポリゴン出力を後段で別の形式に変換
  • Resample SOP — Trail が連結した軌跡ラインを後段で一定間隔に再サンプリング

前処理・後処理SOP 🎯


Info CHOP情報 📊

Trail 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:

  • 入力ジオメトリが実際に毎フレーム動いているか確認 (静止していると軌跡は重ならない)
  • Trail Length が 1 など短すぎないか確認し、十分なフレーム数を指定
  • Reset がオンのままになっていないか確認 (オンだと軌跡が蓄積されない)

❌ Problem: 軌跡が途中で途切れる・短くなる
✅ Solution:

  • Cache Size が Trail Length に対して十分か確認し、必要なフレーム数を保持できるよう拡大
  • Evaluate Within Frame Range をオフにして、フレーム範囲外でも評価されるようにする
  • 前段の Transform SOP 等で動きが毎フレーム継続しているか確認

❌ Problem: 残像のコピーが多すぎて重い
✅ Solution:

  • Trail Increment を 2 以上に上げてフレームを間引き、点数を削減
  • Trail Length を短くして記録フレーム数を減らす
  • 後段で Resample SOP を使い軌跡ラインの点数を整理

❌ Problem: リセットしても軌跡が消えない
✅ Solution:

  • 1 フレームだけクリアしたい場合は Reset Pulse を押す (Reset はオンの間だけ有効)
  • Reset をオンにした状態を維持して新しい蓄積を止めているか確認
  • 入力側に動きが残っていないか (前段がまだアニメしていないか) を確認

参考資料 📚

その他 🔗

公式リソース 📖


関連まとめ 🔗

ファミリー別一覧 📑

厳選オペレータ ⭐

逆引き 🔎


この記事はLLMと共に内容を執筆、更新しています。
なるべく正確な情報を心掛けていますが、最新バージョンとの項目差異など情報の不一致を見つけたらXもしくはInsta、メールなどから管理者までご連絡いただけると嬉しいです🫠


まる。

お仕事のご依頼はDM又はメールにて。
━━━━━━━━━━━━━━━━━
Python/Touchdesigner/M5Stackをこよなく愛すフルスタックエンジニア。
専門は生理心理学、趣味はヨガ(8年前にRYT200取得)やサウナ、美容EMSや電気風呂などヘルスケア全般。
脳波や筋電、心拍を中心とした、生体情報の解析とインタラクティブアートづくりがライフワーク。

普段はワントゥーテンという会社で空間演出エンジニアをしています。
リファラル採用お繋ぎできますので、我こそはという尖った方は経歴と希望職種添えてDMください(エンジニア以外、営業職等もOK)。
ご飯行きましょう。

日常を垂れ流すだけのアカウント
Instagram:@malmal0v0

発信を今後がんばる予定のアカウント
Youtube:https://www.youtube.com/@malmal0v0

まる。をフォローする
その他の記事はこちら
今流行りのクリエイティブツール、Touchdesignerとは?業界の現役ちいかわエンジニアができることを解説ッ
トカゲのポーズ(ウッターナ・プリシュターサナ)のやり方|効果・コツ・注意点【ヨガ】
針の糸通しのポーズ(パールシュヴァ・バーラーサナ)のやり方|効果・コツ・注意点【ヨガ】
ウサギのポーズ(ササンガーサナ)のやり方|効果・コツ・注意点【ヨガ】
スフィンクスのポーズ(サーランバ・ブジャンガーサナ)のやり方|効果・コツ・注意点【ヨガ】

タイトルとURLをコピーしました