
概要 📖 – DAT テーブルをポイント属性として POP に変換
DAT to POPは、DAT テーブルの各行を 1 ポイントに変換し、列ヘッダから P / N / Color などのポイント属性として展開する POPです。列ヘッダはそのまま属性名・成分インデックスとして解釈され、Points DAT で参照したテーブルから 1 行 = 1 ポイントの POP ジオメトリが生成されます。
主な用途 🎯
- CSV / TSV / Web 由来のデータテーブル (Table DAT) を POP のポイント列として展開
- 列ヘッダ (
P(0)/P(1)/P(2)/Color(0..3)等) からポイント属性 (位置 / 色 / 法線 / Tex 座標) を自動マッピング - New Attribute Block (Sequential) で任意のカスタム属性 (名前 / 型 / 成分数 / 配列) を作成
- Override Automatic Attribute で属性のデータ型・成分数を手動指定 (自動推定を上書き)
- 外部生成データ (Python / 解析結果 / DB クエリ) を POP ワークフローに取り込むための橋渡し
データフロー 🔄
入力: DAT (列ヘッダ + 行データ)
↓
Points DAT で参照する DAT を指定
↓
New Attribute (Sequential) ブロックで属性スキーマを定義
↓
Select Columns by + Columns で対象列を選択
↓
Output Attribute Scope で出力属性 (P / N / Color / Tex 等) を指定
↓
出力: 1 行 = 1 ポイントの POP ジオメトリ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Points Page 📋
Points DAT .pointsdat 📄
Points DAT .pointsdat 📄
– ポイント属性ソースとして参照する DAT のパスを指定
– 同一ネットワーク内の Table DAT / File In DAT / Script DAT 等を相対パス・絶対パスのどちらでも指定可能
– テーブルは列ヘッダ (1 行目) + 値 (2 行目以降) の構造で、各行が 1 ポイントに対応
New Attribute (Sequential ブロック数) .attr 🆕
New Attribute .attr 🔢
– 作成する属性ブロックの個数を指定するシーケンシャルブロック数
– 各ブロックは attr0*, attr1*, … と連番でパラメータが展開され、ブロックごとに 1 属性を定義
Select Columns by .attr0columnstype 🔎
ブロックごとに対象列を名前で選ぶか番号で選ぶかを切り替えるメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Name | .name |
DAT の列ヘッダ (1 行目) と名前パターンで列を選択 |
| Number | .number |
0 始まりの列インデックス (数値範囲・空白区切り) で列を選択 |
Columns .attr0columns 🧱
Columns .attr0columns 🧱
– 属性に変換する DAT 列のパターンを指定
– Select Columns by が Name のときは P(?) Color(?) 等の名前パターン (? で成分インデックスを束ねる)
– Select Columns by が Number のときは 0-2 5 のような列番号範囲
Output Attribute Scope .attr0outputscope 📛
選択した列を出力するポイント属性の種類を指定するメニューパラメータ (予定義属性から選択、または属性の成分を限定)
| 項目 | 内部名 | 説明 |
|---|---|---|
| P | .P |
ポイント位置属性 P (vec3) を生成 |
| N | .N |
法線属性 N (vec3) を生成 |
| Color | .Color |
頂点カラー属性 Color (vec4) を生成 |
| Color.rgb | .Color.rgb |
頂点カラーの RGB 成分のみ (vec3) を生成、A 成分は除外 |
| Tex | .Tex |
テクスチャ座標属性 Tex (vec3) を生成 |
| PointScale | .PointScale |
ポイントごとのスケール値 PointScale (float) を生成 |
| LineWidth | .LineWidth |
ライン描画時の線幅属性 LineWidth (float) を生成 |
Override Automatic Attribute .attr0overrideauto 🛠️
Override Automatic Attribute .attr0overrideauto 🛠️
– オンにすると、入力 DAT と他パラメータから自動推定される属性種別を手動指定で上書き
– 新規カスタム属性の型・成分数を明示したい場合に使用
Attribute Type .attr0type 🏷️
新規属性のデータ型を指定するメニューパラメータ (Override Automatic Attribute がオンのときに有効)
| 項目 | 内部名 | 説明 |
|---|---|---|
| Components | .attr0numcomps |
サブパラメータ attr0numcomps で新規カスタム属性の成分数 (1 = スカラ / 3 = vec3 / 4 = vec4 等) を指定 |
Array .attr0isarray 📚
Array .attr0isarray 📚
– オンにすると属性を配列として扱う (例: float3 値 5 つを 1 ポイントあたりに持つ配列)
– 列ヘッダは MyArray[0], MyArray[1], … の形式で参照される
Array Size .attr0arraysize 🔢
– 配列属性のとき、1 ポイントあたりの要素数を指定する整数値
– Array がオンのときに有効、対応する DAT 列数とこの値が整合している必要あり
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: CSV ファイルをポイントクラウドとして読込み 📊
File In DAT (CSV) → DAT to POP (Points DAT 参照, P(?) 列をマッピング) → Render TOP
CSV ファイル (列ヘッダ P(0),P(1),P(2)) を File In DAT で読み込み、DAT to POP の Points DAT に参照させて 1 行 = 1 ポイントの POP ジオメトリに展開し、後段の Render TOP でポイントクラウドとしてレンダリングする基本フロー。
- File In DAT で CSV を読み込む (1 行目に列ヘッダ
P(0),P(1),P(2)) - DAT to POP の Points DAT に File In DAT のパスを指定
- Select Columns by を
Nameに設定 - Columns に
P(?)を指定して 3 成分をまとめて P 属性に - Output Attribute Scope を
Pに設定 - 下流に Geometry COMP + Render TOP を接続してポイント表示
Example 2: Web API からのデータを動的ポイント生成 🌐
Web Client DAT → Convert DAT (JSON → Table) → DAT to POP (Columns で P(?) と Color(?) を分離指定) → Render TOP
Web Client DAT で API から取得した JSON データを Convert DAT で Table 化し、DAT to POP の New Attribute ブロックを 2 個使って 1 ブロック目で位置 (P) を、2 ブロック目で頂点カラー (Color) を生成し、後段 Render TOP でカラー付きポイント可視化を行う動的データ可視化用途。
- Web Client DAT で API レスポンスを取得
- Convert DAT で JSON → Table 形式に変換 (列ヘッダ
P(0..2),Color(0..3)) - DAT to POP の Points DAT に Convert DAT を参照
- New Attribute を
2に設定 (位置 + 色の 2 ブロック) - ブロック 0: Columns =
P(?), Output Attribute Scope =P - ブロック 1: Columns =
Color(?), Output Attribute Scope =Color - 下流 Render TOP でカラー付きポイントを表示
Example 3: Script DAT で生成した位置データを POP に変換 🐍
Script DAT (Python で table 生成) → DAT to POP (Override Automatic Attribute でカスタム属性) → Transform POP → Geometry COMP
Script DAT の Python コードでアルゴリズム生成した位置・カスタムデータ (列ヘッダ P(0..2), energy(0)) を DAT to POP で読み込み、1 ブロック目で標準 P 属性、2 ブロック目で Override Automatic Attribute を有効化してスカラ energy カスタム属性を生成、後段で Transform POP や Render TOP で energy 値に基づく演出を実装する用途。
- Script DAT で Python コードを書いて Table を生成 (列ヘッダ
P(0),P(1),P(2),energy(0)) - DAT to POP の Points DAT に Script DAT を参照
- New Attribute を
2に設定 - ブロック 0: Columns =
P(?), Output Attribute Scope =P - ブロック 1: Columns =
energy(0), Override Automatic Attribute をオン, Attribute Type → Components =1(スカラ) - 下流 Transform POP / Render TOP で
energy属性を読み取って演出に反映
関連オペレータ 🔗
類似機能OP 🔍
- POP to DAT — DAT to POP の逆方向、POP 属性をテーブル形式の DAT に書き出す
- CHOP to POP — DAT 版と並ぶ converter ファミリ、CHOP チャンネルからポイント属性を生成
- SOP to POP — SOP ジオメトリのポイント / 属性を POP に変換する converter
- TOP to POP — TOP のピクセルデータをポイント属性として展開する converter
組み合わせ推奨OP 🔄
- Table DAT — DAT to POP に渡す元データを手動編集 / Python から書き換え
- Convert DAT — Text / JSON / XML DAT を Table 形式に変換して DAT to POP に渡す
- Script DAT — Python コードでアルゴリズミックに Table を生成 → DAT to POP で POP 化
- Math POP — DAT to POP で展開した属性値を後段で正規化・スケーリング
- Attribute POP — 生成した属性のリネーム・型変換・削除など属性スキーマ操作
- Transform POP — DAT 由来のポイント群を平行移動・回転・スケール
前処理・後処理POP 🎯
- 前処理: Attribute POP
- 後処理: Transform POP、Math POP
Info POP情報 📊
DAT to 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: 出力ジオメトリのポイント数 (= DAT 行数)num_point_attribs: 出力ジオメトリのポイント属性数num_vertex_attribs: 出力ジオメトリの頂点属性数num_prim_attribs: 出力ジオメトリのプリミティブ属性数num_prims: 出力ジオメトリのプリミティブ数gpu_memory_used: この POP が使用している GPU メモリ量
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 出力ポイント数が 0 または想定行数と異なる
✅ Solution:
- Points DAT の参照先が正しい DAT を指しているか確認 (Table DAT / File In DAT 等)
- DAT の 1 行目が列ヘッダ、2 行目以降がデータになっているか確認 (1 行目もデータ扱いだと 1 ポイント分ずれる)
- Info CHOP を後段に接続して
num_points出力を実測値で確認
❌ Problem: 属性が生成されない / 下流で読めない
✅ Solution:
- Select Columns by が
Nameのとき Columns パターンが列ヘッダにマッチしているか確認 (大文字小文字・括弧表記を厳密一致) - Output Attribute Scope が空でないか、対象属性 (P / Color / N / Tex 等) が選択されているか確認
- Common Page の Delete Input Attributes パターンで出力属性が破棄されていないか確認
❌ Problem: ベクトル属性 (P / Color) の成分が結合されず別属性になる
✅ Solution:
- 列ヘッダが
P(0),P(1),P(2)の形式になっているか確認 (x,y,zのような単名だと別属性として扱われる) - Columns に
P(?)のように?ワイルドカードを使って成分を束ねて指定 - Output Attribute Scope を成分単位 (
P(0)) ではなく属性全体 (P) で指定
❌ Problem: カスタム属性が float に固定される / 想定型にならない
✅ Solution:
- Override Automatic Attribute をオンにして Attribute Type → Components で成分数を明示
- Array 属性が必要な場合は Array をオンにして Array Size を指定 (DAT 列ヘッダは
MyArray[0],MyArray[1], … 形式) - 下流で Attribute POP を使って事後的に属性型を変換することも可能
参考資料 📚
その他 🔗
- TouchDesigner Wiki — POP 概要
- TouchDesigner Wiki — Category:POPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – DAT to POP
- POP 概要 (Points, Vertices and Primitives in POPs)
- POP to DAT (逆方向変換)
- Attribute (属性) の基礎

