English | Mandarin | French | Italian
Графическое программирование ведет к созданию больших, сложных и временами очень красивых схем, графиков и структур. Но как только вы начинаете создавать более менее комплексный проект, возникает необходимость в субпатчах. Рано или поздно.
Субпатч это патч, с множеством нодов и связей внутри, которым вы можете пользоваться как обычным встроенным нодом. Отличие от обычного патча заключается в том, что вы сами создаете входящие и выходящие пины, нужных вам типов данных и выстраиваете алгоритмы обработки этих данных. Субпатчи, как и обычные патчи, сохраняются в отдельные файлы на диске и могут быть использованы много раз, в разных проектах.
Создать субпатч очень просто. Честно говоря, любой патч может быть использован как субпатч. Чтобы лучше понять это, давайте вернемся назад и енемного поговорим об особенностях архитектуры vvvv:
Когда вы выбираете в главном меню Show Root (ALT+R), вы увидите корневой патч vvvv. В этом патче содержатся ноды всех открытых окон (например, нод Инспектора). Обычно корневой патч остается скрытым, так как vvvv управляет его содержимым автоматически.
Каждый раз, когда вы открываете новый патч, в корневом патче создается соответсвующий нод. Так же, когда вы закрываете окно патча, соответствующий нод удаляется из корневого патча.
Окно корневого патча это обычное окно, без каких-либо специальных функций: если хотите, можете использовать его как любое другое окно для создания патчей.
Так же можно удалять ноды из корневого патча, но это закроет соответствующие открытые окна патчей.
vvvv всегда нужен один корневой патч. Если вы закрываете корневой патч, vvvv спросит вас, хотите ли вы закрыть vvvv или создать пустой корневой патч.
Это очень важная особенность архитектуры vvvv, что ноды субпатчей в корневом патче и соответствующие окна это одни и те же патчи.
Принципиально нод может быть в четырех состояниях: Отдельным окном, Закрытым, в Боксе или развернутым на полный экран.
Большинство встроенных нодов vvvv, таких как LFO, +, Damper, Quad и т.д. всегда в закрытом состоянии - вы можете работать только с заданными параметрами и пинами и больше ни с чем.
Встроенные ноды рендеров, такие как Renderer (EX9 или Renderer (GDI) имеют привязанные окна. По умолчанию они открываются в отдельном окне, и вы можете переключаться между остальными режимами через команды меню или сочетания клавиш (см. Горячие клавиши.
Закрытый режим (Alt+3) Видимы только название и пины нода | |
В боксе (Alt+2) Содержание отдельного окна отображается в боксе внутри патча | |
В отдельном окне (Alt+1) Нод с отдельным окном | |
Полный экран (Alt+Enter) Окно развернуто на весь экран |
По началу, вы чаще всего работаете с патчами в отдельных окнах и не используете их как ноды. С другой стороны, у вас всегда есть отличная возможность выбрать соответствующий нод в корневом патче и переключить его в любой из 4х режимов.
Скажем, в режиме бокса, вы можете поместить один патч в другой. Это очень удобно, например, когда вы создаете комплексный пользовательский интерфейс, так как вы можете спрятать всю функциональную часть, а перед глазами оставить только управляющие IOBoxes.
Уже сказано достаточно, чтобы понять, что в субпатчах нет ничего особенного: это ноды, содержащие патчи, или патчи выглядящие как ноды.
Термин субпатч означает только особенную точку зрения, так же как с родительским патчем: просто другое направление взгляда:
например:
Правда одной детали пока не хватает: как мы передаем данные в- и из субпатчей?
Это делается с помощью IOBoxes -- обычно IOBoxes используются как элементы интерфейса для установки или просмотра значений. Очень простой прием превращает их в пины для патча: как только вы введете название или описание IOBox в пине Descriptive Name (это пин настройки, доступный только через Инспектора), IOBox начинает работать как пин. Если вы подключите что-нибудь снизу IOBox, он становится входящим пином, а если подключите что-нибудь сверху, он становится выходящим пином. Это практически все, что нужно знать.
Ах да, если вы кликните средней кнопкой мыши на подключенном IOBox, он автоматически примет название того пина, к которому подключен.
К IOBoxes с назначенным названием или описание прикреплена темно-серая плашка с названием IOBox.
В приведенном примере, в пины выведено 2 параметра: входящий пин называется get new (выбрать нового), а исходящий пин называется kitchenboy of the week(дежурный по кухне). Теперь этот патч можено ставить в другие патчи:
Порядок расстановки пинов в субпатче определяется физическим положением по горизонтали соответсвующих IOBoxes в патче. Если вы перемещает IOBoxes в патче, положение пинов так же изменится (но существующие связи сохранятся).
Еще одна важная особенность vvvv заключается в том, что все патчи с одинаковым именем полностью одинаковы. Если вы открываете один патч несколько раз и меняете что-нибудь в одной копии, в тоже время меняются все открытые копии. Это применимо ко всем изменениям в патче (значения, связи, ноды). Это очень мощный инструмент для создания прототипов и модулей, так как вы можете вносить изменения в систему целиком, находясь на любом ее уровне, или в любой ее части.
При этом, значения для входящих пинов, так же как результаты обработки патчем, независимы для каждой копии субпатча. Каждая копия субпатча может обрабатывать разные данные.
Имена файлов субпатчей могут быть привязаны релятивным или абсолютным путем. Если вы используете релятивный путь, расположение файлов всегда относится к расположению папки с корневым или родительским патчем. Прелесть в том, что вы можете переносить проекты с диска на диск не заботясь о структуре проекта и потере связей между файлами. С другой стороны, вы должны с самого начала хранить все файлы и папки проекта в одном месте, и при переносе проекта, следить чтобы все части были перенесены одновременно.
Есть одна важная оговорка: Если вы сохраняете патч в другую папку, вы должны убедиться, что vvvv подтвердила все релятивные пути для новой папки. Перепроверьте, что все файлы сохранили свою релятивность к новой папке. Поэтому появляется предупреждение, заставляющее вас совершить эти действия.
Конечно субпатч может содержать в себе другой субпатч (который содержит другие субпатчи...) ну и так далее....
anonymous user login
~1d ago
~8d ago
~8d ago
~8d ago
~22d ago
~1mth ago
~1mth ago
~1mth ago
~1mth ago
~1mth ago