К содержанию
fohbookбета/ TouchDesigner

Параметры

Четыре режима — константа, выражение, экспорт, привязка. Как переключать, когда что брать, Value Ladder и что стоит узлу его разрешение.

Ветка вашего пульта:
Быстрый выбор:

Параметры текущего узла показываются в панели параметров, шапка которой окрашена в цвет семейства. Они разложены по страницам: у TOP это страницы самого оператора и Common с разрешением и форматом.

Режимы

Кликните по имени параметра — под ним раскроется строка с именем для Python и четырьмя квадратами режимов.

Режим Что значит Квадрат
Constant Обычное число, строка, пункт меню Серый
Expression Python-выражение Синий
Export Значение приходит из канала CHOP или из DAT Зелёный
Bind Двусторонняя связь с другим параметром Фиолетовый

Константа и выражение хранятся одновременно. Можно уйти в константу, попробовать число руками и вернуться — выражение на месте. Export выбирается, только если экспорт на параметр уже настроен, а переключение на Constant отключает его на время отладки. Если впечатать в числовое поле 200*3, параметр сам станет выражением и покажет 600.

Выражение или экспорт

По скорости они с 2017 года равны, выбирают по удобству. Выражение тянет значение: пишется в самом параметре, в нём можно считать (op('null1')[0] * 2 - 1) и выбирать источник по условию. Ссылка по имени сохранится при перестановке каналов в CHOP, но не при переименовании.

Экспорт толкает значение из CHOP: канал перетаскивают из вьюера на параметр и выбирают Export CHOP. Каналы, названные путь:параметр, распределяются по сотне параметров без ручной настройки, а флаг Export на CHOP выключает всё разом. Подробно — Ссылки, выражения и экспорт.

op('lfo1')['chan1']          # значение канала CHOP
op('table1')[1, 'value']     # ячейка DAT
me.time.frame                # текущий кадр компонента
absTime.seconds              # время с запуска, в секундах
parent().par.Speed           # параметр родительского компонента
op('moviefilein1').width     # свойство другого узла

me — узел, в котором написано выражение, parent() — компонент вокруг него.

Пересчитывается выражение, когда меняется то, от чего оно зависит: канал, ячейка, параметр. Время (absTime, me.time) меняется каждый кадр, поэтому выражение со временем считается каждый кадр. Простые выражения TouchDesigner вычисляет своим быстрым движком в обход Python — подсказка при наведении на имя параметра пишет (Optimized) или (Unoptimized). Длинное выражение правят во внешнем редакторе: Ctrl+E в поле или RMB → Edit Expression.

Сотни выражений со временем

Каждое из них считается каждый кадр, и процессор это чувствует. Перебор сети или разбор строки внутри выражения выносите в CHOP или DAT и ссылайтесь на готовый результат.

Мышью

Зажатая средняя кнопка на имени или значении вызывает Value Ladder — лесенку шагов .001 .01 .1 1 10: увели курсор на шаг и двигаете влево-вправо. На имени параметра с несколькими значениями меняются все, на одном значении — только оно. С зажатым Alt наведение на имя показывает справку по параметру. RMB по имени даёт Reset Parameter, RMB по узлу — Reset all Parameters. Выделите несколько однотипных узлов, и правка параметра достанется всем.

Что стоит узлу его Common

Output Resolution по умолчанию Use Input — размер наследуется от входа, а генератор без входа берёт его из Resolution. Pixel Format тоже Use Input, и у генератора без входа это 8 бит на канал. 16 и 32 бита нужны фидбэку, HDR и точным расчётам, но памяти занимают вдвое и вчетверо больше — Разрешение и формат.

Собственные параметры компоненту добавляет RMB → Customize Component: снаружи три понятные ручки, внутри сорок — Свои компоненты и параметры.

Нашли в статье ошибку, устаревшее или непонятное место?

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