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

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

Analyze POP の属性統計解析機能を示す図

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

概要 📖 – ジオメトリ属性の統計解析と集約

Analyze POPは、入力ジオメトリのポイント・頂点・プリミティブ属性を統計解析し、平均・最小・最大・要素数等を集約して新しい属性として出力する POPです。出力は解析結果の属性を持つジオメトリで、下流の Math POP や Lookup Attribute POP で基準値として参照できます。

主な用途 🎯

  • ポイント属性 (P / N / Cd 等) の最大値・最小値・平均値の取得
  • 頂点属性・プリミティブ属性の統計的解析
  • ジオメトリ全体の要素数 (Num Points / Vertices / Primitives) の取得
  • 属性ベクトルの長さ (Length) や RMS Power の計算
  • 下流オペレータでの正規化・スケーリングに使う基準値の抽出

データフロー 🔄

入力: ジオメトリ (属性付き複数要素)

属性クラス選択 + 解析関数適用

出力: 集約された属性値を持つ単一要素ジオメトリ

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Analyze Page 📋

Attributes Class .attrclass 🎛️

解析対象とする属性クラスを選択するメニューパラメータ

項目 内部名 説明
Point .point ポイント属性 (P / N / Cd 等) を解析対象にする
Vertex .vertex 頂点属性 (UV / 頂点ノーマル 等) を解析対象にする
Primitive .primitive プリミティブ属性 (面の属性) を解析対象にする

Group 設定 🎯

Group .group 🎯
– 入力にグループが存在する場合、指定したグループ名に属する要素のみを解析対象に絞り込む
– 空欄の場合は全要素が対象

Number of Elements in Group .numgroupelements 🔢
– 選択グループに属する要素数を新しい属性として出力
– 群分けされたジオメトリの要素数を後段で参照したい場合に使用

Input Attributes .inputattrs 🔤

Input Attributes .inputattrs 🔤
– 解析対象とする入力属性名のパターン (デフォルト * で全属性)
PCd N のように複数属性をスペース区切りで指定可能

Append Attrib Names to Output .appendattrname 🏷️
– 出力属性名に解析元の入力属性名を付加 (例: max_P) して可読性を上げる
– 複数属性を同時解析する際の名前衝突回避に有効

Combine Components .combine 🔀

解析前に属性ベクトルの成分を 1 つの値に集約する方式

項目 内部名 説明
Off .off 成分集約を行わず、各成分を独立に解析
Add .add 全成分の加算結果を解析対象にする
Subtract .sub 成分間の減算結果を解析対象にする
Multiply .mul 全成分の積を解析対象にする
Divide .div 成分間の除算結果を解析対象にする
Average .avg 全成分の平均を取って解析
Minimum .min 全成分の最小値を抽出して解析
Maximum .max 全成分の最大値を抽出して解析
Length .len ベクトルとしての長さ (ノルム) を計算して解析

解析関数 Toggle 群 🎚️

Average .avg 📊
– 全要素の属性値を平均化した結果を出力

Centroid .centroid 🎯
– 属性の最小値と最大値の中点 (バウンディングボックスの中心相当) を出力

Minimum .min ⬇️
– 入力属性の最小値を出力

Maximum .max ⬆️
– 入力属性の最大値を出力

Size .size 📏
– 最大値から最小値を引いたサイズ (bounding extent) を出力
– バウンディングボックスの寸法取得に有用

Index of Minimum .minindex 🔻
– 最小値を持つ要素のインデックスを出力

Index of Maximum .maxindex 🔺
– 最大値を持つ要素のインデックスを出力

Sum .sum
– 全要素の属性値もしくは成分の合計を出力

RMS Power .rmspower
– 属性値の二乗平均平方根 (RMS) を計算
– ベクトル属性のエネルギー指標として使用

ジオメトリ要素数 🔢

Num Points, Vertices, Primitives .numpointsvertsprims 🔢
– ポイント数・頂点数・プリミティブ数を属性として出力

Num Prims/Verts per Type .numprimsbatch 📦
– プリミティブタイプ別の数 (例: triangle / quad / polyline) と各タイプの頂点数を属性として出力

Dimension .dimension 📐
– この POP の次元サイズ (寸法) を属性として出力

P Attribute Values .pattrvals 📍

P (ポイント位置) 属性に解析結果を書き込む際の値の選択

項目 内部名 説明
Don’t Create P Attribute .none P 属性を生成しない
Input Attribute Average .avg 入力属性の平均値を P として書き込む
Input Attribute Centroid .centroid 入力属性の Centroid (最小最大の中点) を P として書き込む
Input Attribute Minimum .min 入力属性の最小値を P として書き込む
Input Attribute Maximum .max 入力属性の最大値を P として書き込む

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: バウンディングボックス中心の取得 📦

SOP to POP → Analyze POP (Attributes Class=point, Centroid=on, P Attribute Values=centroid) → Transform POP

入力ジオメトリのポイント位置属性 P を Analyze POP の Centroid モードで集約し、バウンディングボックスの中心座標を持つ単一ポイントを生成して下流の Transform POP で原点合わせに使う基本フロー。

  1. 入力 POP のポイント属性 P を Analyze POP に渡す
  2. Attributes Class を point、Input Attributes を P に設定
  3. Centroid トグルをオン、P Attribute Values を centroid に設定
  4. 出力の P 属性が入力ジオメトリの中心座標を持つ
  5. 下流 Transform POP で出力 P を反転させて Translate に渡し、原点に整列

Example 2: 属性の正規化基準値抽出 📊

入力 POP → Analyze POP (Maximum / Minimum) → Math POP (Normalize) → Shader

ソース POP のスカラ属性 (例: 速度・距離) を Analyze POP で最大値と最小値を取得し、後段の Math POP で 0–1 正規化してシェーダに渡すことで、入力レンジに依存しないビジュアル制御を実現する用途。

  1. 入力 POP に正規化したいスカラ属性を持たせる
  2. Analyze POP の Maximum / Minimum トグルを両方オンにして属性レンジを取得
  3. 下流 Math POP に Analyze POP の出力を参照させて min/max を取り出す
  4. Math POP で (x - min) / (max - min) を計算し正規化
  5. 正規化された属性を Render TOP / GLSL POP のシェーダ入力として使用

Example 3: ジオメトリ要素数のロギング 🔢

POP チェーン → Analyze POP (Num Points, Vertices, Primitives) → POP to CHOP → DAT

動的に要素数が変化する POP チェーン (Particle POP や Generator 系) の末端に Analyze POP を置いて Num Points / Vertices / Primitives 属性を取得し、後段で CHOP / DAT に流して時系列ログとして記録する運用フロー。

  1. 可変要素数の POP チェーン末尾に Analyze POP を接続
  2. Num Points, Vertices, Primitives トグルをオンに設定
  3. 出力属性を POP to CHOP に渡してチャンネル化
  4. CHOP 値を DAT に書き出して時系列ログとして保存
  5. ログから処理負荷とジオメトリ規模の相関を解析

関連オペレータ 🔗

類似機能OP 🔍

  • Analyze CHOP — CHOP family の同名解析オペレータ。チャンネル時系列の統計解析が対象
  • Attribute POP — 属性自体の作成・編集・変換 (解析ではないが Analyze の前後で頻用)

組み合わせ推奨OP 🔄

  • Math POP — Analyze 結果を基準値として後段で正規化・スケーリング
  • Lookup Attribute POP — Analyze 出力属性を参照テーブルとして他 POP の属性に流し込む
  • POP to CHOP — Analyze 結果属性を CHOP チャンネルに変換して時系列で扱う
  • Transform POP — Centroid 出力でジオメトリを原点合わせ・整列

前処理・後処理POP 🎯


Info POP情報 📊

Analyze 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: エラー数

POP 汎用情報 (Info CHOP 経由) 📊

  • num_points: 出力ジオメトリのポイント数
  • num_point_attribs: 出力ジオメトリのポイント属性数
  • num_vertex_attribs: 出力ジオメトリの頂点属性数
  • num_prim_attribs: 出力ジオメトリのプリミティブ属性数
  • num_prims: 出力ジオメトリのプリミティブ数
  • gpu_memory_used: この POP が使用している GPU メモリ量

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

よくある問題と解決策 🔧

❌ Problem: 解析結果が期待値と異なる
✅ Solution:

  • Attributes Class が解析したい属性クラス (point / vertex / primitive) と一致しているか確認
  • Input Attributes パターンが対象属性にマッチしているか確認 (デフォルト * は全属性)
  • Combine Components が off 以外になっている場合、成分集約が意図通りか再確認

❌ Problem: 出力属性が見つからない / 下流で読めない
✅ Solution:

  • Append Attrib Names to Output をオンにして出力属性名に元属性名を付加し可読性を上げる
  • Common Page の Delete Input Attributes パターンで出力属性が破棄されていないか確認
  • P Attribute Values が none 以外の場合、P 属性が上書きされている可能性を確認

❌ Problem: Group 指定で要素が解析されない
✅ Solution:

  • Group 名が入力ジオメトリに存在するか上流 POP の出力で確認
  • Number of Elements in Group をオンにして対象要素数を可視化
  • Group が空の場合は全要素対象になるため、意図せず全件解析になっていないか再点検

❌ Problem: パフォーマンスが重い
✅ Solution:

  • Common Page の Delete Input Attributes で不要属性を破棄してメモリ・帯域を削減
  • 前段で Group POP を使って解析対象要素を絞り込む
  • Free Extra GPU Memory パルスで未使用 GPU メモリを解放

参考資料 📚

その他 🔗

公式リソース 📖

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