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

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

Null DAT の中継・参照アンカー機能を示す図

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

概要 📖 – データの中継・参照点

Null DATは、入力された DAT データ (テーブル / テキスト) をそのまま出力し、ネットワークの中継点・参照アンカーとして使用する DATです。値変換は一切行わず、複数の下流が参照する共通アンカー、上流ノード差し替え時の参照名安定化、マスタ出力ノードの設置などに利用します。Null CHOP / Null TOP / Null SOP と同じ「パススルー中継」族の DAT 版です。

主な用途 🎯

  • ネットワークの中継ノードとして、複数の下流が参照する共通のアンカー点を配置
  • 上流 DAT の差し替えを行っても下流の参照 (op('null1') 等) が壊れないよう参照名を安定化
  • テーブル / テキストの確認ポイントとして、デバッグ時のビューア表示専用ノードを設置
  • マスタ出力ノードとして COMP 内の最終出力 DAT を集約し、外部参照の入口を一本化
  • ネットワーク改修時のアンカーとして、上流のリファクタリングと下流の参照を分離

データフロー 🔄

入力: 上流 DAT (Table / Text / File In / Convert 等)

パススルー (テーブル行列 / テキスト内容を変換せず転送)

出力: 入力と同一のテーブル / テキスト

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Null Page 📋

Null DAT 固有設定 ℹ️

Null DAT は入力をそのままパススルーするため、Null Page には固有パラメータが存在しません:

  • 固有パラメータなし: Null DAT は入力された DAT データをそのまま出力するパススルーオペレータのため、Null Page には固有のパラメータが存在しません。全ての設定は下記 Common Page で行います

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 ExtensionCustom Extension のときに適用される拡張子:

  • Custom Extension 文字列: Edit/View Extensioncustom のときに使用される任意のファイル拡張子

Word Wrap .wordwrap 🔁

ノード表示でのワードラップ (折り返し) の有効化

項目 内部名 説明
Input .input 入力 DAT の Word Wrap 設定を継承
On .on Word Wrap を有効化 (ノード上の長い行を折り返し表示)
Off .off Word Wrap を無効化 (折り返さずそのまま表示)

実践アイデア 💡

Example 1: 参照を安定化する中継 🔗

上流の Table DAT → Null DAT → 複数の下流参照 (Evaluate / Select / Python op())

頻繁に差し替えが発生する上流テーブルを Null DAT で受け、下流の参照は全て Null DAT を指すように構成。上流ノードを別の Table DAT や File In DAT に差し替えても下流の参照は壊れず、ネットワーク改修時の繋ぎ直し作業を大幅に削減できます。

  1. 上流の Table DAT (または File In DAT / Convert DAT) を Null DAT に接続
  2. 下流の参照 (op('null1') / Select DAT の DAT パラメータ / Evaluate DAT の入力等) を全て Null DAT に向ける
  3. 上流ノードを差し替える際は Null DAT への接続のみ繋ぎ直す、下流参照は触らない
  4. ネットワーク改修時の繋ぎ直し範囲が Null DAT 1 個に局所化される

Example 2: 出力ノードに集約 🎯

COMP 内部の複数 DAT 処理 → Null DAT (マスタ出力) → Out DAT → COMP 外部

Base COMP の内部で複数の DAT 処理 (Convert / Evaluate / Merge 等) を行った結果を、最終的に 1 個の Null DAT に集約してマスタ出力とする設計。外部からは Null DAT を参照するだけで COMP の最終結果が取得でき、内部実装の変更が外部参照に影響しません。

  1. Base COMP 内に複数の DAT 処理チェイン (Table / Convert / Evaluate / Merge 等) を構築
  2. 全ての処理結果を最終段の Null DAT に集約 (null_master 等の固有名でリネーム)
  3. Null DAT の出力を Out DAT に渡し、COMP 外部からアクセス可能にする
  4. COMP 内部のリファクタリングを行っても、Null DAT 名と Out DAT 配置を維持すれば外部参照は安定

Example 3: 確認用の中継点を設置 🔍

上流 DAT 処理チェイン → Null DAT (Viewer Active) → 続く下流処理

複雑な DAT 処理パイプラインの途中段階を確認するため、Null DAT を挟んでビューアを有効化。Null DAT 自身は処理を行わないため、デバッグ用に挿入してもパイプラインの挙動を変えずに中間状態をモニタリングできます。

  1. 確認したい中間ステージに Null DAT を挿入 (上流処理 → Null DAT → 下流処理)
  2. Null DAT のビューアを有効化 (Viewer Active フラグオン) してテーブル / テキスト内容を可視化
  3. ビューアでテーブル行列やテキスト内容を確認、想定通りのデータが流れているかを検証
  4. デバッグ完了後は Null DAT を残したままにしてもパイプラインへの影響はゼロのため、本番運用でも常設可能

関連オペレータ 🔗

類似機能OP 🔍

  • Out DAT — COMP の出力ポートを担う出力アンカー、Null は COMP 内部の中継アンカー
  • Select DAT — 別 OP の DAT 出力を遠隔参照するパススルー、Null は直接接続の中継に特化
  • Switch DAT — 複数入力の切替パススルー、Null は単一入力の中継のみ

組み合わせ推奨OP 🔄

  • Table DAT — Table DAT の出力を Null DAT で受け、下流参照のアンカーとして使用
  • Text DAT — Text DAT (スクリプト / 設定テキスト) の中継ノードとして、複数下流の共通参照点に
  • Convert DAT — Convert で変換後のテーブルを Null で受け、変換結果の安定参照点とする
  • Evaluate DAT — Evaluate の式評価後テーブルを Null で受けて下流に配信
  • Merge DAT — 複数 DAT を Merge で結合した結果を Null に集約し、マスタテーブルの参照点にする
  • Out DAT — COMP 内部の Null DAT (マスタ出力) を Out DAT に渡して COMP 外部へ公開

前処理・後処理DAT 🎯


Info DAT情報 📊

Null DAT は Info DAT による詳細情報取得に対応しています (num_rows / num_cols / total_cooks / cook_time / cook_frame / warnings / errors 等の共通 DAT Info チャンネルを参照可能)。中継しているテーブルの行数 / 列数の検証や、上流データが更新されたタイミングの検出に利用できます。

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:

  • 下流参照は Null DAT のパス (例: op('null1')) を指しているか確認、上流 DAT を直接参照していると差し替え時に壊れる
  • Null DAT 自体の名前を変更すると下流参照は壊れるため、リネームする場合は下流の参照式も追従させる
  • 参照を安定化する目的では Null DAT の配置位置・名前を固定し、上流のみ差し替える運用にする

❌ Problem: Null DAT を挟んでもパフォーマンスが改善しない
✅ Solution:

  • Null DAT 自体には Cook Type 等の最適化パラメータがなく、CHOP の Null と異なり再クック制御は行わない (DAT はそもそも値変化検知が CHOP より緩いため)
  • 再クック頻度の制御が必要な場合は上流側に DAT Execute DAT + 条件式でゲートを設ける
  • 巨大テーブルの中継で重い場合は Select DAT で必要な行 / 列のみ抽出した結果を Null で受ける設計に変更

❌ Problem: Null DAT のビューアにデータが表示されない
✅ Solution:

  • Null DAT に上流 DAT が接続されているか確認 (左側入力に何も繋がっていなければ出力は空)
  • 上流 DAT 自体の出力が空でないか確認 (上流のビューアでテーブル / テキストが見えるか)
  • Viewer Active フラグがオンになっているか確認 (ノード右下のフラグ)
  • Info DAT を別途配置し、num_rows / num_cols で実際のデータ次元を検証

❌ Problem: Word Wrap や Language の設定が下流に反映されない
✅ Solution:

  • Null DAT の Common Page 設定 (Language / Word Wrap 等) は Null DAT 自身のノード表示・編集動作のみに影響、データ内容は変更しない
  • 下流の DAT (Text DAT / Evaluate DAT 等) は独自に Language / Word Wrap を持つため、必要なら下流側でも個別に設定
  • LanguageInput にすると上流の設定を継承するため、チェインで揃えたい場合は全段を Input 統一にする

参考資料 📚

その他 🔗

公式リソース 📖

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