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

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

Folder DAT のディレクトリ列挙機能を示す図

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

概要 📖 – フォルダ内のファイル / サブフォルダ一覧を行列テーブルとして列挙する

Folder DATは、指定したフォルダ配下のファイルおよびサブフォルダ一覧を行列テーブル形式で列挙する DATです。Root Folder パラメータで指定したパス配下を走査し、Folders / Names / Extensions でパターンによる絞り込みを行い、Columns Page の各列トグルで必要なメタ情報だけを列として持つテーブルを生成します。Refresh Pulse でディスクからの再走査を任意のタイミングで起動できます。

主な用途 🎯

  • 指定したルートフォルダ配下のファイル / サブフォルダ一覧を行列テーブルとして取得
  • 名前・ベース名・拡張子・サイズ・更新日時・絶対パス・相対パス等を列単位で出力
  • Folders / Names / Extensions パターンマッチングで対象ファイルを抽出
  • Image / Movie / Audio Extensions トグルで TouchDesigner が対応するメディア拡張子を一括包含
  • Include Subfolders + Maximum Depth でサブフォルダを再帰的に走査しアセットライブラリを自動列挙

データフロー 🔄

ファイルシステム上のディレクトリ

Root Folder で指定したパス配下を走査

Type / Folders / Names / Extensions 設定に応じてファイル・フォルダを抽出

Columns Page トグルで指定した列 (Name / Size / Path / Date Modified 等) を持つ行列テーブルとして出力

下流 DAT へチェイン (Select DAT / Script DAT / File In DAT 等)

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Folder Page 📋

基本設定 ⚙️

Active .active 🟢
– オフのときは見出し行のみを持つ単一行テーブルを出力
– 非アクティブ時の dormant 用途、または Replicator COMP へ DAT を送る場合に活用
– デフォルト: オン

Asynchronous Update .async
– オンにするとフォルダ走査をメインスレッドから分離して非同期に実行
– 大規模ディレクトリ走査時に TouchDesigner のフレーム落ちを防ぐ
– 副作用: ディスク変更後の次フレームでテーブルが更新されない場合がある

ルートフォルダ指定 📁

Root Folder .rootfolder 📂
– 内容をテーブルに列挙する対象ディレクトリのファイルシステム上のパス
– 絶対パスまたは .toe ファイル位置を基点とした相対パスを指定可能
– 未保存プロジェクトで相対パスを使うと予期せぬ位置を走査するため絶対パス推奨

リフレッシュ制御 🔄

Refresh .refresh ♻️
– オンの間、指定したフォルダをファイルシステム上で監視
– ファイル追加・削除・更新を検知して自動的にテーブル内容を更新
– 常時監視が不要な場面ではオフにし Refresh Pulse で明示的に再走査するのが軽量

Refresh Pulse .refreshpulse
– パルスでフォルダ内容を 1 回だけ再走査
– Python からは op('folder1').par.refreshpulse.pulse() で起動可能
– 外部プロセスがファイルを追加・削除した直後のディレクトリ再列挙に最も便利

Name Format .nameformat 🏷️

ファイル名を Columns Page の Name 列に出力する際の表記形式

項目 内部名 説明
Include Extension .extension 拡張子を含むファイル名で出力 (例: scene01.mp4)
No Extension .noextension 拡張子を除いたベース名のみで出力 (例: scene01)

Date Format .dateformat 📅

Columns Page の Date Created / Date Modified / Date Accessed 列で使用する日付表記

項目 内部名 説明
Standard .std 標準的な日付表記形式 (OS の locale に従う人間可読の文字列)
Epoch .epoch Epoch (UNIX 時間) を秒単位の数値で出力。差分計算や閾値比較に便利

Type .type 🗂️

テーブルに含める対象種別の選択

項目 内部名 説明
Files .files ファイルのみ列挙
Folders .folders フォルダのみ列挙
Files and Folders .filesandfolders ファイルとフォルダの両方を列挙

パターンマッチング (Folders / Names) 🔍

Folders .folders 📁
– フォルダパスに対するパターンマッチング文字列
– 区切り文字はスペースとカンマ。スペースを含む語は二重引用符で囲む
– 例: scene_* asset_* でこれらに一致するフォルダのみ通過

Names .names 📝
– ファイル / フォルダ名に対するパターンマッチング文字列
– 区切り文字はスペースとカンマ。スペースを含む語は二重引用符で囲む
– 空欄ですべての名前を含める

拡張子フィルタ 🎯

All Extensions .allextensions 🌐
– オンですべてのファイル拡張子を含める
– オフのときは下記 4 つのトグルおよび Extensions 文字列で対象を絞り込み

Image Extensions .imageextensions 🖼️
– オンで TouchDesigner が対応する画像拡張子をすべて包含
– 一括チェックでメディアブラウザ系の構築が高速化

Movie Extensions .movieextensions 🎬
– オンで TouchDesigner が対応する動画拡張子をすべて包含
Movie File In TOPFile パラメータに渡すアセットを列挙する用途に最適

Audio Extensions .audioextensions 🎵
– オンで TouchDesigner が対応するオーディオ拡張子をすべて包含
– サウンドファイル用アセットライブラリの自動列挙に使用

Extensions .extensions 🔡
– 任意の拡張子をパターンで指定する文字列 (ピリオドは含めない)
– 例: *txt.txt ファイルにマッチ (*.txt ではない)
– 複数指定はスペース区切り (例: *json *yaml)

サブフォルダ再帰走査 🪜

Include Subfolders .subfolders 🔁
– オンで Root Folder 配下のサブフォルダも再帰的に走査
– オフでは Root Folder 直下の 1 階層のみ列挙

Minimum Depth .mindepth 🔽
– 走査対象とするサブフォルダの最小階層数
0 で Root Folder 直下を含める、1 以上で浅い階層をスキップ
– 深い階層からのみ列挙したい場合に使用

Limit Depth .limitdepth 🚧
– オンで Maximum Depth を有効化し走査階層を制限
– オフではすべてのサブツリーを最深まで走査 (大規模ディレクトリで暴走の危険)

Maximum Depth .maxdepth 🔢
Limit Depth がオンのときの走査最大階層数
– 巨大ディレクトリ走査時のパフォーマンス制御に使用


Columns Page 📊

出力列トグル 🗒️

各トグルをオンにすると出力テーブルに対応する列が追加されます (12 列):

  • Name (namecol): フォルダまたはファイルの名前。ファイルの場合は拡張子を含む (例: myfile.txt)
  • Base Name (basenamecol): ファイル名から拡張子を除いた形 (例: myfile)。フォルダの場合は名前そのまま
  • Extension (extensioncol): ファイルの拡張子 (例: txt)。フォルダの場合は空
  • Type (typecol): OS から取得したファイル種別の文字列
  • Size (sizecol): ファイルサイズ (バイト単位)。フォルダはサイズを報告しない
  • Depth (depthcol): Root Folder からの相対階層数。Root Folder 直下のアイテムは 0
  • Folder (foldercol): アイテムが格納されているフォルダのパス (ファイルの場合は所属フォルダのパス)
  • Path (pathcol): フォルダまたはファイルの絶対フルパス
  • Relative Path (relpathcol): Root Folder からの相対パス
  • Date Created (datecreatedcol): 作成日時 (Date Format パラメータの設定に従う)
  • Date Modified (datemodifiedcol): 最終更新日時 (Date Format パラメータの設定に従う)
  • Date Accessed (dateaccessedcol): 最終アクセス日時 (Date Format パラメータの設定に従う)

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: アセット自動列挙でMovie File Inへ供給 🎬

メディアフォルダ → Folder DAT (Movie Extensions=On, Path 列=On) → Select DAT → Script DAT → Movie File In TOP

プロジェクト配下のメディアフォルダを Folder DAT で走査し、Movie Extensions トグルで動画ファイルだけに絞り込み、Columns Page の Path 列でフルパス文字列を取得して下流の Movie File In TOP の File パラメータへ動的に渡すアセット管理フロー。新しい動画ファイルをフォルダに追加して Refresh Pulse を発火するだけで TouchDesigner 側のメディアライブラリが即座に更新される。

  1. Folder DAT を配置し Root Folder にメディアディレクトリの絶対パスを設定
  2. TypeFiles に、Movie Extensions をオンに設定
  3. Columns Page で Name / Path / Date Modified 列をオン
  4. 下流の Select DAT で必要な行を抽出し、Script DAT で Movie File In TOP の File に書き込み
  5. 新規ファイル追加時は op('folder1').par.refreshpulse.pulse() を呼び出して即時反映

Example 2: 再帰走査によるシーンフォルダ一覧の構築 🌳

プロジェクトルート → Folder DAT (Include Subfolders=On, Folders=scene_*) → Table DAT → UI リスト表示

プロジェクトルート配下のサブフォルダを Folder DAT の再帰モードで走査し、Folders パターンに scene_* を設定してシーン用フォルダだけを列挙してシーン選択 UI のデータソースに使う構成。Columns Page の Depth 列でツリー階層を可視化し、Limit Depth + Maximum Depth で走査範囲をプロジェクト規模に応じて調整する。

  1. Folder DAT の Root Folder にプロジェクトルートを設定
  2. TypeFolders に、Folders パターンに scene_* を設定
  3. Include Subfolders をオン、Limit Depth をオン、Maximum Depth3 に設定
  4. Columns Page で Name / Relative Path / Depth 列をオン
  5. 下流の Table DAT に渡し UI Components の Listbox にバインド

Example 3: 外部ツールが書き出すファイル群のホットリロード監視 ♻️

外部レンダラ出力フォルダ → Folder DAT (Refresh=On, Async=On) → DAT Execute DAT → Texture Reload

外部ツール (Blender / Houdini / 撮影機材等) が定期的に書き出すフォルダを Folder DAT の Refresh オンで継続監視し、Asynchronous Update でフレーム落ちを避けつつ、DAT Execute DAT で新規ファイル検出時にテクスチャ更新等のアクションを起動するホットリロード構成。

  1. Folder DAT の Root Folder に外部ツールの出力先パスを設定
  2. Refresh をオン、Asynchronous Update をオンに設定
  3. DAT Execute DAT を配置し onTableChange コールバックで新規ファイルを検出
  4. 検出時に Movie File In TOP / Texture 3D TOP の File を新しいパスに更新

関連オペレータ 🔗

類似機能OP 🔍

  • File In DAT — 単一ファイルの内容を読み込む (Folder DAT は一覧、File In DAT は中身)

組み合わせ推奨OP 🔄

  • File In DAT — Folder DAT で列挙したパスを File に渡して各ファイルの中身を読み込み
  • Select DAT — Folder DAT の出力テーブルから条件に合う行のみ抽出
  • Script DAT — Folder DAT の各行を Python で処理し下流 OP のパラメータに反映
  • DAT Execute DAT — Folder DAT 内容の変化 (ファイル追加・削除) をコールバックで検知
  • Replicator COMP — Folder DAT の各行に対応するコンポーネントインスタンスを生成
  • Movie File In TOP — Folder DAT の Path 列を File に渡して動画を順次ロード

前処理・後処理DAT 🎯


Info CHOP情報 📊

Folder 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: エラー数
  • cooked_this_frame: このフレームでクックしたら 1

DAT 共通情報 📊

  • num_rows: Folder DAT のテーブル行数 (列挙されたファイル / フォルダ数 + 見出し行)
  • num_cols: Folder DAT のテーブル列数 (Columns Page でオンにした列の数)

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

よくある問題と解決策 🔧

❌ Problem: ファイル一覧が出ない / テーブルが空
✅ Solution:

  • Active がオンになっているか確認 (オフの場合は見出し行のみ出力)
  • Root Folder のパスが正しいか確認 (相対パスは .toe 保存後に解決される)
  • Type 設定が Files / Folders / Files and Folders の意図通りか確認
  • All Extensions がオフのときは Image / Movie / Audio / Extensions のいずれかが対象拡張子を含むか確認

❌ Problem: パターンマッチが期待通りに効かない
✅ Solution:

  • Folders / Names / Extensions の区切り文字はスペースまたはカンマ (タブ・改行は不可)
  • スペースを含む語は二重引用符で囲む (例: "my project")
  • Extensions は拡張子にピリオドを含めない (*.txt ではなく *txt)
  • 公式の Pattern Matching ドキュメントで構文を再確認

❌ Problem: 再帰走査が深すぎてパフォーマンスが低下する
✅ Solution:

  • Limit Depth をオンにし Maximum Depth を実用範囲 (例: 3) に設定
  • Asynchronous Update をオンにしてメインスレッドのフレーム落ちを回避
  • Refresh を常時オンにせず Refresh Pulse による明示再走査に切り替え
  • Folders パターンで走査対象サブフォルダを早期に絞り込む

❌ Problem: ファイルを追加・削除したのにテーブルが更新されない
✅ Solution:

  • Refresh がオンになっているか確認、またはスクリプトから op('folder1').par.refreshpulse.pulse() を呼ぶ
  • Asynchronous Update オン時は次フレーム以降のテーブル更新を待つ必要がある
  • 外部ツールがファイルをロック中の場合 OS が変更通知を発行しないことがある
  • ネットワークドライブ / クラウドストレージは変更検知が遅延・欠落する場合があるため Refresh Pulse 併用が確実

参考資料 📚

その他 🔗

公式リソース 📖

関連記事 🔗

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