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

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

POP to DAT のジオメトリ変換機能を示す図

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

概要 📖 – POPを表データに変換

POP to DATは、POPのポイント・プリミティブ・頂点を行とした表形式のDATに変換するオペレータです。ExtractメニューでPoints / Vertices / Primitives / Detailを切り替え、Attributesで出力する属性を選択します。

主な用途 🎯

  • POPジオメトリの属性値を表形式で確認・デバッグ
  • 点群の位置・色・速度などの属性を CSV 形式でロギング
  • グループ単位での属性データ抽出と後段DATへの受け渡し
  • Thin Out機能による大規模点群の間引きと軽量表示
  • Primitive情報を表形式で取得し外部ツールに連携

データフロー 🔄

入力: POPジオメトリ(GPU上)

GPUからCPUへダウンロード

行列形式のDATとして出力

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

POP to Page 📋

基本設定 🎛️

Active .active
Active(有効化)— 有効時はDATが参照先POPの最新ジオメトリを取得し変換します。無効化すると最後に変換した値を保持します。

POP .pop 🎯
POP(変換元POP)— データを変換する対象のPOPのパスを指定します。

Download Type .downloadtype

GPUからCPUへのデータダウンロード方式の選択

項目 内部名 説明
Immediate (Slow) .immediate 現フレーム内で即座にダウンロード。数ミリ秒の遅延が発生する可能性あり
Next frame (Fast) .nextframe 次フレームに遅延してダウンロード(デフォルト)。レンダリングを止めず高速

※ 注意: POPデータはGPU上にありDATテーブルはCPU上にあるため、GPU→CPU転送による遅延が発生します。デフォルトのNext frame (Fast)は遅延が最小ですがDATの表示が1タイムスライス遅れます。Immediate (Slow)は現フレーム内で取得しますが数ミリ秒の遅延が発生する可能性があります。

引用元: 公式 docs

Extract .extract 🔍

POPのどの粒度のデータをDAT行に展開するかを指定

項目 内部名 説明
Points .points ポイントデータを1行ずつDAT行として出力
Vertices .vertices 頂点データを1行ずつDAT行として出力
Primitives .primitives プリミティブデータを1行ずつDAT行として出力
Detail .detail POP全体のディテール属性を1行として出力

属性・形式設定 📊

Attributes .attrib 🏷️
Attributes(出力属性指定)— 変換する属性を選択します。空欄時は全属性が出力されます。属性名をスペース区切りで列挙して特定属性のみに絞り込めます。

Primitive Type .primitivetype 🔷
Primitive Type(プリミティブ種別列)— 有効時、プリミティブの種別(point / line / linestrip / triangle / quad)を表す列を追加します。

Transpose .transpose 🔄
Transpose(行列入れ替え)— 有効時、テーブルの行と列を入れ替えます。属性名が最初の列に並び、見やすさが向上する場合があります。

間引き機能 🧹

表示行数を制限してデータを間引く機能。元のPOPデータは変更されません。

Thin Out Range .thinoutrange
Thin Out Range(インデックス範囲フィルタ有効化)— 有効時、インデックス範囲によるフィルタリングが行われます。

Thin Range Start .thinrangestart ▶️
Thin Range Start(範囲開始インデックス)— 範囲フィルタの開始インデックスを指定します。

Thin Range Length .thinrangelength 📏
Thin Range Length(範囲長さ)— インデックス範囲でフィルタする要素数を指定します。

Thin Step .thinstep 🪜
Thin Step(N個ごとフィルタ)— N個ごとに1要素を残してフィルタします。

Thin Random .thinrandom 🎲
Thin Random(ランダム間引き割合)— ランダムにフィルタする要素の割合を指定します。

Thin Random Seed .thinrandomseed 🌱
Thin Random Seed(ランダムシード)— ランダム間引きのシード値を指定します。

グループ設定 📦

Group .group 🏷️
Group(対象グループ名)— 入力グループが存在する場合、指定したグループ名の要素のみを変換対象とします。

Invert Group .invertgroup 🔁
Invert Group(グループ反転)— 有効時、Groupで指定したグループに含まれない要素のみを変換対象とします。

Group Columns .grpcol 🗂️

要素のグループ名を出力に含めるかの選択

項目 内部名 説明
None .none グループ名の列を追加しない(デフォルト)
Group Names in one Column .onecolumn 全グループ名を1列にまとめて出力
Column per Group .colpergrp グループごとに1列ずつ追加してグループ所属を表示

実践アイデア 💡

Example 1: 属性値のリアルタイム確認 🔬

Particle POP → POP to DAT (Extract: Points) → Table COMP

Particle POPで生成された点群の位置・速度・色などの属性をPOP to DATで表形式に変換し、Table COMPでビューポートにリアルタイム表示してパーティクル状態をデバッグするフロー。属性名と値の対応がひと目で分かります。

  1. Particle POPでパーティクルシステムを生成
  2. POP to DATを接続しExtractをPointsに設定
  3. Attributes欄を空欄にして全属性を出力
  4. Table COMPでDATの内容をリアルタイム表示

Example 2: 点群データのCSVロギング 💾

File In POP → POP to DAT (Extract: Points) → File Out DAT

外部から読み込んだPOPデータの属性をPOP to DATで表形式に変換し、File Out DATでCSVファイルとして保存。外部ツール(Excel / Python等)での分析や記録目的で点群属性を書き出す用途に活用できます。

  1. File In POPで外部点群データを読込
  2. POP to DATでPoints抽出モードに設定
  3. File Out DATを接続しCSV拡張子で保存先を指定
  4. Activeをトリガに同期書き出しを実行

Example 3: Group単位の属性抽出 🎯

Group POP → POP to DAT (Group: target_group) → Select DAT

Group POPで分類したサブセットの属性のみをPOP to DATで抽出し、Select DATで特定列だけ取り出して後段の処理に渡すフロー。大規模点群のうち特定属性を持つ点だけを分析したい場合に有効です。

  • Group POPでグループ名を割当
  • POP to DATのGroupパラメータに対象グループ名を入力
  • Group Columnsをonecolumnに設定してグループ列を出力
  • Select DATで必要な列のみ抽出

関連オペレータ 🔗

類似機能OP 🔍

  • POP to CHOP — POP属性をCHOPチャンネルに変換(信号処理向け)
  • POP to TOP — POP属性をテクスチャに変換(GPUシェーダ連携向け)
  • SOP to DAT — SOPジオメトリを表データに変換(CPU側ジオメトリ用)
  • CHOP to DAT — CHOPチャンネルを表データに変換

組み合わせ推奨OP 🔄

  • DAT to POP — 表データからPOPジオメトリへ逆変換するペア
  • Table DAT — 出力をテンプレ表と結合・編集
  • Select DAT — 特定の行・列だけ抽出
  • Convert DAT — テーブル形式とテキスト形式を相互変換
  • Evaluate DAT — セルごとに式評価を適用
  • Info CHOP — 行数・列数・クック情報を取得

前処理・後処理DAT 🎯


Info情報 📊

POP to DATはInfo CHOPによる詳細情報取得に対応しています。

DAT 固有情報 📋

  • num_rows: DAT の行数
  • num_cols: DAT の列数
  • type: DAT の型 (table / text)
  • is_table: テーブル形式の場合 1、テキスト形式の場合 0

汎用オペレータ情報 🔄

  • total_cooks: プロセス開始からのクック回数
  • cook_time: 最後のクック時間 (ミリ秒)
  • cook_frame: 最後にクックされたフレーム番号
  • warnings: 警告数
  • errors: エラー数

DAT共通情報 📋

  • num_rows: このDATの行数
  • num_cols: このDATの列数

オペレータ共通情報 ⚙️

  • total_cooks: プロセス開始からのクック回数
  • cook_time: 最後のクック所要時間(ミリ秒)
  • cook_frame: 最後にクックされた相対フレーム番号
  • cooked_this_frame: このフレームでクックされたかのフラグ(0 or 1)
  • warnings: このオペレータの警告数
  • errors: このオペレータのエラー数

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

よくある問題と解決策 🔧

❌ Problem: テーブルが最新の状態に更新されない
✅ Solution:

  • Activeが有効になっているか確認
  • POPパラメータが対象POPを正しく参照しているか確認
  • 上流POPがクックされているかInfo CHOPで確認

❌ Problem: DAT表示が1フレーム遅れる
✅ Solution:

  • Download TypeImmediate (Slow)に変更
  • ただし数ミリ秒の現フレーム遅延が発生するため、フレームレート優先ならNext frame (Fast)を維持
  • 用途に応じて精度と速度のトレードオフを検討

❌ Problem: データ量が多すぎて表示が重い
✅ Solution:

  • Thin Out Rangeを有効化しThin Range Lengthで範囲制限
  • Thin StepでN個ごとに間引き
  • Groupパラメータで対象を特定グループに限定

❌ Problem: 特定の属性だけ取り出したい
✅ Solution:

  • Attributesパラメータに属性名をスペース区切りで指定
  • 後段にSelect DATを接続して列フィルタ
  • Transposeを有効化して属性名を縦軸に整形

参考資料 📚

その他 🔗

公式リソース 📖

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