
概要 📖 – 点と位相を結合制御
Topology POPは、既存の点と位相 (頂点・プリミティブ) を結合する方法とメモリ確保を細かく制御する POPです。入力 POP の符号なし整数属性を点インデックスのリストとして解釈し、プリミティブ数とあわせて位相を記述します。GLSL で生成した複数バッファをジオメトリとして結合する用途に使われます。
主な用途 🎯
- 複数の点群バッファを 1 つのジオメトリに統合(GLSL で生成した buffer の結合)
- 属性 (attribute) を点インデックスのリストとして解釈し位相を記述
- 頂点・プリミティブ属性を別の POP から合成
- プリミティブ数(三角形・四角形・線)を手動またはGPU値で指定
- 最大点数・最大プリミティブ数を絞ってGPUメモリ確保を削減
データフロー 🔄
入力: 点群と属性をもつ POP(複数可)
↓
位相処理(点インデックス属性とプリミティブ情報を解釈して位相を構築)
↓
出力: 点と位相 (頂点・プリミティブ) を結合したジオメトリ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Points Page 📋
Max Points .maxpointsmode 🔢
最大点数の設定方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| Max Points | .maxpoints |
最大点数を直接設定。POP の点数情報が CPU 側にある場合、これが実際の点数になります。 |
Point Count Info .pointcountinfo 📊
点数情報の取得元
| 項目 | 内部名 | 説明 |
|---|---|---|
| From Input | .input |
入力 POP から点数を取得 |
| From Max Points Parameter | .fromparams |
Max Points パラメータの値を点数として使用 |
| From Attribute | .fromattrs |
属性 (attribute) の値を点数として使用 |
点数の参照先 🔗
Point Count POP .pointcountpop 🔗
– Point Count POP (点数を保持する POP) — 点数を保持している参照先 POP を指定します。
Point Count Attribute .pointcountclass 🏷️
– Point Count Attribute (点数を保持する属性クラス) — 点数を保持する属性 (attribute) のクラスを指定します。
Topology Page 🧩
Render .render 🖥️
ビューア表示の有効・無効:
- Render:
Render(描画) — ビューアでの描画を有効化。出力データが中間状態や描画不能な状態のときはオフにします。
Primitive Source .primsourcemode 🧱
プリミティブの取得元 (primitive source) の選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| Input | .input |
入力 POP をプリミティブ取得元にする |
| Specify POP | .specpop |
別途指定した POP をプリミティブ取得元にする |
Primitive Mode .primmode 🔀
位相とプリミティブ情報の与え方
| 項目 | 内部名 | 説明 |
|---|---|---|
| Source Topology and Topology Info | .topo |
取得元から位相とプリミティブ情報の両方を使用 |
| Source Attribute and Manual Topology Info | .attr |
属性から位相を取得し、プリミティブ情報は手動指定 |
属性の参照先 🏷️
Primitives POP .primspop 🧱
– Primitives POP (プリミティブ取得元 POP) — プリミティブ取得元に使う POP を指定します。
Vertex Attribute POP .vertattrpop 🔺
– Vertex Attribute POP (頂点属性の取得元 POP) — 頂点属性 (vertex attribute) を取得する POP を指定します。
Prim Attribute POP .primattrpop 🟦
– Prim Attribute POP (プリミティブ属性の取得元 POP) — プリミティブ属性 (primitive attribute) を取得する POP を指定します。
Point Index Attrib .pointindexattrclass 🔢
点インデックス属性のクラス
| 項目 | 内部名 | 説明 |
|---|---|---|
| Point | .point |
点 (point) クラスの属性を使用 |
| Vertex | .vertex |
頂点 (vertex) クラスの属性を使用 |
| Primitive | .primitive |
プリミティブ (primitive) クラスの属性を使用 |
属性クラスの選択 .vertattrmode 📐
頂点・プリミティブ属性 (attribute) の取得元と属性クラスの設定
| 項目 | 内部名 | 説明 |
|---|---|---|
| None | .none |
頂点属性を使用しない |
| Primitive Source | .primsource |
プリミティブ取得元から頂点属性を取得 |
| Specify POP | .specpop |
別途指定した POP から頂点属性を取得 |
Topology .topology 🧩
位相 (topology) モードの決定
| 項目 | 内部名 | 説明 |
|---|---|---|
| Source Topology Reference | .ref |
取得元の位相を参照(コピーしない) |
| Source Topology Copy | .copy |
取得元の位相をコピーして保持 |
最大プリミティブ数 📏
Max Triangles .maxtrianglesmode 🔺
– Max Triangles (最大三角形数) — 三角形プリミティブの最大数の設定方法を指定。位相情報が CPU 側にある場合は実際の三角形数になります。
Max Quads .maxquadsmode 🟦
– Max Quads (最大四角形数) — 四角形プリミティブの最大数の設定方法を指定。
Max Line Strips .maxlinestripsmode ➰
– Max Line Strips (最大ラインストリップ数) — ラインストリッププリミティブの最大数の設定方法を指定。
Max Line Strip Verts .maxlsvertsmode 📍
– Max Line Strip Verts (ラインストリップ最大頂点数) — ラインストリップ 1 本あたりの最大頂点数の設定方法を指定。
Max Lines .maxlinesmode ➖
– Max Lines (最大ライン数) — ラインプリミティブの最大数の設定方法を指定。
Max Point Prims .maxpointprimsmode 🔵
– Max Point Prims (最大点プリミティブ数) — 点プリミティブの最大数の設定方法を指定。
ラインストリップ情報 .lsinfoupdate ➰
ラインストリップ情報 (Line Strip Info) バッファの更新方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| Auto | .auto |
自動で更新 |
| Manual | .manual |
手動で更新 |
Topology Info .topoinfo 🧮
位相情報 (topology info) の取得元
| 項目 | 内部名 | 説明 |
|---|---|---|
| From Primitive Source | .primsource |
プリミティブ取得元から位相情報を取得 |
| From Max Prims Parameter | .fromparams |
最大プリミティブ数パラメータから取得 |
| From Attributes | .fromattrs |
属性 (attribute) から取得 |
Topology Info Class .topoinfoclass 🏷️
位相情報を保持する属性クラス
| 項目 | 内部名 | 説明 |
|---|---|---|
| Point | .point |
点 (point) クラス |
| Vertex | .vertex |
頂点 (vertex) クラス |
| Primitive | .primitive |
プリミティブ (primitive) クラス |
プリミティブ数の参照 🔢
Topology Info POP .topoinfopop 🔗
– Topology Info POP (位相情報の参照 POP) — 位相情報の属性が見つかる参照先 POP を指定します。
Triangle Count .trianglecountmode 🔺
– Triangle Count (三角形数) — 三角形プリミティブの数を取得元から得るか、0 にするか、手動指定するかを選びます。
Quad Count .quadcountmode 🟦
– Quad Count (四角形数) — 四角形プリミティブの数を取得元から得るか、0 にするか、手動指定するかを選びます。
Line Strip Count .linestripcountmode ➰
– Line Strip Count (ラインストリップ数) — ラインストリッププリミティブの数を取得元から得るか、0 にするか、手動指定するかを選びます。
Line Count .linecountmode ➖
– Line Count (ライン数) — ラインプリミティブの数を取得元から得るか、0 にするか、手動指定するかを選びます。
Point Prim Count .pointprimcountmode 🔵
– Point Prim Count (点プリミティブ数) — 点プリミティブの数を取得元から得るか、0 にするか、手動指定するかを選びます。
Common Page 🔧
Bypass .bypass 🚫
POP の処理をスキップして入力をパススルーする設定:
- オン: 最初の入力 (input1) をそのまま出力にパススルー、POP 内部の処理を無効化
- 用途: デバッグ時に特定 POP の効果を一時的に外して比較する際に使用
Free Extra GPU Memory .freeextragpumem 🧠
蓄積した GPU メモリの解放:
- Free Extra GPU Memory パルス: 出力ポイント数が増減を繰り返した際に確保されたままの GPU メモリを明示的に解放するパルスパラメータ
- 用途: 大規模パーティクル系で出力サイズが大きく変動した後、未使用メモリを返却して VRAM を節約
Delete Input Attributes .delinputattrs 🗑️
出力属性の絞り込みパターン:
- Delete Input Attributes パターン: 出力に残したい属性名のパターン (例:
P N Cd) を指定。指定外の属性は破棄される - 用途: 下流で不要な属性を切り落として分岐ブランチを軽量化、メモリ・帯域を節約
実践アイデア 💡
Example 1: GLSL生成バッファの結合 🧩
GLSL Create POP → GLSL Advanced POP → Topology POP (Source Attribute and Manual Topology Info)
GLSL Create POP と GLSL Advanced POP で別々に生成した点群・属性バッファを Topology POP に渡し、点インデックス属性とプリミティブ数の手動指定でひとつのジオメトリとして位相を組み上げるフロー。
- GLSL Create POP で点群と点インデックス属性を生成
- GLSL Advanced POP で頂点・プリミティブ属性を追加
- Topology POP の Primitive Mode を Source Attribute and Manual Topology Info に設定
- プリミティブ数を手動指定して位相を構築
Example 2: 別POPから位相を参照 🔗
Box POP → Topology POP (Source Topology Reference) → Convert POP
別の POP が持つ位相情報を Topology POP の Source Topology Reference モードで参照し、点データだけを差し替えながら同じ位相構造を再利用してメモリ確保を抑える例。
- プリミティブ取得元として位相を持つ POP を指定
- Topology パラメータを Source Topology Reference に設定
- 位相をコピーせず参照して下流に渡す
Example 3: GPUメモリ確保の最適化 🧠
Particle POP → Topology POP (Max Points 手動指定) → Render
点数とプリミティブ数の上限が分かっている場合に Topology POP で最大値を小さく手動指定し、下流 POP の GPU メモリ確保とダウンロードのストールを削減する用途。
- 実際の点数・プリミティブ数の上限を把握
- Max Points と各 Max プリミティブ数を手動指定
- 下流 POP のメモリ確保を必要最小限に抑制
関連オペレータ 🔗
類似機能OP 🔍
- Convert POP — ジオメトリ種別・位相の変換
組み合わせ推奨OP 🔄
- GLSL Create POP — GPU で点群バッファを生成し位相結合の入力にする
- GLSL Advanced POP — 頂点・プリミティブ属性を生成して合成
- Merge POP — 複数 POP を結合してから位相を記述
- Attribute POP — 点インデックス属性を作成・編集
- Null POP — 結合後のジオメトリを参照点として中継
前処理・後処理POP 🎯
- 前処理: GLSL Create POP、GLSL Advanced POP、Attribute POP、Merge POP
- 後処理: Convert POP、Null POP、Transform POP
Info情報 📊
Topology 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: エラー数cpu_memory: オペレータが使用する CPU メモリ量gpu_memory: オペレータが使用する GPU メモリ量
POP 共通情報 📡
num_points: 出力 POP の点数num_prims: 出力 POP のプリミティブ数num_vertices: 出力 POP の頂点数point_count_on_cpu: 点数情報が CPU 側で既知かどうか
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 出力ジオメトリが描画されない
✅ Solution:
Renderがオンになっているか確認(中間状態ではオフになっている場合がある)Primitive Modeと位相情報の取得元が入力データと一致しているか確認- プリミティブ数(三角形・四角形・線)が 0 のまま手動指定されていないか確認
❌ Problem: 点インデックスの位相が崩れる
✅ Solution:
Point Index Attrib Classが点インデックス属性の実際のクラスと一致しているか確認- 点インデックス属性が符号なし整数 (unsigned int) として格納されているか確認
- 前段で Attribute POP を使い属性クラスを揃える
❌ Problem: GPUメモリ使用量が大きい
✅ Solution:
- 点数・プリミティブ数の上限が分かる場合は Max 系パラメータを小さく手動指定
Free Extra GPU Memoryパルスで蓄積した未使用メモリを解放Delete Input Attributesで下流に不要な属性を破棄して軽量化
参考資料 📚
その他 🔗
- TouchDesigner Wiki — POP 概要
- TouchDesigner Wiki — Category:POPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

