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

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
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 POP で length() によりスカラーに変換しておく
入力範囲の指定有無 .useinputrange 🟢
Use Input Range .useinputrange 🟢
– Use Input Range (入力範囲を使用) — オンで Input Range を有効化し、属性値の範囲を明示的に指定
– オフのときはデフォルト範囲 (0 〜 Number 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 に変換することで、横軸が高さ・縦軸が頻度のグラフを描画できる基本フロー。
- Grid POP を配置し、十分な密度のポイント配列を生成 (例: 100×100)
- Histogram POP を後段に接続し、
inputattrscopeにP(1)を入力 useinputrangeをオン、inputrange1= -0.5 /inputrange2= 0.5 (Grid の Y 範囲に合わせる)numbinsを20、outputbinvalをオンに設定- POP to CHOP で
CountとBinValueを 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 ビンに集計。outsiderange を Extra Out-of-Range Bins に設定しておくことで、設定した範囲を超える高速・低速粒子も別ビンとして取りこぼし無く把握できる応用フロー。
- Particle POP で時系列パーティクル群を生成
- Math POP を後段に接続し、
v属性にlength()を適用して速度の大きさを新規スカラー属性speedとして作成 - Histogram POP の
inputattrscopeにspeedを入力、useinputrangeをオンにして想定範囲 (例:0〜5) を指定 numbinsを10、outsiderangeをExtra Out-of-Range Binsに設定- POP to CHOP で
Count属性を取出し、フレームごとに変化する速度分布を Graph で確認
Example 3: 範囲外データの扱い比較 🔍
Noise POP → Histogram POP × 3 (outsiderange=clamp / discard / extrabins) → 並列比較
Noise POP で広範囲に散らばる値を持つポイント群を生成し、3 つの Histogram POP に並列入力。それぞれ outsiderange を Clamp / Discard / Extra Out-of-Range Bins に設定して結果を並べ、範囲外データの扱いが分布形状にどう影響するかを比較する検証フロー。
- Noise POP で広範囲に散在する値を持つポイント群を生成
- Histogram POP A を作成し
outsiderangeをClampに設定 (範囲外は端ビンに集約) - Histogram POP B を作成し
outsiderangeをDiscardに設定 (範囲外は除外) - Histogram POP C を作成し
outsiderangeをExtra Out-of-Range Binsに設定 (範囲外専用ビンを追加) - 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 🎯
- 前処理: Math POP、Attribute POP、ReRange POP、Accumulate POP
- 後処理: Analyze POP、Math POP、ReRange POP、Null 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:
outsiderangeがDiscardになっていないか確認 (この設定では範囲外データは集計から除外)- 範囲外データも数えたい場合は
outsiderangeをExtra Out-of-Range Binsに切替えて専用ビンに集約 - 境界付近で取りこぼしが発生する場合は
quantizeをFloor↔Ceilingで切替えて境界の扱いを調整
❌ Problem: BinValue 属性が出力されない / 横軸が取得できない
✅ Solution:
outputbinvalがオンになっているか確認 (オフだとCount属性のみ出力)useinputrangeがオフのときは Input Range が無効でビン値の意味が0〜numbinsの整数になるため、明示的な範囲指定の上でoutputbinvalをオンにする- 下流の POP to CHOP で取出す属性名に
BinValueが含まれているか確認
❌ Problem: ビン数を増やすと分布が滑らかにならず歯抜けになる
✅ Solution:
- 入力ポイント数に対し
numbinsが大きすぎる可能性 (1 ビンあたりの期待カウントが1未満になると歯抜けが発生)、numbinsを減らすか入力ポイント数を増やす quantizeをRoundに切替え、値の境界近傍の振り分けを均す- 前段で ReRange POP を使い、属性値の分布が偏っている場合は対数変換などで再分布させてから集計
参考資料 📚
その他 🔗
- TouchDesigner Wiki — POP 概要
- TouchDesigner Wiki — Category:POPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Histogram POP
- Points, Vertices and Primitives in POPs (POP 属性の基礎)
- TouchDesigner公式ドキュメント – Accumulate POP
- TouchDesigner公式ドキュメント – Math POP

