» Субпатчи
This site relies heavily on Javascript. You should enable it if you want the full experience. Learn more.

Субпатчи

English | Mandarin | French | Italian

Вступление

Графическое программирование ведет к созданию больших, сложных и временами очень красивых схем, графиков и структур. Но как только вы начинаете создавать более менее комплексный проект, возникает необходимость в субпатчах. Рано или поздно.

Субпатч это патч, с множеством нодов и связей внутри, которым вы можете пользоваться как обычным встроенным нодом. Отличие от обычного патча заключается в том, что вы сами создаете входящие и выходящие пины, нужных вам типов данных и выстраиваете алгоритмы обработки этих данных. Субпатчи, как и обычные патчи, сохраняются в отдельные файлы на диске и могут быть использованы много раз, в разных проектах.

Создать субпатч очень просто. Честно говоря, любой патч может быть использован как субпатч. Чтобы лучше понять это, давайте вернемся назад и енемного поговорим об особенностях архитектуры vvvv:

Корневой патч

Когда вы выбираете в главном меню Show Root (ALT+R), вы увидите корневой патч vvvv. В этом патче содержатся ноды всех открытых окон (например, нод Инспектора). Обычно корневой патч остается скрытым, так как vvvv управляет его содержимым автоматически.

Каждый раз, когда вы открываете новый патч, в корневом патче создается соответсвующий нод. Так же, когда вы закрываете окно патча, соответствующий нод удаляется из корневого патча.

Окно корневого патча это обычное окно, без каких-либо специальных функций: если хотите, можете использовать его как любое другое окно для создания патчей.

Так же можно удалять ноды из корневого патча, но это закроет соответствующие открытые окна патчей.

Корневой патч автоматически загружается при запуске. Если вы сохраните корневой патч с нодами внутри, то при следующем запуске vvvv вы увидите эти же ноды. Вы можете установить любой патч как корневой, командой главного меню: Set as Root (ALT+T).

vvvv всегда нужен один корневой патч. Если вы закрываете корневой патч, vvvv спросит вас, хотите ли вы закрыть vvvv или создать пустой корневой патч.

Режимы окон (Window Modes)

Это очень важная особенность архитектуры vvvv, что ноды субпатчей в корневом патче и соответствующие окна это одни и те же патчи.

Принципиально нод может быть в четырех состояниях: Отдельным окном, Закрытым, в Боксе или развернутым на полный экран.

Большинство встроенных нодов vvvv, таких как LFO, +, Damper, Quad и т.д. всегда в закрытом состоянии - вы можете работать только с заданными параметрами и пинами и больше ни с чем.

Встроенные ноды рендеров, такие как Renderer (EX9 или Renderer (GDI) имеют привязанные окна. По умолчанию они открываются в отдельном окне, и вы можете переключаться между остальными режимами через команды меню или сочетания клавиш (см. Горячие клавиши.

Закрытый режим (Alt+3) Видимы только название и пины нода
В боксе (Alt+2) Содержание отдельного окна отображается в боксе внутри патча
В отдельном окне (Alt+1) Нод с отдельным окном
Полный экран (Alt+Enter) Окно развернуто на весь экран
Ключевая вещь в понимании идеи Субпатчей, заключается в том, что все патчи могут выглядеть и использоваться так же как обычные ноды.

По началу, вы чаще всего работаете с патчами в отдельных окнах и не используете их как ноды. С другой стороны, у вас всегда есть отличная возможность выбрать соответствующий нод в корневом патче и переключить его в любой из 4х режимов.

Скажем, в режиме бокса, вы можете поместить один патч в другой. Это очень удобно, например, когда вы создаете комплексный пользовательский интерфейс, так как вы можете спрятать всю функциональную часть, а перед глазами оставить только управляющие IOBoxes.

Субпатчи

Уже сказано достаточно, чтобы понять, что в субпатчах нет ничего особенного: это ноды, содержащие патчи, или патчи выглядящие как ноды.

Термин субпатч означает только особенную точку зрения, так же как с родительским патчем: просто другое направление взгляда:
например:

Patch1 содержит Patch2.
для Patch1: Patch2 это субпатч
для Patch2: Patch1 это родительский патч
Обратите внимание:
Будьте внимательны при работе с субпатчами - есть очень большая разница между закрытым режимом окна и закрытием окна. Если вы переводите окно в закрытый режим (ALT+3), нод продолжает работать и остается частью патча. Если вы закрываете окно (CTRL+W), нод удаляется из родительского патча. Если вы хотите закрыть окно субпатча, переведите его в закрытый режим (ALT+3); если вы хотите удалить субпатч, закройте его (CTRL+W).
  • Личное впечатление: хотя здесь все достаточно прозрачно, мне было проще усвоить идею субпатчей по аналогии с деревом хранения файлов и папок. Как и на диске в одной папке могут быть другие папки, в этих папках другие папки и т.д.

Параметры и значения

Правда одной детали пока не хватает: как мы передаем данные в- и из субпатчей?

Это делается с помощью IOBoxes -- обычно IOBoxes используются как элементы интерфейса для установки или просмотра значений. Очень простой прием превращает их в пины для патча: как только вы введете название или описание IOBox в пине Descriptive Name (это пин настройки, доступный только через Инспектора), IOBox начинает работать как пин. Если вы подключите что-нибудь снизу IOBox, он становится входящим пином, а если подключите что-нибудь сверху, он становится выходящим пином. Это практически все, что нужно знать.
Ах да, если вы кликните средней кнопкой мыши на подключенном IOBox, он автоматически примет название того пина, к которому подключен.

К IOBoxes с назначенным названием или описание прикреплена темно-серая плашка с названием IOBox.

В приведенном примере, в пины выведено 2 параметра: входящий пин называется get new (выбрать нового), а исходящий пин называется kitchenboy of the week(дежурный по кухне). Теперь этот патч можено ставить в другие патчи:

Порядок расстановки пинов в субпатче определяется физическим положением по горизонтали соответсвующих IOBoxes в патче. Если вы перемещает IOBoxes в патче, положение пинов так же изменится (но существующие связи сохранятся).

Глубина

Еще одна важная особенность vvvv заключается в том, что все патчи с одинаковым именем полностью одинаковы. Если вы открываете один патч несколько раз и меняете что-нибудь в одной копии, в тоже время меняются все открытые копии. Это применимо ко всем изменениям в патче (значения, связи, ноды). Это очень мощный инструмент для создания прототипов и модулей, так как вы можете вносить изменения в систему целиком, находясь на любом ее уровне, или в любой ее части.

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

Релятивные (относительные) пути

Имена файлов субпатчей могут быть привязаны релятивным или абсолютным путем. Если вы используете релятивный путь, расположение файлов всегда относится к расположению папки с корневым или родительским патчем. Прелесть в том, что вы можете переносить проекты с диска на диск не заботясь о структуре проекта и потере связей между файлами. С другой стороны, вы должны с самого начала хранить все файлы и папки проекта в одном месте, и при переносе проекта, следить чтобы все части были перенесены одновременно.

Есть одна важная оговорка: Если вы сохраняете патч в другую папку, вы должны убедиться, что vvvv подтвердила все релятивные пути для новой папки. Перепроверьте, что все файлы сохранили свою релятивность к новой папке. Поэтому появляется предупреждение, заставляющее вас совершить эти действия.

Гнездо

Конечно субпатч может содержать в себе другой субпатч (который содержит другие субпатчи...) ну и так далее....

anonymous user login

Shoutbox

~1d ago

joreg: vvvvTv S02E01 is out: Buttons & Sliders with Dear ImGui: https://www.youtube.com/live/PuuTilbqd9w

~8d ago

joreg: vvvvTv S02E00 is out: Sensors & Servos with Arduino: https://visualprogramming.net/blog/2024/vvvvtv-is-back-with-season-2/

~8d ago

fleg: hey there! What's the best tool for remote work? Teamviewer feels terrible. Thanks!

~22d ago

joreg: Last call: 6-session vvvv beginner course starting November 4: https://thenodeinstitute.org/courses/ws24-5-vvvv-beginners-part-i/

~1mth ago

joreg: Missed the last meetup? You can rewatch it here: https://www.youtube.com/live/MdvTa58uxB0?si=Fwi-9hHoCmo794Ag

~1mth ago

theurbankind: When is the next big event, like node festival ?

~1mth ago

~1mth ago

joreg: Join us for the next vvvv meetup on Oktober 17th: https://visualprogramming.net/blog/2024/25.-vvvv-worldwide-meetup/

~1mth ago

joreg: 6 session beginner course part 2 "Deep Dive" starts January 13th: https://thenodeinstitute.org/courses/ws24-5-vvvv-beginners-part-ii/