
概要 📖 – グラフ軸ラベル用の数値系列を自動生成
Indices DATは、Start と End の範囲をきれいに丸めた間隔で分割し、グラフ軸ラベルに適した数値系列をテーブルとして出力する DATです。Level パラメータ (Coarse / Medium / Fine) で系列の粒度を切り替えられ、Origin で起点となる最初の値を指定できます。生成された数値は DAT to CHOP 等で下流に渡してグラフ描画やスケール表示に利用できます。
主な用途 🎯
- グラフ・チャートの軸ラベル生成として、横軸・縦軸に並べる切りの良い数値系列をテーブルで取得
- 可視化 UI の目盛 (tick) 値計算として、Start / End / Level から「人間が読みやすい丸めた値」を自動算出
- データレンジに応じたスケール表記の自動更新として、入力データの最小・最大に追従して目盛ラベルを動的生成
- 計測ダッシュボードでの軸目盛供給として、CHOP / TOP / Container COMP の UI に渡す数値列の元データとして利用
- サンプル点・離散値系列の用意として、Level (Coarse / Medium / Fine) で粒度を切り替えながら系列を生成
データフロー 🔄
入力: Start / End / Level / Origin の各パラメータ
↓
Indices DAT が範囲を丸めた間隔で分割
↓
出力: 単一カラムに数値系列が並んだ DAT テーブル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Indices Page 📋
Start .start 🔢
数値系列の開始 (下端) 値:
- Start 値:
start生成する数値範囲の開始値。範囲の下端を定義します
End .end 🔢
数値系列の終了 (上端) 値:
- End 値:
end生成する数値範囲の終了値。範囲の上端を定義します
Level .level 📏
範囲をどの粒度で分割するかを決めるメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Coarse | .coarse |
粗い粒度 (内部値 0) で範囲を分割。少ない目盛で大まかな系列を生成 |
| Medium | .medium |
中程度の粒度 (内部値 1) で範囲を分割。バランスの取れた標準的な目盛 |
| Fine | .fine |
細かい粒度 (内部値 2) で範囲を分割。多くの目盛を持つ細密な系列を生成 |
Origin .origin 🎯
系列の起点となる最初の値:
- Origin 値:
origin系列の最初の数値 (起点)。Start と組み合わせて生成される系列のオフセットを制御
Common Page 🔧
Language .language 📝
DAT が動作するスクリプト言語の決定方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| Input | .input |
入力 DAT のスクリプト言語を使用 |
| Node | .node |
この DAT 自身のスクリプト言語を使用 |
Edit/View Extension .extension 📄
外部エディタに公開するファイル拡張子の選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| dat | .dat |
汎用的なファイル拡張子 dat を使用 |
| From Language | .language |
DAT のスクリプト言語に応じた拡張子を自動選択 |
| Custom Extension | .custom |
Custom Extension で指定したカスタム拡張子を使用 |
Custom Extension .customext 🔤
Edit/View Extension が Custom Extension のときに適用される拡張子:
- Custom Extension 文字列:
Edit/View Extensionがcustomのときに使用される任意のファイル拡張子
Word Wrap .wordwrap 🔁
ノード表示でのワードラップ (折り返し) の有効化
| 項目 | 内部名 | 説明 |
|---|---|---|
| Input | .input |
入力 DAT の Word Wrap 設定を継承 |
| On | .on |
Word Wrap を有効化 (ノード上の長い行を折り返し表示) |
| Off | .off |
Word Wrap を無効化 (折り返さずそのまま表示) |
実践アイデア 💡
Example 1: ライブ計測ダッシュボードの横軸ラベル生成 📊
Min/Max CHOP → Indices DAT (Start/End 参照) → DAT to CHOP → Text TOP (軸ラベル描画)
Audio Spectrum CHOP やセンサー CHOP の min/max 値を Indices DAT の Start / End にバインドし、データレンジに追従して人間が読みやすい目盛ラベルを自動生成、Text TOP でグラフ画像の横軸に重ねて表示する基本フロー。
- 計測したい CHOP の min/max を Analyze CHOP で抽出
- Indices DAT の Start / End パラメータに Analyze 結果を参照式で接続
- Level を Medium に設定して標準的な粒度の目盛系列を生成
- DAT to CHOP で系列を CHOP 化し、Text TOP のフォーマット文字列に流し込む
- 計測値が変化しても目盛が自動的に丸まった値で更新される
Example 2: プロット粒度を動的に切替 🔄
Slider COMP → Indices DAT (Level 切替) → DAT to CHOP → Geometry COMP (Grid 描画)
Slider COMP の値で Indices DAT の Level パラメータを Coarse / Medium / Fine の 3 段階で切り替え、生成される系列の粒度に合わせてグリッド線の本数をリアルタイムで変更するインタラクティブ可視化。
- Container COMP に Slider COMP を 1 つ配置
- Slider の値 (0/1/2) を Indices DAT の Level に Export
- Indices DAT の出力テーブルを DAT to CHOP で取得
- Geometry COMP の Grid 描画に系列を渡し、本数を動的に変動させる
Example 3: 時系列プロットの時刻軸生成 🕒
Timer CHOP → Indices DAT (時間範囲) → Text TOP (時刻ラベル) → Composite TOP
Timer CHOP で計測した経過時間レンジを Indices DAT に渡し、グラフの時刻軸に並べる丸めた時刻ラベル (例: 0s / 5s / 10s / 15s …) を自動生成して、ライブプロット画面の下部に時刻軸として合成表示する例。
- Timer CHOP の length と elapsed を Start / End に接続
- Level を Coarse にして主要な時刻ポイントのみ表示
- Origin を 0 にして系列を時刻 0 から開始
- 出力ラベルを Text TOP で文字列化し Composite TOP でプロット画像と重畳
関連オペレータ 🔗
類似機能OP 🔍
- Constant CHOP — 固定値の系列を生成する CHOP 版 (DAT ではなく CHOP 経路)
- Pattern CHOP — 連続値・パターン値の系列を生成する CHOP
組み合わせ推奨OP 🔄
- DAT to CHOP — Indices DAT の数値系列を CHOP チャンネル化して下流に流す
- Text TOP — 生成された目盛値を軸ラベルとしてレンダリング
- Evaluate DAT — 出力テーブルの各セル値を式で加工 (単位付与・フォーマット等)
- Convert DAT — 数値テーブルを CSV / TSV / JSON など別形式に変換
- Analyze CHOP — 入力データの min/max を抽出して Indices DAT の Start / End に渡す
前処理・後処理DAT 🎯
Info CHOP情報 📊
Indices DAT は Info CHOP による詳細情報取得に対応しています。num_rows で生成された系列の要素数、num_cols でカラム数、total_cooks / cook_time で実行統計を参照できます。
DAT 固有情報 📋
num_rows: DAT の行数num_cols: DAT の列数type: DAT の型 (table / text)is_table: テーブル形式の場合 1、テキスト形式の場合 0
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 意図した数値系列が出力されない
✅ Solution:
StartとEndの大小関係を確認 (End が Start より大きい必要あり)Levelパラメータの設定 (Coarse / Medium / Fine) を切り替えて粒度を変えてみるOriginが範囲外に設定されていないか確認
❌ Problem: 目盛の数が多すぎる / 少なすぎる
✅ Solution:
Levelを Coarse にすると目盛数が減り、Fine にすると増える- Start / End の範囲を狭めることで自動的に目盛数が変化
- 下流で Select DAT や Evaluate DAT で必要な行だけ抽出
❌ Problem: 出力された数値が想定の小数点表記でない
✅ Solution:
- Indices DAT は丸めた値を返すため、表示用には Evaluate DAT で
format()を適用 - 整数のみ欲しい場合は Evaluate DAT で
int()でキャスト - 単位付き表記が必要なら Substitute DAT で suffix を付与
❌ Problem: 下流の CHOP に系列が反映されない
✅ Solution:
- DAT to CHOP の Convert パラメータが「Column to Channel」になっているか確認
- Indices DAT が cook されているか右クリック → Recook で更新
- Start / End の参照元 CHOP が値を持っているかドット表示で確認
参考資料 📚
その他 🔗
- TouchDesigner Wiki — DAT 概要
- TouchDesigner Wiki — Category:DATs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Indices DAT
- TouchDesigner公式ドキュメント – IndicesDAT Class
- DAT to CHOP (系列を CHOP 化)
- Evaluate DAT (セル値の式による加工)

