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

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

Trail POP の軌跡描画機能を示す図

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

概要 📖 – 点の軌跡をつなげて描画

Trail POPは、入力 POP の点群を毎フレーム蓄積し、過去フレームの点を時系列に沿って線分やプリミティブで繋いで軌跡として出力する POPです。マウス軌跡・パーティクル履歴・波形ライン等、点の時間履歴をネットワーク上で線として可視化する処理の中核として機能します。

主な用途 🎯

  • マウスやセンサー座標の軌跡をリアルタイム可視化
  • GPU パーティクルの運動履歴をライン状に蓄積
  • 音声波形やデータ列をオシロスコープ風の時系列ラインとして描画
  • 属性マッチングでパーティクル個別の独立した軌跡を生成
  • ジェネレーティブ表現のストローク・履歴アニメーションを構築

データフロー 🔄

入力: 毎フレームの点群

過去フレームの点群を内部バッファに蓄積

Connectivity 設定に沿って点同士を線分やプリミティブで接続

出力: 履歴を保持した line strip / プリミティブ群

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Trail Page 📋

アクティブ制御 🎛️

Active .active
Active (アクティブ) — オンの間だけ入力 POP を内部バッファに追記し、軌跡を伸ばします
– オフにすると新規追加は止まり既存軌跡は保持。一時停止やイベント駆動の蓄積制御に使用

Always Cook .alwayscook 🔁
Always Cook (常時クック) — 下流が要求しなくても毎フレーム強制的にクックさせるトグル
– 時間ベースで軌跡を伸ばすため通常はオン推奨。オフにすると下流参照がないフレームで蓄積が止まる場合あり

トレイル長 📏

Trail Length .length 📐
Trail Length (軌跡の長さ) — 保持する軌跡の長さを時間単位で指定
– 古いサンプルはこの長さを超えた時点でバッファから順次破棄されます

Trail Length Unit .lengthunit ⏱️
Trail Length Unit (長さの単位) — Trail Length を解釈する時間単位
S (秒) / F (フレーム) / I (サンプル) から選択し用途に合わせる

Trail Increment .inc 📊
Trail Increment (蓄積間隔) — 軌跡上の点と点の間隔を時間単位で指定
– 値を小さくすると密で滑らかな軌跡に、大きくすると間引かれた階段状の軌跡になります

Trail Increment Unit .incunit ⏱️
Trail Increment Unit (間隔の単位) — Trail Increment を解釈する時間単位
– Trail Length と同じ単位系で揃えると挙動が直感的

Reset .reset 🔄
Reset (リセット) — パルスパラメータ。蓄積された軌跡を全消去し、その瞬間の入力を 1 サンプルだけ保持した状態に戻します
– シーン切替やイベント開始時に履歴を初期化したい場合に使用

年齢属性の出力 .ageattr 🕒

経過時間を点の属性として出力する設定:

項目 内部名 説明
None .none 年齢属性を出力しない (デフォルト)
Seconds .seconds 点が追加されてからの経過時間を秒単位で age 属性として出力
Frames .frames 点が追加されてからの経過時間をフレーム数で age 属性として出力

順序と補完 🔢

Oldest Point First .oldestpointfirst ↩️
Oldest Point First (古い点を先頭に) — 出力点列の並び順を反転するトグル
– オフ (デフォルト) は新しい点が先頭、オンにすると古い点が先頭。後段でインデックス順に色を変える等の処理で使い分けます

Fill Missed Frames .fillmissedframes 🧩
Fill Missed Frames (欠落フレーム補間) — ドロップフレームが発生した区間を内挿で埋めるトグル
– GPU 負荷が高い場面でフレーム落ちが起きても軌跡が途切れにくくなるが、補間で擬似的な点が挿入される点に注意

属性マッチング 🎯

Match by Attribute .attrmatch 🔗
Match by Attribute (属性で対応付け) — オンにすると、同じ属性値を持つ点同士だけを線で繋ぎます
– パーティクル群でそれぞれ独立した軌跡を作りたい場合に必須のトグル

Attribute Name .attrname 🏷️
Attribute Name (属性名) — 接続判定に使う点属性の名前
iduid 等、点ごとに一意な整数属性を指定するのが一般的

整数属性ビット幅 .uintmax 🔢

接続判定属性を符号なし整数として扱う場合の最大値レンジ:

項目 内部名 説明
4 bits UInt (max 16) .uint4 0〜15 の範囲。少数のグループ ID 等に使用
8 bits UInt (max 256) .uint8 0〜255 の範囲。小規模パーティクル群向け
12 bits UInt (max 4096) .uint12 0〜4095 の範囲
16 bits UInt (max 65,536) .uint16 0〜65535 の範囲。中規模パーティクル向けの汎用設定
20 bits UInt (max 1 M) .uint20 0〜約 100 万の範囲
24 bits UInt (max 16 M) .uint24 0〜約 1600 万の範囲
28 bits UInt (max 268 M) .uint28 0〜約 2 億 6800 万の範囲
32 bits UInt (max 4 B) .uint32 0〜約 42 億の範囲。大規模 GPU パーティクル系で使用

ライン上限 📈

Max Number of Line Strips .maxls 🔢
Max Number of Line Strips (ライン本数の上限) — 確保するライン本数の上限値
– 実際のライン本数 (info popup で確認可能) より大きい値を設定しないと、軌跡が一部生成されません

接続形態 .surftype 🧵

蓄積した点同士を結ぶプリミティブの選択:

項目 内部名 説明
None .none プリミティブを生成せず、点 (point) のみを出力
Point Primitives .points 1 点ずつ独立した point primitive として出力
Rows .rows 同じ列インデックスの点を線分で接続 (一般的な軌跡描画)
Columns .cols 同じ行インデックスの点を線分で接続
Rows and Columns .rowcol 行と列の両方向を線分で接続し格子状に
Triangles .triangles 隣接点で三角形を生成し面として接続
Alternating Triangles .alttriangles 交互方向で三角形を生成し、ストリップ状の帯面を作成
Quadrilaterals .quads 四角形で接続。リボン状のサーフェスを生成する用途
Closed .closed Closed (閉じる) — オンにすると軌跡の末端を先頭頂点とつなげ、ループ状の閉曲線・閉サーフェスにします

Transform Page 🔄

変換順序 .xord 🔀

拡縮・回転・移動を適用する順番の選択:

項目 内部名 説明
Scale Rotate Translate .srt 拡縮 → 回転 → 移動 の順で適用 (デフォルト、最も一般的)
Scale Translate Rotate .str 拡縮 → 移動 → 回転 の順で適用
Rotate Scale Translate .rst 回転 → 拡縮 → 移動 の順で適用
Rotate Translate Scale .rts 回転 → 移動 → 拡縮 の順で適用
Translate Scale Rotate .tsr 移動 → 拡縮 → 回転 の順で適用
Translate Rotate Scale .trs 移動 → 回転 → 拡縮 の順で適用

回転順序 .rord 🌀

各軸まわりの回転を適用する順番の選択:

項目 内部名 説明
Rx Ry Rz .xyz X 軸 → Y 軸 → Z 軸 の順で回転 (デフォルト)
Rx Rz Ry .xzy X 軸 → Z 軸 → Y 軸 の順で回転
Ry Rx Rz .yxz Y 軸 → X 軸 → Z 軸 の順で回転
Ry Rz Rx .yzx Y 軸 → Z 軸 → X 軸 の順で回転
Rz Rx Ry .zxy Z 軸 → X 軸 → Y 軸 の順で回転
Rz Ry Rx .zyx Z 軸 → Y 軸 → X 軸 の順で回転

移動回転スケール 📐

Translate .t ↔️
Translate (移動) — 軌跡上の点を時間方向に対して X / Y / Z 軸で平行移動
– 内部成分は tx / ty / tz の 3 軸。値をアニメさせると軌跡全体がスライドします

Rotate .r 🔄
Rotate (回転) — 軌跡上の点を X / Y / Z 軸まわりに度数 (degree) で回転
– 内部成分は rx / ry / rz。Rotate Order と Pivot の組合せで挙動が変化します

Scale .s 🔍
Scale (拡縮) — 軌跡を X / Y / Z 軸方向に拡大・縮小
– 内部成分は sx / sy / sz。Pivot を基点として拡縮されます

Pivot .p 📍
Pivot (基点) — 回転・拡縮の中心となる座標 (px / py / pz)
– 軌跡の中心を変えたい場合や、特定点を軸に回転させたい場合にここを変更


Common Page 🔧

Bypass .bypass 🚫

POP の処理をスキップして入力をパススルーする設定:

  • オン: 最初の入力 (input1) をそのまま出力にパススルー、POP 内部の処理を無効化
  • 用途: デバッグ時に特定 POP の効果を一時的に外して比較する際に使用

Free Extra GPU Memory .freeextragpumem 🧠

蓄積した GPU メモリの解放:

  • Free Extra GPU Memory パルス: 出力ポイント数が増減を繰り返した際に確保されたままの GPU メモリを明示的に解放するパルスパラメータ
  • 用途: Trail Length を頻繁に変動させた後や、長尺の軌跡を捨てた直後に未使用 VRAM を返却

Delete Input Attributes .delinputattrs 🗑️

出力属性の絞り込みパターン:

  • Delete Input Attributes パターン: 出力に残したい属性名のパターン (例: P N Cd) を指定。指定外の属性は破棄される
  • 用途: Trail POP は属性を全フレーム分蓄積するため、不要属性を切ると VRAM・帯域を大きく節約できる

実践アイデア 💡

Example 1: マウス座標の軌跡可視化 🖱️

Mouse In CHOP → CHOP to POP → Trail POP → Geometry COMP → Render TOP

Mouse In CHOP のリアルタイム座標を CHOP to POP で 1 ポイントの POP に変換し、Trail POP に流して過去フレームのマウス位置を線分として蓄積する基本構成。Trail Length を 2 秒程度に、Connectivity を Rows に設定するとなめらかなストロークが描画できます。

  1. Mouse In CHOP でマウス座標 tx / ty を取得
  2. CHOP to POP で 1 ポイントの POP に変換し P 属性に座標をマッピング
  3. Trail POPTrail Length を 2 秒、ConnectivityRows に設定
  4. Geometry COMPLine MAT を当ててレンダリング

Example 2: 粒子ごとの個別軌跡 ✨

Random POP (初期位置 + id) → Feedback POP (毎フレーム位置更新) → Trail POP (Match by Attribute = id) → Line MAT → Render TOP

Feedback POP で毎フレーム更新される GPU パーティクル位置を Trail POP で蓄積し、Match by Attribute を有効にして id 属性ごとに独立した軌跡を生成するセットアップ。パーティクル数が多い場合は Attrib is UInt を適切なビット幅 (uint16 等) に揃えると高速化できます。

  1. Random POP で初期位置を生成し、点ごとに id 属性を割り当て
  2. Feedback POP で位置を毎フレーム更新するループを構成
  3. Trail POPMatch by Attribute をオン、Attribute Nameid に設定
  4. Attrib is UInt を粒子総数に合わせて (例: 65,536 個なら uint16) 設定し、Line MAT でレンダリング

Example 3: 音声波形の時系列ライン描画 🌊

Audio Device In CHOP → CHOP to POP → Trail POP (細かい Increment) → Geometry COMP → Render

Audio Device In CHOP で取得した音声サンプルを CHOP to POP で点群化し、Trail POP に通して時系列にラインとして描画するオシロスコープ風の構成。Trail Increment を 1 フレームに、Trail Length を 1 秒程度に設定すると視認性の高い波形ラインになります。

  1. Audio Device In CHOP でマイク・ラインインから音声を取得
  2. CHOP to POP で音声サンプルを P 属性付きの点群に変換
  3. Trail POPTrail Increment を 1 フレーム、Trail Length を 1 秒、ConnectivityRows に設定
  4. Age AttributeSeconds に設定し、後段で色をフェードアウト

関連オペレータ 🔗

類似機能OP 🔍

  • Trail CHOP — チャンネル時系列版。CHOP の値履歴をサンプル列として蓄積
  • Cache POP — 過去フレームをスナップショットとして保持しランダムアクセス
  • Feedback POP — 前フレーム出力を取込み状態を反復更新する状態保持型

組み合わせ推奨OP 🔄

  • CHOP to POP — CHOP の値を点群に変換して Trail に流し込む前段
  • Feedback POP — 毎フレーム更新されるパーティクル位置を蓄積対象として渡す
  • Merge POP — 複数ソースの点群を合流してから蓄積
  • Random POP — Match by Attribute 用の id 属性を持つ点群を初期生成
  • Math POP — 蓄積前後で位置や色を加算・スケーリング
  • Line MAT — Trail POP の line strip を線として描画する MAT

前処理・後処理POP 🎯


Info POP情報 📊

Trail POP は Info CHOP による詳細情報取得に対応しています。

POP固有情報 ✨

  • num_verts: POP に含まれる頂点 (vertex) 数
  • num_points: POP に含まれるポイント数
  • num_prims: POP に含まれるプリミティブ数

汎用オペレータ情報 🔄

  • total_cooks: プロセス開始からのクック回数
  • cook_time: 最後のクック時間 (ミリ秒)
  • cook_frame: 最後にクックされたフレーム番号
  • cook_abs_frame: 最後にクックされた絶対フレーム番号 (アプリケーション起動からの累積)
  • cook_start_time: 最後のクック開始時刻 (ミリ秒)
  • cook_end_time: 最後のクック終了時刻 (ミリ秒)
  • cooked_this_frame: 現フレームでクックされたか (0 / 1)
  • warnings: 警告数
  • errors: エラー数

  • num_points: Trail POP 出力時点で蓄積されている総ポイント数
  • num_prims: 生成された line strip / プリミティブの本数。Max Number of Line Strips に達していないか監視に使用
  • num_point_attribs: 出力 POP の point 属性数 (Age Attribute オン時に増加)
  • num_vertex_attribs: 出力 POP の vertex 属性数
  • num_prim_attribs: 出力 POP の primitive 属性数

トラブルシューティング ⚠️

よくある問題と解決策 🔧

❌ Problem: 軌跡が描画されない / ラインが見えない
✅ Solution:

  • Active がオンになっているか確認 (オフの間は新規追加が止まる)
  • ConnectivityNone のままだとプリミティブが生成されないため Rows 等に変更
  • Geometry COMP に Line MAT を当てているか、Wireframe レンダリングになっているか確認

❌ Problem: パーティクル全部が 1 本の線として繋がってしまう
✅ Solution:

  • Match by Attribute をオンにし、Attribute Name に点ごとに一意な属性 (例: id) を指定
  • 上流の Random POP や GLSL POP で各点に固有 id を割り当て
  • Attrib is UInt を点数の最大値以上のビット幅 (例: 65,536 個なら uint16) に設定

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

  • Trail Length を伸ばし、Trail Length Unit が想定どおり (秒 / フレーム / サンプル) か確認
  • Max Number of Line Strips が info popup の実本数より小さくないか点検
  • ドロップフレームが疑わしい場合は Fill Missed Frames を有効化して補間

参考資料 📚

その他 🔗

公式リソース 📖

サイト内リソース 🔗

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