» Создание циклов
This site relies heavily on Javascript. You should enable it if you want the full experience. Learn more.

Создание циклов

English | 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 обсчитывает все ноды в патче только один раз в конкретный момент времени

Это позволяет значительно упростить логику построения и отладку патчей, поскольку все события в патче происходят одновременно. Здесь нет заданного порядка выполнения (в отличие от таких графических языков, как Max или PD). Все расчеты выполняются автоматически в нужной последовательности, так что вам не нужно думать об этом. Кроме того, обычно ноды не задерживают передачу данных (как в цифровой электронике). Вам не надо беспокоиться, что данные придут не вовремя.

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

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

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

Но как тогда делать циклы?

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

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

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

При создании циклов с использованием нода FrameDelay (Animation) крайне важно избегать пустых спредов Empty Spreads...
Если при возникновении проблем при сохранении или открытии патчей, вы обнаружите, что один или несколько модулей, задействованных в цикле, выдают пустое значение, следует поместить модуль ReplaceEmpty после FrameDelay (Animation).

anonymous user login

Shoutbox

~2d ago

joreg: @soundreactor that sounds odd. do offline links still not work for you? we're not aware of any interruptions there...

~2d ago

guest: it's because the network-infrastructure in germany is based on huawei hardware.

~2d ago

soundreactor: @joreg first file core zip 5mb/s second file addonpack 50kb/s also the offline installer links on the beta page don't work atm

~3d ago

guest: alas yeah, it's super slow dl-ing from the installer, here in CA

~3d ago

joreg: @soundreactor: we're not aware of any.

~3d ago

soundreactor: is there speed throttling for downloads? i only get 46kb/s TX,USA

~3d ago

bauhausorbits: Hey in case you are thinking about joining tomorrow’s c# in gamma workshop, you may pm me to take over my place :)

~4d ago

ravazquez: Just your regular hungarian folk dance shellsort: https://youtu.be/CmPA7zE8mx0