Параметры
Четыре режима — константа, выражение, экспорт, привязка. Как переключать, когда что брать, 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:
снаружи три понятные ручки, внутри сорок —
Свои компоненты и параметры.
Нашли в статье ошибку, устаревшее или непонятное место?