
概要 📖 – 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
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
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 ベースのレンダリングパイプラインに橋渡しします。
- Sphere POP / Box POP 等で初期点群を生成
- Particle POP で動きや力場を加えてアニメーションさせる
- POP to SOP の
POPパラメータに上記 POP 系列の末端を指定 Download Typeをリアルタイム表示が必要ならImmediate、フレームレート優先ならNext frameに設定- 出力を Geometry COMP の SOP スロットに接続し、Render TOP で描画
Example 2: Alembicに書き出し 💾
POP system → POP to SOP (downloadtype=Immediate) → ジオメトリ書き出しノード → .abc ファイル
POP で計算した動的形状を CPU 側 SOP に取り込み、ジオメトリ書き出しノード経由でフレームごとに .abc ファイルとして書き出すパイプラインです。書き出しは順序保証が必要なので Immediate を選択します。
- POP 側で書き出したい形状を構築 (Particle POP / Force POP 等)
- POP to SOP の
POPパラメータに POP 系列の末端を指定 Download TypeをImmediate (Slow)に設定し、各フレームの正確な状態を取得- 後段にジオメトリ書き出しノードを接続し、出力先 .abc ファイルパスを指定
- タイムラインを再生して各フレームの点群を 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 側で他のオペレータと組み合わせるパターンの基本形になります。
- POP 側で Attribute POP 等を使い
Cd属性を計算 - POP to SOP の
POPパラメータに上記 POP を指定し、SOP として取り込み Download Typeを表示用途なのでNext frameに設定して高速化- 後段に Point SOP を置いて
Cdを活用 - 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 🎯
- 前処理: Null SOP
- 後処理: Transform SOP、Point SOP、Merge SOP、Convert SOP、Null 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 TypeがNext frame (Fast)になっていると、現フレームでは前フレームの POP データを使用するため意図的に 1 フレーム遅延する仕様- 遅延を許容できない場合は
Immediate (Slow)に切り替えて即時取得に変更 - 下流の SOP 群が他の同期データと組み合わさる場合は、揃えるフレームを Null SOP 等でブレークポイントを置いて検証
❌ Problem: CPU負荷が急増する / フレームレートが落ちる
✅ Solution:
Download TypeがImmediate (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 タブで取得済み属性が一覧されているかを目視
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – POP to SOP
- TouchDesigner公式ドキュメント – Category:POPs
- TouchDesigner公式ドキュメント – Attribute (点属性リファレンス)

