» О спредах и слайсах
This site relies heavily on Javascript. You should enable it if you want the full experience. Learn more.

О спредах и слайсах

English | Mandarin | Italian | French

The original english version of this page is newer and may contain information this translation does not have! Click here to view the english version.

Спреды и слайсы

vvvv может одновременно обрабатывать большое количество объектов, будь то графические объекты или данные, без особых усилий со стороны пользователя. Строго говоря, нет никакой разницы, работать с одним значением или с сотнями значений, так же как нет разницы рисовать один объект или кучу объектов. Это называется спрединг. В каком-то смысле, это аналог концепции векторов, массивов или списков в других языках программирования, но без типичных сложностей, связанных с этими конструкциями.

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

Каждое отдельное значение в спреде называется слайс. Спреды всегда организованы последовательно - просто перечень отдельных значений. Количество слайсов в спреде отображается в пинах SliceCount. Все данные могут считаться спредами – обычные значения это просто особый случай спреда с одним слайсом.

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

Взаимодействие спредов с разным количеством слайсов

Можно без проблем соединять спреды с разным количеством слайсов:

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

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

В спреде слева больше слайсов, чем в спреде справа. Для простых вычислительных операций (например +), размер выходного спреда равен размеру максимального спреда из входящих.

Чтобы быть точным, правило звучит не совсем так, дело не только в максимальном количестве слайсов, но и в приоритетной обработке пустых спредов Пустые спреды. Полное правило звучит так: “Если не один из входящих спредов не является пустым, то к выходу применяется максимальный размер спреда из всех входящих; если в одном из входов есть пустой спред, то выход так же будет пустым”.
Заметим, что это условная стратегия: другие языки, такие как APL или J, ограничивают или запрещают подобные случаи, но мы чувствовали, что это важный момент для дальнейших разработок, поэтому оставили решения для этих случаев. Мы обсуждали и другие возможные стратегии, например, применять общее кратное или минимальное количество слайсов, но остановились на описанном выше методе, как наиболее продуктивном и позволяющем использовать сочетания спредов из одного слайса с большими спредами, просто и без дополнительных исключений.

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

Это же правило применяется и к нодам рендеров:

Поскольку наибольший из входящих спредов состоит из восьми слайсов, здесь нарисовано восемь объектов. В пине Type только три слайса, поэтому три разных фигуры повторяются восемь раз. Цвет задан только один, поэтому все объекты одного цвета. Очень полезно работать в таком ключе, потому что можно простыми патчами создавать очень сложные конструкции и модели. Это можно считать хорошим занятием.

Спреды в Инспекторе

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

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

Если пин не подключен, все слайсы будут светло-серыми и вы можете их редактировать так же, как обычно. В строке slices of PinName, над списком слайсов, вы можете установить нужное количество слайсов.

anonymous user login

Shoutbox

~1d ago

joreg: Follow TobyK on his Advent of Code: https://www.twitch.tv/tobyklight

~5d ago

joreg: vvvvTv S02E02 is out: Saving & Loading UI State: https://www.youtube.com/live/GJQGVxA1pIQ

~5d ago

joreg: We now have a presence on LinkedIn: https://www.linkedin.com/company/vvvv-group

~12d ago

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

~18d ago

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

~18d ago

~19d ago

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

~1mth ago

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

~2mth ago

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

~2mth ago

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