К содержанию
fohbook/ TouchDesigner
уверенный

DAT: таблицы и текст

Данные и код в одном семействе: таблицы, CSV, JSON, скрипты и колбэки.

DAT хранит текст. Либо как таблицу с ячейками, либо как сплошную строку. В этом же семействе живут скрипты, колбэки и обмен с внешним миром.

Основные операторы

Оператор Что делает
Table Таблица, которую правят руками или скриптом
Text Произвольный текст; здесь же пишут Python
File In Читает файл с диска: CSV, JSON, txt
Folder Список файлов в папке — основа плейлистов
Evaluate Выражение по каждой ячейке входной таблицы
Select Выбор строк и столбцов по имени или шаблону
Merge Склейка таблиц
Sort / Reorder Сортировка и перестановка
JSON Разбор JSON в таблицу
Web Client HTTP-запрос наружу — Веб
Web Server Приём HTTP и WebSocket
OSC In / Out Сообщения OSC как текст
Execute / Parameter Execute / CHOP Execute Колбэки на события — Скрипты

Таблица как конфигурация

Главный приём: всё, что описывается списком, держите в таблице, а не в параметрах. Патч приборов, раскладка экранов, список сцен, соответствие кнопок и действий.

name      universe  address  channels
wash_1    1         1        8
wash_2    1         9        8
beam_sl   2         1        22

Такую таблицу редактируют в Excel, кладут рядом с проектом и читают File In DAT. Проект перестаёт зависеть от того, кто помнит, что где записано — и это единственный способ пережить смену площадки. Как это работает в свете — Патч и маршрутизация.

Обращение к ячейкам

op('table1')[0, 'name']         # строка 0, столбец name
op('table1')[1, 2]              # строка 1, столбец 2
op('table1').numRows
op('table1').row('wash_1')      # строка по значению первой ячейки
op('table1').appendRow(['beam_sr', 2, 23, 22])

В выражении параметра — то же самое, без python-обвязки:

op('table1')[me.digits, 'address']

Text DAT и код

Text DAT — это файл. В нём пишут:

  • функции, которые вызывают из других мест (mod('module1').myFunc());
  • GLSL-шейдеры для GLSL TOP;
  • содержимое колбэков.

У Text DAT есть параметр File — код можно держать внешним .py-файлом. Тогда он нормально версионируется и правится в обычном редакторе — Файл проекта.

Folder DAT + Movie File In = плейлист

Folder DAT даёт таблицу файлов в папке. Выражение в Movie File In берёт из неё строку по индексу — и у вас плейлист, который меняется добавлением файла в папку, без правки проекта.

DAT считается на CPU

Таблица на десятки тысяч строк, которая пересчитывается каждый кадр, — верный способ уронить кадры. Читайте файл один раз и держите результат, а не пересобирайте таблицу постоянно.

рядом по смыслу