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

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

Histogram POP の属性値を bin に集計してヒストグラムを生成する機能を示す図

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

概要 📖 – 属性値の分布を集計

Histogram POPは、入力ジオメトリの単一スカラー属性 (またはベクトル属性の 1 成分) を指定数のビンに振り分け、各ビンに含まれるポイント数を Count 属性として出力する POPです。出力は Number of Bins で指定した個数のポイントから成り、各ポイントは入力範囲を等分割した 1 区間 (ビン) を表します。Output Bin Value をオンにすると各ビンの境界値が BinValue 属性として併せて出力されるため、POP to CHOP 経由でグラフ表示する際の横軸として利用できます。

主な用途 🎯

  • 入力ジオメトリの属性値を指定数のビンに振り分けて頻度分布 (ヒストグラム) を生成
  • Number of Bins (numbins) でビン数を指定し、Use Input Range (useinputrange) + Input Range で集計範囲を設定
  • Quantize (quantize) を Floor / Round / Ceiling から選び、値をビンに割当てる量子化方式を切替
  • Outside Range (outsiderange) を Clamp / Discard / Extra Out-of-Range Bins から選び、範囲外データの扱いを制御
  • Output Bin Value (outputbinval) で各ビンの境界値を BinValue 属性として出力し、グラフ描画用の横軸を取得

データフロー 🔄

入力: スカラー属性または属性ベクトルの 1 成分を持つポイント / プリミティブ

Histogram POP (Input Range を Number of Bins に等分割 → 各入力点を該当ビンに加算)

出力: N 個のビン (= N ポイント) と Count 属性 (任意で BinValue 属性)

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Histogram Page 📋

Attribute Class .attrclass 🧩

Attribute Class (属性クラス) — 集計対象とする属性の所属を選択するメニューパラメータ

項目 内部名 説明
Point .point ポイント属性 (各ポイントが持つ値) を集計対象にする
Vertex .vertex 頂点属性 (プリミティブ上の頂点が持つ値) を集計対象にする
Primitive .primitive プリミティブ属性 (面・線分単位の値) を集計対象にする

集計対象の属性 .inputattrscope 📍

Input Attribute Scope .inputattrscope 📍
Input Attribute Scope (集計対象スコープ) — 頻度分布を取りたい属性名、またはベクトル属性の特定成分を指定
– 例: 位置の Y 成分なら P(1)、色の赤成分なら Cd(0)、スカラー属性ならそのまま属性名 (例: density)
– ベクトル属性をまとめて集計したい場合は前段の Math POPlength() によりスカラーに変換しておく

入力範囲の指定有無 .useinputrange 🟢

Use Input Range .useinputrange 🟢
Use Input Range (入力範囲を使用) — オンで Input Range を有効化し、属性値の範囲を明示的に指定
– オフのときはデフォルト範囲 (0Number of Bins) が使われ、整数値の頻度を数えるカウンタ用途として動作

Input Range .inputrange 📏

Input Range (入力範囲) — 集計に使う属性値の下限・上限を指定するパラメータ群 (Number of Bins に等分割される)

Input Range .inputrange1 🔽
inputrange1 — 入力範囲の下限値 (最初のビンが表す値の起点)

Input Range .inputrange2 🔼
inputrange2 — 入力範囲の上限値 (最後のビンが表す値の終点)

Input Range Min .inputrangemin ⬇️
inputrangemin — 範囲の最小側の代替指定 (UI 表示モードに応じて inputrange1 と切替えて使用)

Input Range Max .inputrangemax ⬆️
inputrangemax — 範囲の最大側の代替指定 (UI 表示モードに応じて inputrange2 と切替えて使用)

Bin 境界値の出力 .outputbinval 📤

Output Bin Value .outputbinval 📤
Output Bin Value (ビン値出力) — 各ビンが表す値の起点を BinValue 属性として併せて出力
– グラフ表示時の横軸 (x 値) として利用、POP to CHOP 経由で取出して描画する用途に必須

Quantize .quantize 🔢

Quantize (量子化) — 連続値をビンに割当てる際の丸め方式を選択するメニューパラメータ

項目 内部名 説明
Floor .floor 切り捨て (値以下で最も近いビンに割当て、x.7 → ビン x)
Round .round 四捨五入 (値に最も近いビンに割当て、x.7 → ビン x+1)
Ceiling .ceiling 切り上げ (値以上で最も近いビンに割当て、x.2 → ビン x+1)

Outside Range .outsiderange 🚧

Outside Range (範囲外の扱い) — Input Range の上下限を超えた値の処理方法を選択するメニューパラメータ

項目 内部名 説明
Clamp .clamp 範囲外の値は下端ビン (下限を下回る場合) または上端ビン (上限を上回る場合) に押し込んで集計
Discard .discard 範囲外の値は集計対象から完全に除外 (どのビンにも加算しない)
Extra Out-of-Range Bins .extrabins 範囲外専用の追加ビンを 2 個 (下限未満・上限超過) 出力に付加して集計

Number of Bins .numbins 📊

Number of Bins .numbins 📊
Number of Bins (ビン数) — 入力範囲を等分割するビンの個数 (= 出力ポイント数)
– 大きくすると分解能が上がるが各ビンのカウントが少なくなり、小さくすると分解能が下がる代わりに各ビンに値が集中

Count Attribute .countattr 🏷️

Count Attribute .countattr 🏷️
Count Attribute (カウント属性) — 出力する Count 属性の所属クラス (Point / Vertex / Primitive) を指定
– 通常は出力ポイント (= ビン) に紐づける point のままで使用


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 パターン: 出力に残したい属性名のパターン (例: Count BinValue) を指定。指定外の属性は破棄される
  • 用途: 下流で不要な属性を切り落として分岐ブランチを軽量化、メモリ・帯域を節約

実践アイデア 💡

Example 1: Y 座標の高さ分布を可視化 📊

Grid POP → Histogram POP (P(1), numbins=20, outputbinval=on) → POP to CHOP → Graph

Grid POP で生成した格子状ポイントの Y 座標 (P(1)) を 20 個のビンに振り分け、各高さ帯に含まれるポイント数の頻度分布を Count 属性として取得します。BinValue 属性も併せて出力し、POP to CHOP 経由で CHOP に変換することで、横軸が高さ・縦軸が頻度のグラフを描画できる基本フロー。

  1. Grid POP を配置し、十分な密度のポイント配列を生成 (例: 100×100)
  2. Histogram POP を後段に接続し、inputattrscopeP(1) を入力
  3. useinputrange をオン、inputrange1 = -0.5 / inputrange2 = 0.5 (Grid の Y 範囲に合わせる)
  4. numbins20outputbinval をオンに設定
  5. POP to CHOP で CountBinValue を CHOP に変換し、Trail CHOP / Graph で表示

Example 2: パーティクル速度の頻度集計 🎯

Particle POP → Math POP (length(v)) → Histogram POP (numbins=10, outsiderange=extrabins) → POP to CHOP

Particle POP の出力速度ベクトル (v) を Math POP でスカラーの速度大きさに変換し、Histogram POP で 10 ビンに集計。outsiderangeExtra Out-of-Range Bins に設定しておくことで、設定した範囲を超える高速・低速粒子も別ビンとして取りこぼし無く把握できる応用フロー。

  1. Particle POP で時系列パーティクル群を生成
  2. Math POP を後段に接続し、v 属性に length() を適用して速度の大きさを新規スカラー属性 speed として作成
  3. Histogram POP の inputattrscopespeed を入力、useinputrange をオンにして想定範囲 (例: 05) を指定
  4. numbins10outsiderangeExtra Out-of-Range Bins に設定
  5. POP to CHOP で Count 属性を取出し、フレームごとに変化する速度分布を Graph で確認

Example 3: 範囲外データの扱い比較 🔍

Noise POP → Histogram POP × 3 (outsiderange=clamp / discard / extrabins) → 並列比較

Noise POP で広範囲に散らばる値を持つポイント群を生成し、3 つの Histogram POP に並列入力。それぞれ outsiderangeClamp / Discard / Extra Out-of-Range Bins に設定して結果を並べ、範囲外データの扱いが分布形状にどう影響するかを比較する検証フロー。

  1. Noise POP で広範囲に散在する値を持つポイント群を生成
  2. Histogram POP A を作成し outsiderangeClamp に設定 (範囲外は端ビンに集約)
  3. Histogram POP B を作成し outsiderangeDiscard に設定 (範囲外は除外)
  4. Histogram POP C を作成し outsiderangeExtra Out-of-Range Bins に設定 (範囲外専用ビンを追加)
  5. 3 つの出力を POP to CHOP で CHOP に変換し、Merge CHOP で並べて Graph で形状を比較

関連オペレータ 🔗

類似機能OP 🔍

  • Accumulate POP — 属性値を累積加算する POP (Histogram の前段で累積値属性を作る用途で組合せ可能)
  • Analyze POP — 属性値全体の統計量 (max / min / average 等) を 1 サンプルに収束、分布形状ではなく代表値を求める POP
  • ReRange POP — 属性値の範囲を線形変換する POP (Histogram の Input Range に合わせて前段で正規化する用途)

組み合わせ推奨OP 🔄

  • Math POP — ベクトル属性を length() 等でスカラーに変換し、Histogram POP に渡す前処理に必須
  • POP to CHOP — Histogram の Count / BinValue 属性を CHOP に取出してグラフ描画する後段の典型
  • Particle POP — 時系列パーティクル属性 (速度・寿命・密度等) の分布を継続的に観測する入力源
  • Grid POP — 格子状ポイントを生成し、座標成分の分布を可視化する基本入力
  • Noise POP — 広範囲の値を持つポイント群を生成、Histogram の挙動検証用ベンチに有用
  • Attribute POP — Histogram に入力する任意のスカラー属性を事前に生成・編集する前処理

前処理・後処理POP 🎯


Info POP情報 📊

Histogram 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 汎用情報 📊

  • num_points: 出力ジオメトリのポイント総数 (= Number of Bins、Outside Range が Extra Out-of-Range Bins なら +2)
  • num_prims: 出力ジオメトリのプリミティブ総数
  • num_point_attribs: 出力ジオメトリのポイント属性数 (Count + 任意で BinValue)
  • num_vertex_attribs: 出力ジオメトリの頂点属性数
  • num_prim_attribs: 出力ジオメトリのプリミティブ属性数
  • gpu_memory_used: この POP が使用している GPU メモリ量

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

よくある問題と解決策 🔧

❌ Problem: 全ビンが 0 / 期待した分布が出ない
✅ Solution:

  • inputattrscope で指定した属性名が入力ジオメトリに実際に存在するか確認 (Attribute POP / Info POP で属性一覧を確認)
  • ベクトル属性を直接指定すると集計できないため、P(1) のように成分インデックスを付ける、または前段に Math POP を入れて length() でスカラー化
  • attrclass が入力属性の所属 (Point / Vertex / Primitive) と一致しているか確認

❌ Problem: 範囲外の値が無視されてしまう / 想定より少なく集計される
✅ Solution:

  • outsiderangeDiscard になっていないか確認 (この設定では範囲外データは集計から除外)
  • 範囲外データも数えたい場合は outsiderangeExtra Out-of-Range Bins に切替えて専用ビンに集約
  • 境界付近で取りこぼしが発生する場合は quantizeFloorCeiling で切替えて境界の扱いを調整

❌ Problem: BinValue 属性が出力されない / 横軸が取得できない
✅ Solution:

  • outputbinval がオンになっているか確認 (オフだと Count 属性のみ出力)
  • useinputrange がオフのときは Input Range が無効でビン値の意味が 0numbins の整数になるため、明示的な範囲指定の上で outputbinval をオンにする
  • 下流の POP to CHOP で取出す属性名に BinValue が含まれているか確認

❌ Problem: ビン数を増やすと分布が滑らかにならず歯抜けになる
✅ Solution:

  • 入力ポイント数に対し numbins が大きすぎる可能性 (1 ビンあたりの期待カウントが 1 未満になると歯抜けが発生)、numbins を減らすか入力ポイント数を増やす
  • quantizeRound に切替え、値の境界近傍の振り分けを均す
  • 前段で ReRange POP を使い、属性値の分布が偏っている場合は対数変換などで再分布させてから集計

参考資料 📚

その他 🔗

公式リソース 📖

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