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

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

Topology POP の位相結合機能を示す図

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

概要 📖 – 点と位相を結合制御

Topology POPは、既存の点と位相 (頂点・プリミティブ) を結合する方法とメモリ確保を細かく制御する POPです。入力 POP の符号なし整数属性を点インデックスのリストとして解釈し、プリミティブ数とあわせて位相を記述します。GLSL で生成した複数バッファをジオメトリとして結合する用途に使われます。

主な用途 🎯

  • 複数の点群バッファを 1 つのジオメトリに統合(GLSL で生成した buffer の結合)
  • 属性 (attribute) を点インデックスのリストとして解釈し位相を記述
  • 頂点・プリミティブ属性を別の POP から合成
  • プリミティブ数(三角形・四角形・線)を手動またはGPU値で指定
  • 最大点数・最大プリミティブ数を絞ってGPUメモリ確保を削減

データフロー 🔄

入力: 点群と属性をもつ POP(複数可)

位相処理(点インデックス属性とプリミティブ情報を解釈して位相を構築)

出力: 点と位相 (頂点・プリミティブ) を結合したジオメトリ

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

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 に渡し、点インデックス属性とプリミティブ数の手動指定でひとつのジオメトリとして位相を組み上げるフロー。

  1. GLSL Create POP で点群と点インデックス属性を生成
  2. GLSL Advanced POP で頂点・プリミティブ属性を追加
  3. Topology POP の Primitive Mode を Source Attribute and Manual Topology Info に設定
  4. プリミティブ数を手動指定して位相を構築

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 🎯


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 で下流に不要な属性を破棄して軽量化

参考資料 📚

その他 🔗

公式リソース 📖

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