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 で速度属性を付与

出力: 過去フレームの残像を含むジオメトリ

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

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 TypeConnect as Polygons に切替
  4. Trail Length30 程度を指定 (直前 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 TypePreserve Original に切替
  3. Trail Length でゴーストを残すフレーム数を指定
  4. Trail Increment3 程度に上げてコピー数を間引く
  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 TypeCompute 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 Length1 など短すぎないか確認し、十分なフレーム数を指定
  • Reset がオンのままになっていないか確認 (オンだと軌跡が蓄積されない)

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

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

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

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

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

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

参考資料 📚

その他 🔗

公式リソース 📖

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