» Создание циклов
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

~1d ago

udo2013: BeatDetector(bass)not working.ErrorCode from red node:"PLUGINS \BassSound dll BassSound Data BeatDetectorNode" is missing.WhatToDo?

~4d ago

skyliner: the vcard page is assembled by personal settings + user page

~4d ago

lasal: thank you guys but this is to edit the user data, i don't find how to edit the vcard

~5d ago

CeeYaa: @lasal - haha nice - I think it's funny - you should keep it ;) to change - HOME-SETTINGS - PERSONAL SETTINGS

~5d ago

skyliner: @lasal: here?