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

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

POP to SOP の機能を示す図

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

概要 📖 – POPをSOPに取り込む

POP to SOPは、GPU 上の POP データを CPU 側にダウンロードし、SOP として後続の CPU ジオメトリパイプラインで利用可能にする SOPです。Download Type で即時取得 (Immediate) と次フレーム取得 (Next frame) を切り替えられ、後者は 1 フレーム遅延を許容する代わりに CPU/GPU 同期コストを削減します。

主な用途 🎯

  • GPU 上の POP の点群を CPU 側 SOP に取り込み、Point SOP / Transform SOP 等の CPU ジオメトリ処理に橋渡し
  • POP で生成した動的な点群形状を SOP として保持し、Object Merge SOP / Geometry COMP の SOP スロットへ供給
  • Download Type で取得タイミングを選択 — Immediate (Slow) は同期取得、Next frame (Fast) は 1 フレーム遅延と引き換えに高速化
  • POP で計算した属性 (位置・色・スケール等) を CPU 側で参照し、CPU 側の他オペレータと組み合わせ可能
  • POP 出力を File Out SOP / ジオメトリ書き出しノードで書き出し、外部ファイル (.bgeo / .abc 等) として保存するパイプラインを構築

データフロー 🔄

入力: POP パラメータで指定した POP (GPU 側点群)

Download Type に従って GPU から CPU へ転送

CPU 側 SOP ジオメトリとして保持

出力: SOP

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Page 📁

対象POPの指定 .source_pop 🎯

POP .pop 🎯
– 取り込み対象となる POP (粒子オペレータ) のパス
– 指定した POP の点群が GPU から CPU 側にダウンロードされ、本 SOP の出力となる
– パスは Pattern Matching 記法 (相対パス・絶対パス) で記述可能

ダウンロード方式 .download

GPU 側にある POP のデータを CPU 側 SOP として取得するタイミングを選択する設定です。同期待ちの有無でパフォーマンスと遅延のトレードオフが決まります。

項目 内部名 説明
Immediate (Slow) .immediate 現在のフレームで即座に GPU から CPU へダウンロード。遅延なしで取得できる代わりに、CPU/GPU 同期待ちが発生してフレーム時間が伸びる
Next frame (Fast) .nextframe 前フレームの POP データを使用し、現フレームでは同期待ちを行わない。1 フレーム遅延と引き換えに同期コストを削減できる

実践アイデア 💡

Example 1: 粒子をSOPで描画 ✨

Sphere POP → Particle POP (animation) → POP to SOP (pop=Particle POP) → Geometry COMP → Render TOP

POP で構築した粒子シミュレーションを SOP として CPU 側に取得し、Geometry COMP 経由でレンダリングする最も基本的な構成です。GPU 側のパーティクル計算結果を SOP ベースのレンダリングパイプラインに橋渡しします。

  1. Sphere POP / Box POP 等で初期点群を生成
  2. Particle POP で動きや力場を加えてアニメーションさせる
  3. POP to SOP の POP パラメータに上記 POP 系列の末端を指定
  4. Download Type をリアルタイム表示が必要なら Immediate、フレームレート優先なら Next frame に設定
  5. 出力を Geometry COMP の SOP スロットに接続し、Render TOP で描画

Example 2: Alembicに書き出し 💾

POP system → POP to SOP (downloadtype=Immediate) → ジオメトリ書き出しノード → .abc ファイル

POP で計算した動的形状を CPU 側 SOP に取り込み、ジオメトリ書き出しノード経由でフレームごとに .abc ファイルとして書き出すパイプラインです。書き出しは順序保証が必要なので Immediate を選択します。

  1. POP 側で書き出したい形状を構築 (Particle POP / Force POP 等)
  2. POP to SOP の POP パラメータに POP 系列の末端を指定
  3. Download TypeImmediate (Slow) に設定し、各フレームの正確な状態を取得
  4. 後段にジオメトリ書き出しノードを接続し、出力先 .abc ファイルパスを指定
  5. タイムラインを再生して各フレームの点群を Alembic に書き出し

Example 3: 属性を色付け可視化 🎨

POP system (with Cd attribute) → POP to SOP → Point SOP (Cd を Color に流用) → Geometry COMP

POP 側で計算したカラー属性 (Cd) を CPU 側 SOP として取り出し、Point SOP で頂点カラーを可視化する例です。POP の解析値を CPU 側で他のオペレータと組み合わせるパターンの基本形になります。

  1. POP 側で Attribute POP 等を使い Cd 属性を計算
  2. POP to SOP の POP パラメータに上記 POP を指定し、SOP として取り込み
  3. Download Type を表示用途なので Next frame に設定して高速化
  4. 後段に Point SOP を置いて Cd を活用
  5. Geometry COMP に接続し、頂点カラーを参照する Material で可視化

関連オペレータ 🔗

類似機能OP 🔍

  • CHOP to SOP — CHOP のサンプル値を SOP の点属性に変換する converter、入力ファミリーが CHOP 違い
  • DAT to SOP — Table DAT の値から SOP ジオメトリを構築する converter、入力ファミリーが DAT 違い
  • SOP to POP — 逆方向の converter、CPU 側 SOP を GPU 側 POP に転送する

組み合わせ推奨OP 🔄

  • Particle POP — POP to SOP の入力として最頻出、粒子シミュレーションを CPU 側に取得して可視化
  • Geometry COMP — POP to SOP の出力をレンダリングパイプラインに投入する標準的な後段
  • Render TOP — Geometry COMP に取り込んだ POP to SOP 出力を画面にレンダリング

前処理・後処理SOP 🎯


Info CHOP情報 📊

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

ジオメトリ統計 📐

  • num_points: この SOP に含まれるポイント数
  • num_prims: この SOP に含まれるプリミティブ数
  • num_particles: この SOP に含まれるパーティクル数
  • last_vbo_update_time: last_vbo_update_time — 別スレッドで GPU 上のジオメトリデータを SOP の CPU データから更新するのに要した時間。別スレッド処理のため通常のフレーム時間には含まれない

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:

  • POP パラメータが正しい POP のパスを指しているか確認 (Network Editor 上でリンク矢印が POP を指しているか目視)
  • 対象 POP 側で実際に点群が生成されているか、POP の出力プレビューで点数を確認
  • POP 側の評価が止まっていないか (Cooking が無効化されている / Active パラメータがオフ等) を確認

❌ Problem: アニメーションが1フレーム遅れて見える
✅ Solution:

  • Download TypeNext frame (Fast) になっていると、現フレームでは前フレームの POP データを使用するため意図的に 1 フレーム遅延する仕様
  • 遅延を許容できない場合は Immediate (Slow) に切り替えて即時取得に変更
  • 下流の SOP 群が他の同期データと組み合わさる場合は、揃えるフレームを Null SOP 等でブレークポイントを置いて検証

❌ Problem: CPU負荷が急増する / フレームレートが落ちる
✅ Solution:

  • Download TypeImmediate (Slow) だと毎フレーム CPU/GPU 同期待ちが発生する。表示用途であれば Next frame (Fast) に切り替え
  • POP 側の点数が膨大な場合、GPU→CPU の転送自体が重くなる。事前に POP 側で Delete POP 等で間引いてから取り込む
  • POP to SOP の出力が必要なフレームでのみクックされるよう、下流に Cache SOP を挟んで結果を保持する

❌ Problem: 属性 (Cd / N / その他) が SOP 側で参照できない
✅ Solution:

  • POP 側で対象の属性が実際に書き出されているか確認 (Attribute POP 等で明示的に属性を作成する必要がある)
  • 属性名・成分数の対応は Attribute リファレンスで確認
  • 下流に Point SOP を置き、Attribute タブで取得済み属性が一覧されているかを目視

参考資料 📚

その他 🔗

公式リソース 📖

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