go to end

*

vvvv

http://avs.chat.ru/vvvv.htm#begin
http://avs.url.ph/vvvv.htm
http://r812.eu5.org/avs/vvvv.htm
http://tototal.narod.ru/avs/vvvv.htm

*

 Патч (patch) - программа.
 Ноды (nodes) - ящики-узлы, отдельные операции или функции. Нодлист (nodelist.xml).
 Пины (pins) вход (input) \ выход (outputs) - контакты, которые могут принимать входной сигнал \ отправлять обработанный выход на другие ноды.

[СКМ] .. Главное меню [SPACE+ПКМ].
 [Ctrl+I] .. ИНСПЕКТОР {Hr. Inspektor (VVVV)}.
 [Ctrl+N] .. НОДБРАУЗЕР {NodeBrowser (VVVV)}.
 [Ctrl+P] .. новый патч.
[2*ЛКМ] в пустом месте патча .. создает плашку с курсором (Список нодов).
 [Ctrl+D] .. Дублировать выделенное.
 [Ctrl+L] .. Выровнять выделенную группу нодов.
 [Ctrl+E] .. защитить патч от случайных изменений '#'.
 [Ctrl+W] .. удалить субпатч, нод удаляется из родительского патча.
 [Ctrl+S] .. Сохранить.
Args.txt .. файл в папке с vvvv.exe, параметры по умолчанию для запуска приложения

 {Renderer (EX9)} - нод рендер, отвечает за большинство визуализаций, вывод изображения, окно визуализации (DirectXRenderer), результат вычислений патча [Needs: ex9 Layer].
 [Alt+Enter] .. ПОЛНЫЙ ЭКРАН открыть\закрыть (Full Screen).
Правый клик на субпатче открывает его (и сворачивает, если открыто).
 [Alt+1] .. Внешее окно.
 [Alt+2] .. Внешее окно как блок в патче.
 [Alt+3] .. Без окна.
 [Alt+Z] .. Отменить действие.
 [ALT+ПКМ] .. Обнуление пинов.
 [Alt+F4] .. Выход из приложения.

Переключение между окнами .. [CTRL+TAB].
Группировка окон (Вкладки).
 ОБЪЕДИНИТЬ: [ALT+ЛКМ] => Перетащить в окно => Изменить размер перед сохранением!
 РАЗГРУППИРОВАТЬ: [ALT+ЛКМ] => Перетащить вне окон.
СУБПАТЧИ не закрывать (закрыватся сами автоматически, при закрывании патча)!

{}[]-[]{}

Запись текстуры в видео файл (с вебкамеры):
 -- {VideoIn (DShow9)} -- {Compress (DShow9)} -- {Writer (DShow9)}
Внешний графический файл (jpg, png):
 -- {FileTexture (EX9.Texture)} -- [3]{Quad (DX9)} --
Внешний видео файл (avi, mpg, vmv):
 -- {FileStream (DShow9)} -- {VideoTexture (EX9.Texture VMR9)} -- [3]{Quad (DX9)} --
Внешний медиа файл (wav, midi, avi) для раздельного вывода Audio, Midi, Video:
 -- {FileStream2 (DShow9)} [Play: 1; Loop: 1; Loop End: 9999;]
[1] -- {AudioOut (DShow9)}
[2] -- {MidiOut (DShow9)}
[3] -- {VideoOut (DShow9)} --

Видео с вебкамеры:
 -- Camera USB -- [9]{VideoIn (DShow9)} -- {VideoTexture (EX9.Texture VMR9)} -- [3]{Quad (DX9)} -- {Renderer (EX9)}
 -- {DX9Texture (EX9.Texture)} -- {AsVideo (EX9.Texture)} -- {VideoOut (DShow9)}
https://vvvv.org/documentation/VideoIn-(DShow9)
https://vvvv.org/documentation/Renderer-(EX9)

Value ФРЕЙМРЕЙТ вебкамеры:
 {VideoTexture (EX9.Texture VMR9)}[2] -- FPS

Изменение размера текстуры:
1) МОРФИНГ (зум) по осям XYZ одновременно:
 -- {UniformScale (Transform)} -- [2]{Quad (DX9)} --
2) Scale МАСШТАБ увеличить:
   Вход -- XYZ:(3)=2.00 --
 -- [2]{Scale (Transform Vector)} -- [8]{Renderer (EX9)}[2] --
3) Transform ТРАНСФОРМАЦИЯ видео, изменение размера:
   Вход -- ScaleX и ScaleY
 -- [4][5]{Transform (Transform 2d)} -- [2]{Quad (DX9)} --

{Address (EX9.SamplerState)} -[4]={Quad (DX9)} - трансформация (мозаика и т.п.)
{Rotate (Transform)} -[5]={Quad (DX9)}  - изменение величин X,Y,Z.

Blend БЛЕНДИНГ, Прозрачность:
 {Blend (EX9.RenderState Advanced)}=[1]- Render State -[1]={Quad (DX9)}

{}[] -- []{}

https://vvvv.org/documentation/список-нодов

 File .. Загрузка, запись, копирование, удаление файлов.

 S и R (Send and Receive nodes) .. сохранение и воспроизведение данных. Используется если какой-то из параметров нужно направить в несколько разных мест. Глобальные переменные появляются в порядке создания. [Только один "S" для одного типа данных.] S (Node) позволяет передавать текстуру.

 Expr (Value) .. Математические формулы. Необходимые переменные (a, b, c, d) вбиваются в строку "Variable Names". Выражение типа ((a+b)/c*d) вбивается в строке "Term" или в выносимом окне. F1 показывает доступные математические выражения. Глобальные переменные (global variable) не предусматрены (кроме набора Send и Receive разного типа). Зарезервированные математические константы (mathematical constants): "pi=3.1416"
https://vvvv.org/documentation/expr-(value)

 Subpatche (Субпатч) - это патч, с нодами и связями внутри, которым можно пользоваться как обычным встроенным нодом. Данные в\из субпатчей передаются с помощью IOBoxes, которые превращаются в пины для патча: для этого нужно ввести название или описание IOBox в пине Descriptive Name (пин настройки, доступный через Инспектора), и тогда IOBox начинает работать как пин. Если что-нибудь подключается снизу IOBox, он становится входящим пином, а если подключается что-нибудь сверху, то он становится выходящим пином.
https://vvvv.org/documentation/субпатчи

*

СПРЕДЫ

Spreads: Создание спредов по заданным значениям. Все операции с числовыми спредами.
 Bounds (Spectral) вычисляет среднее значение всего сперда (center), разницу между отдельными слайсами (width), минимальное (min) и максимальное (max) значения слайсов.
 Spectral, спектральное сложение, объединяет весь текстовый спред в один слайс.
Cross (2D) специально написан для создания сетчатых структур.
 Stallone позволяет объединять слайсы из разного количества входов или разделять на любое количество выходов.
 GetSlice .. извлечь слайс (index);
 SetSlice .. вписать слайс;

*

Звук:
 AudioIn (DShow9) - ввод звука;
 AudioOut (DShow9) - вывод звука;

 Camera (Transform Softimage) - точка обзор объекта;
 Trautner (FreeFrame DShow9) - обнаруживает движение и генерирует маску;
 MouseSystemWindow), Mouse(SystemGlobal) - альтернативные координаты курсора;
 Trautner - маска.
Translate (Transform) - сдвигание кадра по осям.

 SetAlpha (Color) - изменение Alpha;
 HSV, HSL, RGB (Color Join) - композиция цвета - IN: Hue, Saturation, Lightness, Alpha; OUT: Color.
 HSV, HSL, RGB (Color Split) - разделение, вычисление характеристик цвета - IN: Color RGB-A; OUT: Hue, Saturation, Lightness, Alpha.

 GlobalRenderState (EX9) - устанавливает глобальные предустановки рендеринга для всех объектов в патче;
 MainLoop (VVVV) - общий счетчик и управление частотой кадров fps (frames per second);
 GetPatchMode (VVVV) - текущее разрешение окна;
 Cursor (DX9) - видимый курсор мыши в окне рендерера.

 Блендинг, блэндинг (blend) - функции наложения изображений и объектов с настройками прозрачности. Важные установки для блендинга для 3d пространства в Renderer (EX9). https://vvvv.org/documentation/Blend-(EX9.RenderState)
 Блендинг занимает ресурсы, поэтому подключайте его, когда нужно. По умолчанию Blend mode выключен, поэтому альфа по умолчанию также не работает.
https://vvvv.org/documentation/tutorial-effects-multiple-textures

 Морфинг (morph) - деформация объектов и трехмерных моделей.
https://vvvv.org/documentation/морфинг-объектов-cpu

Simple Geometry
Fill < mode [point, wireframe, solid] - точки, линиии, сплошные
 Quad - квадрат;
 Segment - многоугольник, овал, круг, кольцо < Resolution=50;
 Grid, RoundRect - плоскость, прямоугольник < Resolution;
Sphere - Сфера; Box - Короб, куб; Cylinder - Цилиндр; Teapot - Чайник;
[AspectRatio (Transform)] - соотношение сторон.
[UniformScale (Transform)] - размер, укладка плиткой.
[Rotate (Transform)] - поворот вокруг оси Z.

ANIMATION

Задержки, когда нужно запомнить значение в момент изменения, отложить или растянуть действие:
 LFO (Animation) - генератор величин (0...1) в заданный промежуток времени. Подцепив к нодам Map (Value) или MapRange (Value) можно расширить границы. Map (Value) - позволяет пересчитать диапазон Source Minimum-Maximum на Destination Minimum-Maximum;
 WaveShaper (Value) - пересчет в цикл (0...1...0), позволяет задать форму графика (линейная, синусоидальная);
 Toggle (Animation) - переключатель "ВКЛ\ВЫКЛ" поочередно;
 TogEdge (Animation) - индикация максимума или минимума;
 Delay (Animation) - задержка между входящим и выходящим импульсом;
 MonoFlop (Animation) - включатель на заданное время;
 Chaos - генератор величин (-1..0..1);
 FlipFlop - выключить до команды сброса;
 Change - индикатор изменения выходящего значения;
 Counter - счетчик изменения значения в плюс или в минус;
 Frac (Value) - разделяет число на целое и дробное.
 S+H (Animation) .. Выбрать и зафиксировать значение (Sample and Hold).

Время:
 Stopwatch (Animation) - секундомер;
 CurrentTime (Astronomy) - установленный в системе день;
 Gregorian (Astronomy Split) - все форматы времени от года до миллисекунды;

 Фильтры (compare filters): Oscillator (Animation) - генератор (дребезг), Damper (Animation) - заслонка (демпфер), LinearFilter (Animation) - линейный график, Decay (Animation) - разрушение (парашют), DeNiro (Animation).

 Group (EX9 Priority) - группировка объектов (combine two mask textures in a group), работает также как Слои в графических редакторах, с возможностью задать приоритет слоя; "Layer Template Count" устанавливает количество входов.

Self + HWND (Windows) + ScreenShot - захват экрана;

===============================================================================
===============================================================================

vvvv_RUS

https://vvvv.org/downloads
https://vvvv.org/documentation/загрузки

Модульная программная среда для разработки realtime видео-аудио приложений на платформе Windows PC. Средство графического программирования (прототип TroikaTronix Isadora). Имеет встроенный текстовый реадктор для языков C# и HLSL. Служит для создания интерактивных инсталляций, где видео, захваченное с камеры, распознается и обрабатывается для управления аудио или DMX-приборами.

УСТАНОВКА

Распакуйте vvvv.zip архив в любое место на жестком диске (..\vvvv). Запустите setup.exe, если видите красные квадраты, следуйте инструкциям, если ВСЕ квадраты ЗЕЛЕНЫЕ - программа готова к работе.

Должны быть установлены следующие внешние библиотеки (для ver.50):
 DirectX (June 2010)
http://go.microsoft.com/fwlink/?linkid=56511&clcid=0x409
 Microsoft .NET Framework 4.6 for WinXP
https://www.microsoft.com/ru-ru/download/details.aspx?id=53344
https://download.microsoft.com/download/F/9/4/F942F07D-F26F-4F30-B4E3-EBD54FABA377/NDP462-KB3151800-x86-x64-AllOS-ENU.exe
 Visual C++ Runtime 2008 SP1
http://www.microsoft.com/en-us/download/details.aspx?id=5582
 Visual C++ Runtime 2010 SP1
http://www.microsoft.com/download/en/details.aspx?id=8328
 Visual C++ Runtime 2012
https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x86.exe
 Visual C++ Runtime 2013
http://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x86.exe
 Visual C++ Runtime 2015
https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x86.exe

!! Установка дополнений
https://vvvv.org/documentation/about-the-addonpack
 * Используйте addonpacks только с выпусками vvvv, которые имеют тот же номер версии (betaXX используйте самый последний доступный).
 * Распакуйте addonpack.zip в директорию vvvv (\addonpack рядом с \girlpower).
https://vvvv.org/sites/default/files/imagecache/large/images/Addons_Addonpack2.png
..\vvvv\
 \addonpack
 \girlpower
 \lib
 \licenses
vvvv.exe

!! Установка собственных дополнений (вкладов)
ПОШАГОВАЯ ИНСТРУКЦИЯ
 * Создать папку «contributions» с подпапками «effects, modules, plugins»;
 * Добавить свои файлы в соответствующие каталоги (модуль должен именоваться корректно [_(EX9)], чтобы он появился в NodeBrowser);
 * Открыть корневой патч «Show Root» из меню Main [Alt+R];
 * Добавить путь к директории дополнений "..\contributions";
https://vvvv.org/sites/default/files/imagecache/large/images/Addons_Contribs.png
..\contribution\
 \effects
MyEffect (EX9.Effect) help.v4p
MyEffect.fx
 \modules
myPatchName (EX9).v4p
 \plugins
myPlugin.dll

ПЕРВЫЙ ЗАПУСК

Запустите vvvv. Вы должны увидеть пустое серое окно. Это и называется патч (patch). Вместо обычного текстового программирования (как в большинстве языков и программных средах), в vvvv используются графические объекты. Создаваемые программы называются патчами. Команды и функции в патчах называются нодами (nodes). При помощи мыши вы создаете связи (links) между нодами, и таким образом появляется структура передачи и обработки данных.

===============================================================================
===============================================================================

 Releases vvvv 45 beta 31.2
http://vvvv.org/sites/default/files/vvvv_45beta31.2_x86.zip

 Releases vvvv 50 beta 35.2
https://vvvv.org/blog/vvvv50beta35.2
https://vvvv.org/sites/default/files/vvvv_50beta35.2_x86.zip [135.5 MB]
https://vvvv.org/sites/default/files/addons_50beta35.2_x86.zip [60.3 MB]

 Releases vvvv 50 beta 35.5
https://vvvv.org/blog/vvvv50beta35.5
https://vvvv.org/sites/default/files/vvvv_50beta35.5_x86.zip
https://vvvv.org/sites/default/files/vvvv_50beta35.5_x64.zip

 МАНУАЛ

https://vvvv.org/contribution/illustrated-guide-to-vvvv-for-newbies-in-computer-arts
https://vvvv.org/sites/default/files/uploads/vvvv%20illustrated%20beta_RUS.pdf
https://vvvv.org/contribution/dont-panic-the-noobs-guide-to-vvvv
https://vvvv.org/sites/default/files/uploads/dontpanic_45beta25_1_0.pdf

 РУКОВОДСТВО видео

https://www.youtube.com/user/v4tutorial/videos
https://www.youtube.com/results?search_query=Tutorial

https://vvvv.org/documentation/video-tutorials

 vvvv Tutorial 1: Installing vvvv
 vvvv Tutorial 2: Menu, Moving and Scaling and Node creation.
 Tutorial 3: Inlets, Outlets and Connections
 Tutorial 4: Save and Open and the XML File
 Tutorial 5: Renderer and show some Text
 Tutorial 6: Move and Color some Text
 Tutorial 7: Enumeration, Color, String, Toggle and Bang
 Tutorial 8: Herr Inspektor
 Tutorial 9: Spreads and Slices
 Tutorial 10: IObox, Columns, Rows and Slicecount
 Tutorial 11: Entering Values, Strings and Colors in an IOBox
 Tutorial 12: Helpfiles, F1 and Comments
 Tutorial 13: The Basic 2D XY coordinate system
 Tutorial 14: Scrolling, Moving, Copy, Paste and Align
 Tutorial 15: Multiple Connections and Style
 Tutorial 16: Hide Nodes and Lock Patches
 Tutorial 17: 2D Transform, Scale, Rotate Centre Points and Trapeze
https://www.youtube.com/watch?v=yze6sVFBvR4
 Tutorial 18: Quad, Pillow, Segment, Rope and Polygons
 Tutorial 19: The IOBox Color
 Tutorial 20: HSV, HSL, RGB (Color Join) and (Color Split)
 Tutorial 21: IOBox Value Advanced in Detail Part 1
 Tutorial 22: IOBox Value Advanced in Detail Part 2
 Tutorial 23: Cool thing to make with a Segment
 Tutorial 24: The Sound-Reactive Rope Part 1
https://www.youtube.com/watch?v=kp32U_Ov_tM
 Tutorial 25: The Sound-Reactive Rope Part 2
https://www.youtube.com/watch?v=OyBrvr4pYhE
 Tutorial 26: Combining 2 or more Spread with different Slicecounts
 Tutorial 27: Introducing Beta 26 and a Quick Crash course
 Tutorial 28: Resample and Count
 Tutorial 29: Use a Boolean to switch a Color.
 Tutorial 30: Combining Switches and the AND and NOT node.
 Tutorial 31: Gridpick and Getslice.
 Tutorial 32: The Spectral Nodes, Bounds, Mean, OR and AND.
 Tutorial 33: Framerates and Bangs
https://www.youtube.com/watch?v=OEzC4w_Rnsw
 Tutorial 34: Create Bangs with Change and Togedge
 Tutorial 35: The Counter in Detail
 Tutorial 36: S+H, Sample and Hold, Freeze Values
 Tutorial 37: Toggle, Flipflop and Monoflop, switching logic
 Tutorial 38: The LFO, Waveshaper and Gamma
https://www.youtube.com/watch?v=5Ph6Ub7DbdY
 Tutorial 39: Framedelay, create Loops or Delay a Value
https://www.youtube.com/watch?v=3lHFaibBquQ
 Tutorial 40: Mapping Values, the Basics
 Tutorial 41: Mapping Values, some examples
 Tutorial 42: ApplyTransform, Transforming Values
 Tutorial 43: Morphing Spreads using Map Range Interval
 Bonus Tutorials

 vvvv basics
https://vimeo.com/vvvvleaks
 Some Basics
https://vimeo.com/200604809
 Custom Datatypes - think ParticleSystem
https://vimeo.com/198615170
 Spreads vs Single Values
https://vimeo.com/197956686

 everyware.kr
https://vimeo.com/user384268
 vvvv+basics
https://vimeo.com/search?q=vvvv+basics
 vvvv basics 05 mouse & keyboard
https://vimeo.com/29211080
 vvvv basics 06 spread I
https://vimeo.com/29410931
 vvvv basics 07 spread II
https://vimeo.com/29587040
 vvvv basics 08 ex9 renderer
https://vimeo.com/29708087
 vvvv basics 09 texture mapping
https://vimeo.com/29825169
 vvvv basics 10 interactive 3d environment using mesh & shader
https://vimeo.com/29838462
 vvvv basics 11 animation
https://vimeo.com/30145745
 vvvv basics 12 event & logic
https://vimeo.com/30193133
 vvvv basics 13 modularization
https://vimeo.com/30483755

ИНСТРУКЦИИ

https://vvvv.org/documentation/node08.workshop.vvvvbeginners
 5. input and output
 mouse
 keyboard
 sound (FFT, BeatDetection)
 webcam (VideoIn)
 play videos (FileStream, VideoTexture, Blend)
 file export images/video (Renderer, MainLoop, Writer, Writer NRT)
 presenting working with multi rendering setups

 Упражнения
http://vvvv.org/documentation/изучение
http://vvvv.org/documentation/интерфейс
http://vvvv.org/documentation/подробно-об-интерфейсе
http://vvvv.org/documentation/горячие-клавиши

 Примеры
https://vvvv.org/contribution/video-effects-and-compositing-tutorials
https://vvvv.org/sites/default/files/uploads/VideoEffectsAndCompositing_0.zip

 Разработки
https://vvvv.org/Contributions
 demo 53 effect 135 misc 42 module 188 pack 21 plugin 148 tool 61 tutorial 27

 Prototyping Interfaces
http://prototypinginterfaces.com/category/patches/
http://ocoire.net/PrototypingInterfaces/2_VVVV-Basics_latest.zip

 Форумы
https://discourse.vvvv.org/?q=forums
http://vvvv.org/blog/24
http://vvvv.org/user/register
http://vvvv.org/forums
http://vvvv.org/user
http://vvvv.org/guestlogin
guest:guest

 Соцсети
http://vkcomgo.ru/vvvv_patching
https://vk.com/vvvv_patching
https://vk.com/docs-7154111
http://fb.com/vvvv.org/
https://m.facebook.com/vvvv.org/
https://m.facebook.com/vvvvAcademy/
https://www.youtube.com/channel/UCqr19V2I3m_IyeGUUx_4peQ/videos

 Код
https://github.com/microdee/mcps-deprecated/find/master
https://searchcode.com/?q=FrameDelay

 Поиск
https://discourse.vvvv.org/search?q=BeatDetector
https://vvvv.org/search/apachesolr_search/Contrast.fx
https://www.google.ru/search?q=vvvv+site:show-master.ru
https://www.google.ru/search?q=brightness+v4p
https://www.youtube.com/results?search_query=vvvv

 Перевод
http://translate.google.com/translate?hl=ru&sl=auto&tl=ru&u=http://vvvv.org
http://translate.google.com/translate?hl=eb&sl=auto&tl=ru&u=http://discourse.vvvv.org
http://www.translate.ru/siteTranslation/autolink/?direction=er&template=General&sourceURL=http://www.freewebhostingarea.com/
http://www.microsofttranslator.com/bv.aspx?from=&to=ru&a=http://netfast.org/signup.php
http://www.tranexp.com:2000/InterTran?from=eng&to=rus&type=url&url=http://www.freewebhostingarea.com/

*

NB: Разыскиваются спецы, кто мог бы конвертировать модули AVS WinAMP в формат vvvv.

http://avs.url.ph
http://avs.chat.ru
http://avsmmp.deviantart.com
http://avs.boxmail.biz
http://tototal.narod.ru/avs/
http://r812.eu5.org/avs/
http://s3s.so/avs

http://avs.url.ph
http://avs.url.ph/vvvv/test.zip
http://avs.url.ph/vvvv/demo.zip
http://avs.url.ph/vvvv/multiple-exposure.zip
http://avs.url.ph/vvvv/vvvv.zip

http://r812.eu5.org/avs/
http://r812.eu5.org/avs/vvvv/vvvv.zip

http://tototal.narod.ru/avs/
http://tototal.narod.ru/avs/vvvv/test.zip
http://tototal.narod.ru/avs/vvvv/demo.zip
http://tototal.narod.ru/avs/vvvv/multiple-exposure.zip
http://tototal.narod.ru/avs/vvvv/vvvv.zip

*

------------------------------------------------------

vvvv-illustrated-beta-rus

Andrey Boyarintsev
skype: obsolete, andrey.bo.27
http://vvvv.org/users/bo27
http://vimeo.com/ivanrastr

http://docviewer.yandex.ru/?url=
http://vvvv.org/sites/default/files/uploads/vvvv%20illustrated%20beta_RUS.pdf
http://www.cheat-sheets.org/saved-copy/vvvv.illustrated.beta_RUS.2012010500.pdf
https://vk.com/doc-7154111_119208876

http://kak.znate.ru/docs/index-20550.html
http://kak.znate.ru/pdfview/index-20550.html
http://kak.znate.ru/download/docs-20550/20550.doc

----------------------- Page 1-----------------------

Linear Spread
 иллюстрированное руководство по vvvv
 для новичков в интерактивных искусствах

----------------------- Page 2-----------------------

 содержание

вступление бла-бла-бла
 2. содержание
 4. vvvv a multipurpose toolkit    
 5. об этом руководстве

зачем мне это vvvv?
 7. в реальном времени
 8. многозадачность и мощь
 9. еще немного пропаганды

называйте себя просто ‘media artist’ 
 11. основы vvvv
 12. Renderer (EX9)
 13. примитивы (DX9)
 14. текстуры
 15. категории нодов

делаем сложные штуки
 17. сила vvvv в спредах
 18. векторы
 19. управление спредами
 20. ioboxes
 21. субпатчи
 22. ноды S и R

делаем красиво в 3d пространстве
 24. система координат
 25. 3d пространства
 26. 3d модели в vvvv
 27. vvvv эффекты (шейдеры)

становимся опытнее, чем могли представить 20 минут назад 
 29. логика
 30. конструкторы времени
 31. циклы и вложения
 32. красные ноды и другие глюки
 33. бойгруппинг
 34. внешние протоколы
 35. девки рулят

прилож. распечатайте страницы 37-43 и держите их под рукой, когда начнете изучать vvvv     
 37. интерфейс vvvv
 38. типы нодов
 39. Inspektor пример IOBox
 40. Inspektor пример Renderer (EX9)
 41. CodeEditor
 42. Как читать чужие патчи
 43. Ссылки

----------------------- Page 3-----------------------

вступление
бла-бла-бла

----------------------- Page 4-----------------------

 vvvv
 a multipurpose toolkit

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

Разрабатывается и поддерживается vvvv group

http://vvvv.org/
http://vimeo.com/channels/vvvv

 Работы пользователей на канале vvvv на Vimeo наглядно показывают силу vvvv,  вместо болтовни про “сила vvvv в...”

 vvvv только для Windows
Потому что это DirectX. Чтобы запустить vvvv под WindowsXP, Vista или 7 нужно  установить свежий DirectX Redistuble и .net3.5. Чтобы запустить vvvv на Мак, установите Windows через BootCamp.

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

----------------------- Page 5-----------------------

 об этом руководстве

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

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

Это не официальное руководство, оно создано без участия vvvv group.
Любые вопросы по этому руководству вы можете задать мне напрямую:
 vvvv-user-page: http://vvvv.org/users/bo27
 skype: andrey.bo.27

----------------------- Page 6-----------------------

зачем мне это vvvv?

----------------------- Page 7-----------------------

 в реальном времени

 компилирую команду <brake> ?!?!
 слава Богу, моя машина откликается сразу!
 ну не успел он тормоз просчитать, с кем не бывает....
 *#%!?!

В большинстве программ разные режимы для редактирования задач и просмотра результата. У vvvv только один режим - выполнение. Другими словами, vvvv непрерывно выполняет все вычесления и выводит графику даже тогда, когда вы редактируете патчи. Работать в vvvv это как водить машину. Вы видите результат мгновенно.

----------------------- Page 8-----------------------

 многозадачность и мощь

 Ну почему я опять выбрал не ту клюшку?

Все вопросы одним щелчком. Один софт для разных задач.

vvvv прекрасно подходит для работы с различными мультимедийными компотентами, такими как:
видео, звук, 3d анимация, данные из интернета, мультитач устройства, панорамные экраны... и это только основные. И самое главное, что vvvv все делает в реальном времени, даже когда вы работате со всеми задачами одновременно.

----------------------- Page 9-----------------------

vvvv мощная графическая среда сама по себе. Встроенный текстовый реадктор для языков C# и HLSL позваляет создавать собственные плагины и шейдеры. Поддержка протоколов TCP, UDP, DMX, MIDI, TUIO, OSC, RS232 и др. - взаимодействовать с большинством устройств... Благодаря активному коммьюнити, вы так же сможете управлять приставками Wii, PSP, Kinect и многими другими устройствами.

 vvvv крута как Леонардо и проста как Робин Гуд

vvvv бесплатна для некоммерческого использования.
Пользуйтесь vvvv прямо сейчас, без всяких ограничений.
http://vvvv.org/downloads

Для коммерческого использования вы обязаны купить лицензию.
http://vvvv.org/licensing

----------------------- Page 10-----------------------

 называйте себя просто ‘media artist’

----------------------- Page 11-----------------------

 основы vvvv

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

 Входящие данные
 Линк
 Нод
Во многих случаях у нодов больше опций, чем вы видите.
 Исходящие данные
Все опции доступны в Инспекторе (Herr Inspektor). Выберите нод и нажмите Ctrl-i
 Исходящие данные

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

Исходящий Пин(ы) передает данные в результате вычислений через линк(и)

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

Добро пожаловать в vvvv.

http://vvvv.org/documentation/tutorial-introduction

----------------------- Page 12-----------------------

 Renderer (EX9)

Renderer - это то, где мы видим результат наших вычислений. В vvvv есть несколько нодов Renderer (для разных видов данных). Нам нужен Renderer(EX9), отвечающий за большинство визуализаций. У Renderer есть внешнее окно - DirectXRenderer, которое можно развернуть на полный экран в любом разрешении, поддерживаемом вашей видеокартой.

http://vvvv.org/documentation/dx9-rendering#starting-with-directx

У Renderer есть внешнее окно DirectX Renderer

Большинство вещей в патче, в конце концов, идут в  Renderer  

Кликните на этом окне и нажмите Alt-Enter, чтобы развернуть его на полный экран.
Обязательно загляните в Инспектор или на скриншот на стр.40

Внешнее окно можно скрыть, или показать как блок в патче,
 нажав Alt-3 нажав Alt-2

----------------------- Page 13-----------------------

 примитивы (DX9)

Самая простая вещь, которую можно нарисовать в рендере это Quad(DX9). Но Quad открывает для вас двери в мир компьютерного генеративного искусства. Не обращайте внимания на несвопадание сокращений EX9-DX9 - эти ноды прекрасно взаимодействуют. Подцепляем Quad(DX9) к Renderer(EX9)

сделав такой патч, вы должны увидеть белый прямоугольник в центре окна Renderer, почему он именно там и такого размера объясняется на странице 24

 Чтобы сэкономить чернила в вашем принтере, ниже мы рисуем результат таким, каким вы
 должны увидеть его в окне Renderer (EX9)

  по умолчанию  подцепляем Transfrom  подцепляем Color   подцепляем Texture

Другие ноды DX9 устроены похожим образом. Названия пинов говорят сами за себя, поэтому мы не останавливаемся на них подробнее.

http://vvvv.org/documentation/quad-%28dx9%29

Поиграйте с этими нодами:

----------------------- Page 14-----------------------

 текстуры

vvvv поддерживает огромное количество форматов текстур и читает все основные графические и видео файлы. Используя только Renderer, Quad, Transfrom и Texture вы уже можете называть себя медиа артистом, что конечно очень приятно.

http://vvvv.org/documentation/dx9-rendering#texturing
  Все что вы видите в окне рендера можно использовать как текстуру
  Пин Texture Transform позволяет изменять текстуру отдельно от объекта.
   Group.EX9 работает так же как Слои в графических редакторах

Большинство настроек нода Renderer (EX9) видны только в Инспекторе.
 
Можно применить одну и ту же текстуру одновременно к разным объектам

http://vvvv.org/documentation/howto-prepare-textures

----------------------- Page 15-----------------------

категории нодов

vvvv работает с разными типами данных: с числами, текстом, текстурами, 3d моделями и др. Ноды, работающие с одним из типов данных, объединены в категории и подкатегории.
 
Одни данные подключены к разным местам

Отвертка подходит к нужным винтам, где бы эти винты ни были вкручены. То же с типами данных.

http://vvvv.org/documentation/pins-and-data-types

С категориями просто работать, потому что vvvv постоянно подстазывает что да так.

 vvvv показывает все пины, понимающие текущий тип данных

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

http://vvvv.org/documentation/nodelist

NodeBrowser - это точка доступа ко всем нодам vvvv.
Двойной клик на пустое место патча открывает NodeBrowser.
По вводу с клавиатуры NodeBrowser сортирует ноды по совпадению букв и символов.
Правый клик на текстовом поле браузера переключит NodeBrowser на список по категориям.

Список нодов в NodeBrowser, отсортированный текстовым вводом

Ctrl-N открывает NodeBrowser во внешнем окне, оттуда можно перетаскивать ноды в патч.

----------------------- Page 16-----------------------

делаем сложные штуки

----------------------- Page 17-----------------------

 настоящая сила vvvv в спредах

Слово “Спред” (Spread) означает “список”. Упорядоченный список данных.
Будь то цифры, тексты, цвета... и т.д. А каждая строка в этом списке называется “Слайс”(Slice).

В большинстве случаев, когда вам надо иметь дело с большим количеством однотипных данных:
числами,  цветами, файлами, текстурами, 3d моделями...
ваш патч остается простым и легким благодаря спредам.

 Спред, набранный вручную
 Нод I создает спред значений от и до
 CircularSpread выводит круговые координаты. Не надо вспоминать синусы-косинусы.  
 Набор случайных чисел

----------------------- Page 18-----------------------

 векторы

Векторы это не только математика, но и самые часто используемые спреды. Думать векторами тоже самое что думать спредами. В vvvv очень много нодов для работы с векторами. Часто использовать вектор проще, чем отдельные значения.

Ноды сверяют количество слайсов во всех входящих спредах. Исходящий спред будет равен самому большому входящему. Разберетесь.

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

----------------------- Page 19-----------------------

 управление спредами

Есть много причин иметь постоянный доступ к отдельным слайсам.

У каждого слайса есть порядковый номер (Index). Выбрать или заменить слайс можно указав его Index

http://vvvv.org/documentation/spreads

Можно выбрать не один, а сразу несколько слайсов, применив спред к пину Index или настроив пин BinSize. Специальные ноды категории Spread позволяют различными способами менять слайсы местами.

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

Stallone позволяет сортировать спреды. Можно задать любое количество входов и выходов, способ сортировки и определить размер исходящего спреда.

----------------------- Page 20-----------------------

 io boxes

IOBox это ноды ввода/вывода данных. Их полезно использовать как для ввода и регулировки данных, так и для подсмотра и контроля значений во время работы патча.
На наших скриншотах большинство IOBox использованы как раз для того, чтобы показать вам данные, а не потому что они там нужны для получения результата.

Двойной праввый клик на пустом месте патча открывает меню ioboxes
Кнопки, слайдеры и таблицы так же делаются в IOBox.
Обязательно посмотрите скриншот Инспектора на стр. 39

http://vvvv.org/documentation/tutorial-ioboxes

----------------------- Page 21-----------------------

 субпатчи

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

Делать субпатчи очень просто.

В патче добавьте описание (Descriptive Name) к IOBox. Это делается в Инспекторе или средним кликом на подцепленном IOBox. IOBox с описанием работает как параметр входа или выхода и выглядит как пин в случае субпатча.

Сохраните патч и перетащите иконку его файла .v4p из окна Windows в другой патч.

http://vvvv.org/documentation/subpatches

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

Alt-1 Alt-2 Alt-3 работают так же, а Ctrl-W - закрывает окно и УДАЛЯЕТ супбатч из патча.

   ???   !!!

----------------------- Page 22-----------------------

 ноды S и R

Футуристическая машина для телепортации из одного места в другое доступна сегодня в vvvv

Иногда нужно передавать данные, но нельзя делать новые линки.
Ноды S и R как раз для этого.
Ноды R могут находиться в любом месте любых открытых патчей.
Меню в нодах R автоматически создается из всех описаний, заданных в нодах S

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

----------------------- Page 23-----------------------

делаем красиво в 3d пространстве

----------------------- Page 24-----------------------

 система координат

Земля ращается вокруг Солнца...
Где моя зажигалка?

По умолчанию, в окне Renderer координаты идут от -1 до +1 в обоих направлениях (x,y).
0,0 находится в центре окна. Еще есть координата z, но пока мы ее не рисуем.

В координатах vvvv нет пикселей, дюймов или миллиметров, а только значения в формате 0.0000
Это удобно, потому что все настройки не зависят от размера окна или разрешения экрана.

По умолчанию координаты в окне Renderer от -1 до +1

Так что, если вы хотите увеличить Quad до размеров окна, увеличьте его на 2

http://vvvv.org/documentation/dx9-rendering#coordinate-systems

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

Scale 0.1 окна Renderer расширяет координаты от -10 до +10

AspectRatio отвязывает координаты от пропорций окна. Можно задать, например,  пропрции 4:3 или 16:9.

----------------------- Page 25-----------------------

 3d пространство

Система координат в 3d пространстве гораздо более сложная, но это позволяет моделировать
полноценные 3d сцены. Простейший способ оглянуться вокруг 3d пространства - применить модуль Camera (TransfromSoftimage) к пинам View и Projection нода Renderer(EX9).
Помните, то, что вы видите в 3d пространстве, полностью зависит от вашей точки зрения.

Чтобы управлять камерой в модуле Camera нужно одновременно удерживать клавишу на клавиатуре и кнопку мыши.

Доступны следующие команды:

O  Orbit   + левая кнопка: Вращение вокруг заданной точки  
Z  Zoom    + правая кнопка: Zoom (двигая мышь вверх-вниз)  
  + левая кнопка: Перемещение камеры   
P  Position Перемещает камеру ближе-дальше от заданной точки
  + правая кнопка: Быстро 
  + левая кнопка: Медленно
R  Reset   Возврат на исходную позицию

View это положение камеры Projection это перспектива
К этим пинам можно применить любые трансформы и вручную регулировать камеру

http://vvvv.org/documentation/ex9.spaces

Мир, который вы видите, зависит от вашей точки зрения.

----------------------- Page 26-----------------------

 3d модели в vvvv

В vvvv есть несколько способов создать или импортировать 3d модель (Mesh):

встроенные примитивы, такие как Grid, Box, Sphere и др.
из категории EX9.Geometry;

XFile (EX9.Geometry Load) для загрузки моделей в формате .x из программ 3d моделирования;

Collada plugin для загрузки моделей в формате .dae из программ 3d моделирования;

самостоятельно создать модель  нодами VertexBuer (EX9.Geometry Join) и Mesh (EX9.Geometry Join).

 примитив (EX9.Geometry)

 Модель в формате xFile

 Анимированная модель Collada

http://vvvv.org/documentation/ex9.geometry

Вертекс это хранилище данных о положении, направлении (normal), координатах текстур и т.д. каждой вершины в 3d модели. Поскольку у vvvv есть прямой доступ к данным вертекса и индексам, возможности деформирования и управления моделями практически безграничны.

Контуры сферы, искаженной через VertexBuer

----------------------- Page 27-----------------------

 шейдеры vvvv (эффекты)

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

О шейдерах можно сказать только хорошее. Во-первых, шейдерами легко пользоваться даже если вы ничего о них не знаете. Шейдеры объединены в категорию EX9.Eects и работают как обычные ноды. Единственное, что нужно запомнить - к шейдеру обязательно применить 3d модель (Mesh), иначе ему нечего отображать.

http://vvvv.org/documentation/tutorial-of-eects-and-shaders

К шейдеру обязательно применить 3d модель

Как правило, у шейдеров масса опций.

Во-вторых, в vvvv есть встроенный редактор шейдеров на языке HLSL, так что вы можете
редактировать существующие и создавать собственные шейдеры. Откройте CodeEditor правым
кликом на ноде шейдера или клонируйте Template (EX9.Eect) нажав Ctrl-Enter в NodeBrowser.

И в-третьих, много отличных шейдеров выложено другими пользователями:

http://vvvv.org/contributions

----------------------- Page 28-----------------------

становимся опытнее, чем могли представить 20 минут назад

----------------------- Page 29-----------------------

логика

 На красный нужно стоять, а идти можно на зеленый.
 Чтобы данные вели себя так же, в vvvv есть ноды Switch.
 А сложные алгоритмы можно создавать нодами категории Boolean.

Резкое переключение между данными
Плавный переход цветов и чисел
Например, напишите ‘box’ чтобы увидеть куб вместо чайника.

http://vvvv.org/documentation/logic

Классические алгоритмы если, или, тогда создаются нодами OR, AND, NOT из категории Boolean. То же самое можно сделать просто проверив равенство значений

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

----------------------- Page 30-----------------------

 конструктор времени

Ноды категории Animation привязывают процессы в патче к определенному времени. Когда
нужно сделать обратный отсчет от 10 до 0, или зациклить движение (анимированная ходьба
или вращение), или растянуть клик мышкой на несколько секунд.

LFO (Animation) пробегает от 0 до 1 в заданное время.
 Quad сделает полный оборот за 1 секунду и будет крутиться вечно

Counter (Animation) считает действия в плюс или в минус.
 Проверьте и другие опции Counter

MonoFlop (Animation) задерживает действие
 Дейсвтие закончилось 2 секунды назад

CurrentTime (Astronomy) знает какой сейчас день
 Gregorian (Astromony) знает текущее время от миллисекунд до года

Stopwatch (Animation) знает кто быстрей.
 Иногда нужно устраивать гонки

http://vvvv.org/documentation/timelinersa

TimelinerSA очень функциональная таймлиния.

----------------------- Page 31-----------------------

 циклы и вложения

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

Единственная причина ждать.

Выход нодов FrameDelay обрабатывается отдельно от входа, с задержкой на один такт, что позволяет использовать не текущее значение, а предыдущее. Это, как правило, решает проблему. Поставив FramDelay в патч, вы можете закрывать цикл.

----------------------- Page 32-----------------------

 красные ноды и разные глюки

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

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

http://vvvv.org/documentation/paths

Ни одна программа во вселенной не защищена от глюков. Обратите внимание, что vvvv
издается в бета-версии. Проверьте на форуме, не сталкивались ли другие люди с той же
проблемой, если нет - публикуйте свою. Проверьте, установлена ли последняя версия
DirectX Redist(ributable) и .Net3.5.

http://vvvv.org/documentation/troubleshooting

Извините, но этот скетч придумала девушка.

----------------------- Page 33-----------------------

 boygroup

Бойгруппинг (Boygroup) это встроенная система сетевого взаимодействия vvvv по принципу клиент-сервер. Она позволяет управлять несколькими компьютерами (клиентами) с одного сервера. Вы работаете только на сервере, а vvvv синхронно повторяет все на клиентах. Обычно бойгруппы используются для панорамных экранов и управления несколькими мониторами.

Соедините два или более PC в сеть по Ethernet и вручную задайте IP-адреса.

Запустите vvvv на сервере с параметром  
 /server  
 vvvv.exe /server

Запустите vvvv на клиенте с параметром
 /client IP.СЕРВЕРА
 vvvv.exe /client 192.168.1.1
Ничего здесь не трогаем

Задайте IP-клиентов
 в ноде Boygroup (VVVV Server)

Ctrl-B делает выбранные ноды синими
 Серые ноды только на сервере
 Синие ноды дублируются на всех клиентах

Добро пожаловать в группу
 и ничего здесь не трогаем

Так же на всех клиентах

http://vvvv.org/documentation/boygrouping-basics

----------------------- Page 34-----------------------

 внешние протоколы

В vvvv много нодов для обмена данными по протоколам  TCP, UDP, DMX, MIDI, TUIO, OSC, RS232 и др... Благодаря активному коммьюнити есть плагины для управления Wii, PSP, Kinect   и другими устройствами.

Но основные ноды все же: Mouse (System) и Keyboard (System) обрабатывают данные с мыши к клавиатуры. Часто этого достаточно.

http://vvvv.org/documentation/io

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

 Протокол TUIO позволяет обмениваться данными с многими программами и устройствами, даже с iPhone
 Human Interface Devices это джойстики, рули, консоли управления, тач-скрины и т.д.
 Некоторые MIDI клавиатуры очень не дорогие и удобные для живых выступлений.
 DMX это мировой стандарт сетевого управления светом и звуком.
 RS232 это профессиональный стандарт управления устройствами от DVD-плееров до станков на фабриках

----------------------- Page 35-----------------------

 девки рулят

Все что вам нужно это girlpower. Папка /girlpower входит в каждый релиз vvvv и содежит демо-патчи основных возможностей vvvv. Открывайте патчи из папки girlpower и изучайте их один за другим - это полезнее любого чтения.

/vvvv45_beta25/girlpower/

----------------------- Page 36-----------------------

распечатайте стр. 37-43 и держите их под рукой перед стартом vvvv

----------------------- Page 37-----------------------

 интерфейс vvvv

самый первый запуск vvvv

 ** Двойной левый клик в пустом месте открывает NodeBrowser
 ** Двойной правй клик в пустом месте открывает меню IOBox
 * Средний клик в пустом месте открывает Главное Меню
 ~ Удерживать правую кнопку для перемещения по патчу
Все стандартные сочетания клавиш Windows, такие как ctrl-c, ctrl-v, ctrl-s, точно так же работают в vvvv

работа с нодами

 * Левый клик для выбора нода
Подсказка показывает
Название (Категория Подкатегория)
 * Удерживать левую кнопку на ноде для перемещения 
 * Удерживать левую кнопку на крае нода, для изменений размера   
 ** Двойной левый клик на ноде открывает NodeBrowser
Можно заменять подсоединенные ноды. Все пины с одинаковыми названиями сохранят линки.
  
работа с линками

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

* выбрать линк левым кликом

 Ctrl-Y меняет внешний вид выбранного линка

Изменение внешнего вида линков делает патчи аккуратными и читабельными.

http://vvvv.org/documentation/ui-reference

Все сочетания клавиш и мыши смотрите по ссылкам.

http://vvvv.org/sites/default/les/uploads/dontpanic_45beta25.pdf

----------------------- Page 38-----------------------

 интерфейс vvvv

типы нодов

 В vvvv есть несколько типов нодов. Они обозначены иконкой слева от названия.

Субпатчи и Модули
 внутри этих нодов находятся патчи, их можно открывать как обычные патчи
 

Плагины (Dynamic Plugins)
 это плагины на языке C# они открываются в CodeEditor 

Шедеры (EX9.Eects)
 это шейдеры на языке HLSL, они открываются в CodeEditor

Ноды с внешним окном
 у этих нодов есть внешнее окно, окно открывается сочетанием Alt-1

 правый клик на нодах открывает патчи во внешнем окне, или скрывает окно, если оно уже открыто
 Ctrl-W закрывает окно и УДАЛЯЕТ нод из патча

 правый клик на ноде открывает CodeEditor во внешнем окне
 для C# и HLSL используется один CodeEditor - vvvv выбирает нужный автоматически. редактировать код можно не останавливая патч.
 Ctrl-S сохраняет и активирует изменения
 Ctrl-W закрывает CodeEditor, но не удаляет нод из патча
   
Alt-1 открывает внешнее окно
Alt-2 сворачивает/открывает окно в блок в патче
Alt-3 скрывает внешнее окно
Alt-Enter открывает окно на полный экран

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

изменение значения пинов

 Изменять значения пинов и IOBox можно мышью или клавиатурой.

Удерживая правую кнопку на IOBox и двигая мышь меняете значение.

Двойной левый клик на IOBoxes для ввода значений с клавиатуры
 
 Подсказка показывает текущее значение пина.
 Удерживая правую кнопку и двигая мышь вверх-вниз можно менять значение.
 Правый клик на пин позволяет изменить значение с клавиатуры
 Средний клик на подключенном IOBox назначает описание (DecriptiveName)

IOBox (Color) управляется немного сложнее.
 Удерживая правую кнопку на IOBox и двигая мышь влево-вправо меняете цвет
 Удерживая правую кнопку на IOBox и двигая мышь вверх-ввниз меняетеe яркость.
 Ctrl + Удерживая правую кнопку на IOBox и двигая мышь меняете насыщенность
 Shift + Удерживая правую кнопку на IOBox и двигая мышь меняете прозрачность

 Все значения можно менять в Инспекторе.

----------------------- Page 39-----------------------

 Herr Inspektor

 Всегда держите Инспектор открытым. ВСЕГДА.
Ctrl-i открывает Инспектор, который автоматически показывает выбранный нод
Shift-Ctrl-i открывает еще одно окно Инспектора, если один уже открыт

IOBox (Value Advanced) скриншот Инспектора

 Левый клик на Attach to Selection привязывает Инспектор к выбранному ноду
 Columns & Rows превращают IOBox в таблицу
 Правый клик на этих кнопках активируют соответствующие опции IOBox

Настроечные пины можно менять только в Инспекторе. В патчах они не видимы.

Behavior превращает IOBox в кнопку или слайдер

 Серые квадраты для скрытых пинов
 Темно-серые для видимых пинов
 Светло-сервые для невидимых пинов
Изменить видимость пинов можно кликом на квадраты

Пины входы/выхода можно менять в патче.

Треугольник указывает, что пин понимает спреды
Двойной треугольник показывает, что пин содержит спред
Клик на треугольнике открывает спред в правой части Инспектора

http://vvvv.org/documentation/tutorial-inspektor

----------------------- Page 40-----------------------

 Herr Inspektor

Всегда держите Инспектор открытым. ВСЕГДА.
Ctrl-i открывает Инспектор, который автоматически показывает выбранный нод
Shift-Ctrl-i открывает еще одно окно Инспектора, если один уже открыт

Renderer (EX9) скриншот Инспектора

 Можно установить любое разрешение, поддерживаемое видеокартой
 Важные установки для блендинга в 3d пространствах
 Полезно для производительности
 Renderer выводит положение курсора мыши внутри окна. Эти значения можно использовать вместо Mouse (System Window).

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

http://vvvv.org/documentation/tutorial-inspektor

----------------------- Page 41-----------------------

 CodeEditor

CodeEditor это встроенный в vvvv текстовый редактор шейдеров HLSL и C# плагинов. Вы можете редактировать и писать свои плагины и шейдеры. В NodeBrowser выберите нужный  Template и нажмите Ctrl-Enter или Ctrl-левый клик, для клонирования его в ваш патч.

Найдите нужный Template в NodeBrowser, и клонируйте его сочетанием  Ctrl-Enter. В окне Clone Node задайте название и версию. Не забывайте делиться разработками с коммьюнити.

vvvv автоматически запускает нужный CodeEditor для C# или HLSL.

http://vvvv.org/documentation/ex9.eect.le

http://vvvv.org/documentation/plugins

----------------------- Page 42-----------------------

 как читать чужие патчи

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

У большинства нодов есть демо-патчи. Выберите нод и нажмите F1

 Выберите нод и нажмите F1, чтобы открыть демо-патч

Простой способ читать чужие патчи (например, демо-патчи или /girlpower).

Проще всего читать патчи снизу-вверх, а не сверху-вниз. Большинство вещей в патче в итоге идут в Renderer. В рендере вы видите результат всего патча. Поэтому найдите главный Renderer (в сложных патчах может быть несколько нодов Renderer). Главный Renderer выглядит примерно так, как показано справа.

Теперь проследите линк из пина Layer. В большинстве случаев следующим будет Quad(DX9), шейдер или Group (EX9). Экспериментируйте с соответствующими трансформами, текстурами и цветами.

Вся абстрактная математика, как правило, применяется к трансформам. Не бойтесь удалять линки, так как можно легко отменить действия сочетанием Ctrl-Z.

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

Finder (доступен с vvvv45_beta25) помогает найти ноды в сложных патчах

Ctrl-F открывает Finder во внешнем окне

Кликните на нужный нод из списка, и vvvv автоматически найдет его в патче

----------------------- Page 43-----------------------

 ссылки на vvvv

http://vvvv.org/
Собственно vvvv. Современный и удобный сайт.

http://vvvv.org/forums
Место где можно найти ответы на свои вопросы. Активно поддерживается.

http://vvvv.org/contributions
Плагины, шейдеры и модули разработанные пользователями vvvv.

http://vimeo.com/channels/vvvv
Работы пользователей на канале vvvv на Vimeo наглядно показывают силу vvvv, вместо болтовни про “сила vvvv в...”

http://www.ickr.com/groups/vvvv/pool/
Красивые скриншоты от пользователей.

http://meso.net/DIProjects
MESO немецкая компания, дистрибьютор vvvv
Большинство их проектов сделано на vvvv.

------------------------------------------------------

*

 VVVV РУКОВОДСТВО RUS

http://avs.url.ph/vvvv-rus.pdf
https://vk.com/doc-7154111_293409833

guest:guest
https://vvvv.org/user
https://vvvv.org/user/729

 ИНТЕРФЕЙС
 ---------
http://vvvv.org/documentation/интерфейс
https://vvvv.org/documentation/foreign-languages

 Подробно об интерфейсе
 ----------------------
http://vvvv.org/documentation/подробно-об-интерфейсе

 FAQ GUI на английском
http://vvvv.org/documentation/faq-gui
 Инспектор
http://vvvv.org/documentation/инспектор
 Главное меню
http://vvvv.org/documentation/главное-меню
 Список нодов
http://vvvv.org/documentation/список-нодов
http://vvvv.org/documentation/категории-нодов
http://vvvv.org/documentation/субпатчи
 Горячие клавиши
http://vvvv.org/documentation/горячие-клавиши
 Параметры командной строки
http://vvvv.org/documentation/параметры-командной-строки
 GUI links
http://vvvv.org/documentation/gui-links

 УПРАЖНЕНИЯ
 ----------
http://vvvv.org/documentation/упражнения

Упражнения для новичков в письменном виде:
 01. Вводный урок
http://vvvv.org/documentation/вводный-урок
 02. Привет, мир!
http://vvvv.org/documentation/привет-мир
 03. Ваш друг Инспектор
http://vvvv.org/documentation/ваш-друг-инспектор

 Video Tutorials
http://vvvv.org/documentation/video-tutorials
уроки на видео (только на английском)

 04. Распределяем данные
http://vvvv.org/documentation/спреды
  04-0. Спреды
http://vvvv.org/documentation/распределяем-данные
  04-1. О спредах и слайсах
http://vvvv.org/documentation/о-спредах-и-слайсах
  04-2. Пустые спреды - Empty Spreads
http://vvvv.org/documentation/пустые-спреды
  04-3. Корзина - BinSize
http://vvvv.org/documentation/корзина
  04-4. Ноды категории Spread
http://vvvv.org/documentation/ноды-категории-spread

 04.
 05. Подробнее об IOBoxes
http://vvvv.org/documentation/подробнее-об-ioboxes
 IOBox (Value Advanced)
http://vvvv.org/documentation/iobox-(value-advanced)
 IOBox (String)
http://vvvv.org/documentation/iobox-(string)
 IOBox (Color)
http://vvvv.org/documentation/iobox-(color)
 IOBox (Enumerations)
http://vvvv.org/documentation/iobox-(enumerations)
 IOBox (Node)
http://vvvv.org/documentation/iobox-(node)
  Select (Node)
http://vvvv.org/documentation/select-(node)
  Select (Color)
http://vvvv.org/documentation/select-(color)
  Select (String)
http://vvvv.org/documentation/select-(string)
  Select (Value)
http://vvvv.org/documentation/select-(value)

 06. Ударим спредом по бездорожью
http://vvvv.org/documentation/ударим-спредом-по-бездорожью
 RoundRect (GDI)
http://vvvv.org/documentation/roundrect-(gdi)
 LinearSpread (Spreads)
http://vvvv.org/documentation/linearspread-(spreads)
 Cross (2D)
http://vvvv.org/documentation/cross-(2d)
 Points2Vector (2D)
http://vvvv.org/documentation/points2vector-(2d)

Двигаемся дальше:

 07. Деформация объектов
https://vvvv.org/documentation/деформация-объектов
 08. Пиксельные шейдеры для новичков
http://vvvv.org/documentation/пиксельные-шейдеры-для-новичков
 09. Как проецировать на объемные поверхности
http://vvvv.org/documentation/как-проецировать-на-объемные-поверхности
 PointEditor (3D Persistent)
http://vvvv.org/documentation/pointeditor-(3d-persistent)
 Projector (EX9)
http://vvvv.org/documentation/projector-(ex9)

 10. Skeleton Animation Nodes Tutorial
http://vvvv.org/documentation/skeleton-animation-nodes-tutorial
 11. SkinningWithSkeletonNodes
http://vvvv.org/documentation/skinningwithskeletonnodes
 12. Wave Simulation
http://vvvv.org/documentation/wave-simulation
 13. Writing Freeframe Plugins
http://vvvv.org/documentation/writing-freeframe-plugins


http://vvvv.org/documentation/подробно-об-интерфейсе

Подробно об интерфейсе

Использование мыши
Создание нового патча
Выбор нужного нода
Создание комментариев
Соединяем ноды
Удаление нодов и связей
Рисование не прямых линий
Прокрутка в патче
Перемещение выбранных нодов
Изменение числовых значений в патче
Числовые пины
Пины цвета (Color)
Текстовые пины (String)
Пины списков (Enum)
IOBoxes
Главное меню
Горячие клавиши
Инспектор
Еще несколько слов о нодах
Группировка окон и Вкладки
Переключение между окнами
Скрытые ноды и режим блокировки патчей.
Отладка (DeBug mode)

Использование мыши

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

В процессе создания патчей помните, что все значения пинов вы меняете правой кнопкой мыши, а положение, размер и название нодов - левой.

Использование трех кнопок мыши позволяет нам всегда оставаться в режиме воспроизведения, вместо постоянного переключения между режимами редактирования и воспроизведения.
Помните, что есть режим блокировки редактирования (locked mode), включаемый сочетанием Ctrl+E или через главное меню. Используйте его, чтобы защитить патч от случайных изменений.

Посмотрите видео урок на английском video tutorial об использовании мыши при навигации по vvvv, и еще несколько трюков для оптимизации создания патчей здесь.

Создание нового патча

Щелкните средней кнопкой мыши и выберите в меню“New Patch” (или нажмите Ctrl+P). Обратите внимание, что все новые окна появляются рядом с курсором, что позволяет вам сразу же перетащить их в нужное вам место на экране.

Выбор нужного нода

Двойной щелчок левой кнопкой в любом месте патча открывает темно-серую плашку с мигающим курсором. Щелкните правой кнопкой внутри этой плашки, и появится список всех нодов в алфавитном порядке. Переместите курсор мыши левее от этого списка, и появится список всех нодов, рассортированный по категориям см. Категории нодов.

Переключиться к списку по алфавиту можно просто сдвинув курсор мыши вправо. Колесико мыши прокручивает список вверх-вниз. (Если у вас на мыши нет колесика, нажмите ПРОБЕЛ, чтобы открыть полосу прокрутки). Наведение курсора на название нода показывает краткое описание выбранного нода.

Щелчок левой кнопкой ставит выбиранный нод в патч, щелчок правой кнопкой отменяет действие и закрывает меню.

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

дополнительно:

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

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

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

Создание комментариев

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

при этом все комментарии это IOBox(String) со скрытыми пинами. если соединить комментарий с текстовым нодом, он превратится в обычный IOBox(String)

Соединяем ноды

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

Внимание: скрытые пины не отображаются, но к ним так же можно подключиться.

Подведите линию к целевому пину и еще раз кликните левой кнопкой. Связь установлена. Цахейлу.

Пользователи Max часто продолжают удерживать кнопку нажатой, пока ведут линию. Но здесь это не обязательно.

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

Подробнее о пинах и допустимых типах данных см. Pins and Data Types.

Цикл из выхода нода во вход того же нода не допускается. Для создания циклов нужно добавить нод FrameDelay (Animation). Подробнее см. Creating Feedback Loops

Клик правой кнопкой отменяет линию в процессе рисования.

Чтобы нарисовать много линий из одного источника, начните линию с клика правой кнопкой, а затем кликами левой кнопкой отметьте все целевые пины.

Удаление нодов и связей

Выберите нод или связь и нажмите DEL или BACKSPACE. Выбранные линии можно удалить так же кликом правой кнопкой. Удалив нод, вы удаляете все связанные с ним линии.
Перезагрузить/обнулить значения нода можно сочетанием ALT+правый клик на ноде.

Рисование не прямых линий

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

Визуально линия может быть трех типов: прямая, линия с узлами, и линия в виде кривой Безье. Изменить внешний вид выбранной линии можно сочетанием CTRL+Y или выбрав в главном меню “Alter Link-Type”.

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

Прокрутка в патче

Прокрутить патч в любом направлении внутри окна можно удерживая правую кнопку мыши и перетаскивая курсор.

Вертикальная прокрутка во время рисования линии возможна колесом мыши;
Горизонтальная прокрутка во время рисования линии возможно нажатием ALT+прокрутка колеса мыши (спс david).

Прокрутка по горизонтали и вертикали будет быстрее, если удерживать клавишу CTRL.

Перемещение выбранных нодов

Нажатие на стрелки перемещает ноды на 1 px в соответсвующую сторону.
Нажатие на стрелки и удерживание клавиши SHIFT перемещает нода на 10 px.

Изменение числовых значений в патче

Наведите курсор на любой пин и во всплывающей подсказке будет показано текущее значение пина. Значения входящих пинов могут быть изменены напрямую из патча. Вернуться к значениям по умолчанию можно сочетанием ALT+ клик правой кнопкой на пине. Alt+клик правой кнопкой на ноде обнулит значения всех пинов нода.

Числовые пины

Удерживая правую кнопку и двигая мышь вверх-вниз можно изменять значения числовых пинов.
Дополнительные сочетания:
SHIFT  шаг изменения значения будет разделен на 10.
CTRL  шаг изменения значения будет разделен на 10.
SHIFT+CTRL  шаг изменения значения будет разделен на 100.
ALT+SHIFT  шаг изменения значения будет умножен на 10.
ALT+CTRL  шаг изменения значения будет умножен на 10.
ALT+CTRL+SHIFT  шаг изменения значения будет умножен на 100.

Пины цвета (Color)

Кликните правой кнопкой в цветовое поле IOBox. Теперь вы можете:
удерживая правую кнопку и двигая мышью вверх-вниз, изменять яркость brightness,
удерживая правую кнопку и двигая мышью влево-вправо, изменять цвет hue,
нажав CTRL + удерживая правую кнопку и двигая мышью вверх-вниз, изменять насыщенность saturation.
нажав SHIFT + удерживая правую кнопку и двигая мышью вверх-вниз, изменять прозрачность alfa.

Чтобы сохранить изменения цвета, кликните левой кнопкой в любом месте в патче.

Текстовые пины (String)

Двойной клик левой кнопкой внутри нода позволит ввести текст. После клика правой кнопкой мыши в текстовом боксе произойдет действие в зависимости от текущего типа IOBox(String)
Если текущий тип short появится обычный курсор, и можно вводить текст.
Если текущий тип long откроется отдельное окно, в котором можно вводить текст из нескольких строк.
Если текущий тип filename появится окно для выбора файла (устанавливается автоматически, если бокс подключен к нодам, управляющим загрузкой файлов, например FileTexture.
Если текущий тип directory появится окно для выбора папки. (так же устанавливается автоматически

Вне зависимости от текущего типа нода, сочетание CTRL+клик правой кнопкой откроет окно выбора файла, а сочетание SHIFT+клик правой кнопкой - окно для выбора папки.

Пины списков (Enum)

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

IOBoxes

Иногда полезно добавить некоторые элементы управления прямо в патч. Используйте IOBoxes для изменения значений и контроля за результатом. IOBoxes создаются так же как и другие ноды, но внимательно выбирайте подходящую категорию IOBox: IOBox (Value) Advanced |Value?, IOBox (String) |String?, IOBox (Color) |Color?, IOBox (Enumerations) |Enumeration? или IOBox (Node) |Node? для сложных типов данных (например, Transform или Texture)

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

Главное меню

Главное меню открывается из большинства окон vvvv, кликом средней кнопкой мыши. Если у вас нет третьей кнопки, используйте сочетание ПРОБЕЛ + клик правой кнопкой мыши.
Если на мыши есть третья кнопка, но по нажатию на нее не открывается главное меню, значит система распознает ее не как клик средней кнопкой. (Откройте в Windows Настройка>Панель Управления>Мышь (Settings>Control Panel>Mouse) и проверьте привязку средней кнопки или драйвер мыши).

Горячие клавиши

Подробнее см. Keyboard Shortcuts? на английском.
Так же основные сочетания клавиш перечислены в базовом help-патче (нажмите F1 в любом окне vvvv).

Инспектор

Если вы хотите посмотреть или изменить несколько параметров одновременно, следует открыть Инспектор сочетанием клавиш CTRL-I, через главное меню или нод Inspektor (VVVV) |Inspektor?. (Каждый раз когда вы открываете Инспектор, в корневом патче открывается нод Инспектор)

В окне Инспектора показаны все пины выбранного нода. В верхней части таблицы Инспектора показана краткая информация о ноде и пины настройки. Пины настройки видны только в Инспекторе. Ниже показаны входные пины, а еще ниже - выходные пины. Значения светло-серых ячеек могут быть изменены пользователем, а темно-серые ячейки только для чтения. Помните, что все соединенные и выходные пины только для чтения, потому что значения в них задаются входящими данными и вычислением внутри нода.

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

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

Вы можете выбрать несколько нодов одновременно, но редактировать их значения возможно только если это ноды одной категории.

В упражнении Ваш друг Инспектор объяснены основные манипуляции с окном Инспектора. Так же есть видео уроки на английском.

Еще несколько слов о нодах

Большинство нодов содержат пины с основными типами данных. При наведении курсора на пин во всплывающей подсказке показывается текущее значение пина и размер спреда. Чтобы увидеть все значения всех пинов, откройте окно Инспектора (Ctrl+I).

У многих нодов есть так же пины настроек, которые видны только в Инспекторе Inspector?. Значения этих пинов существенно влияют на конфигурацию и функционал нода, поэтому их нельзя подключать к другим нодам. Наиболее частое применение пинов настроек - установка количества входных и выходных пинов. Скрытие этих параметров в настройках, избавляет от путаницы со значением входных пинов и случайной установки недопустимых значений.

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

Подсказка: Если нужно установить в пине зависимое, но постоянное значение, сначала соедините пин с необходимым нодом, а после установки значения удалите связь – в пине сохранится выставленное значение.

Чтобы сбросить значение пина, нажмите ALT + кликните правой кнопкой мыши на пине. Чтобы сбросить значения всех пинов нода, нажмите ALT + кликните правой кнопкой мыши на названии нода.

Помните, что это относится только к основным типам данных. Пины со сложными типа данных (например, Transform) потеряют свои значения как только вы отсоедините входящие данные

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

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

Группировка окон и Вкладки

При работе с несколькими окнами одновременно, удобно группировать окна друг с другом. Все окна сложатся в одно окно, и vvvv автоматически покажет закладки для переключения между окнами. Можно объединять любые окна vvvv.

Чтобы объединить одно окно с другим нужно:
нажав и удерживая ALT, кликнуть в свободное место внутри патча (не в в заголовок и не в границу окна) и, удерживая ALT и левую кнопку мыши, перетащить это окно в другое окно. Когда внутри целевого окна появится дополнительная серая рамка, отпустите кнопку мыши. Под заголовком целевого окна должны появиться вкладки.

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

Чтобы разгруппировать окно нужно, удерживая ALT, кликнуть в окне и перетащить его в любое свободное место на экране (вне окон vvvv) и отпустить кнопку мыши.

Чтобы перенести несколько сгруппированных окон в другое окно выполните те же действия, но с сочетанием клавиш ALT+SHIFT во время перетаскивания.
Переключение между окнами

Переключение между всеми видимыми в настоящий момент окнами vvvv (включая все окна патчей и окна рендеров) осуществляется сочетанием CTRL+TAB. Аналогично переключению между открытыми программами в Windows (ALT+TAB), выбранное окно становится активным и помещается поверх остальных окон.
Скрытые ноды и режим блокировки патчей.

Сочетание CTRL+E блокирует патч от редактирования. В левом углу заголовка окна появляется значок '#', означающий, что патч заблокирован. Все функции в заблокированном патче работают как обычно, а так же можно менять значения IOboxes. Чтобы разблокировать патч, снова нажмите CTRL+E.

Сочетание CTRL+H отмечает выделенные ноды и связи между нодами как скрытые. В заблокированном патче скрытые ноды не видимы и не доступны. В обычном режиме скрытые ноды выделены светло-серым цветом.

Смотрите так же видео уроки на английском video tutorial.
 
Отладка (DeBug mode)

см. debug-mode


http://vvvv.org/documentation/инспектор

Инспектор

Окно Инспектора

Для ввода или редактирования нескольких значений одновременно, всегда используйте Инспектор.

Окно Инспектора можно открыть через главное меню или сочетанием клавиш CTRL-I?.

На самом деле, Инспектор это не какое-то специальное окно. Инспектор это обычный нод с привязанным к нему окном. Включение Инспектора автоматически создает в корневом патче нод Инспектор Inspektor (VVVV)
В Инспекторе отображаются ВСЕ пины выбранного нода.
В верхней части окна Инспектора отображается краткая информация о ноде и все пины настройки - configuration pin?.

+ Пины настройки отображаются только в Инспекторе.
В средней части окна отображаются входящие пины - Input Pin?;
В нижней - выходящие пины - Output Pin?.^

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

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

Нажав на квадрат в крайней левой колонке строки пина можно изменять режим отображение пина pin visibility?в патче: видимый, скрытый, не видимый

Это удобно для скрытия неиспользуемых пинов или для защиты от случайного редактирования.

Если открыто несколько Инспекторов, по умолчанию все они отображают одинаковую информацию о выбранном ноде.
Если необходимо привязать отдельного Инспектора к отдельному ноду, нажмите кнопку “Attach to Selection” (Привязать к выбранному) в верхней части окна Инспектора.

Можно выбрать и редактировать несколько нодов одновременно, но в Инспекторе будут отображаться только пины с одинаковыми типами данных.

см. упражнение Ваш друг Инспектор, а так же видео урок на английском VideoTutorial


http://vvvv.org/documentation/главное-меню

Главное меню

Главное меню появляется рядом с курсором мыши после клика средней кнокой мыши в большинстве окон vvvv.
Если на мыши нет средней кнопки используйте сочетание SPACE + клик правой кнопкой мыши.

Если нажатие средней кнопки мыши не открывает меню, скорее всего в системных настройках средняя кнопка мыши привязана к другому действию. Проверьте в Windows Настройки>Панель управления>Мышь (Settings>Control Panel>Mouse), найдите привязку кнопок мыши и установите значения для средней кнопки.

см. Подробно об интерфейсе


http://vvvv.org/documentation/список-нодов

Список нодов

В списке нодов перечислены все ноды vvvv; чтобы поставить нод в патч просто выберите его из списка. Есть несколько способов открыть список нодов.

Двойной клик в пустом месте патча левой кнопкой мыши создает темно-серую плашку с курсором.
По клику правой кнопкой мыши внутри темно-серой плашки откроется Список нодов, после чего
перемещение курсора мыши либо влево, либо вправо от списка, переключает вид списка, соответственно, в режим сортировки по категориям (см. Категории нодов ) или в алфавитном порядке.

Перемещаться по списку вверх-вниз можно используя колесо прокрутки.
(Если на мыши нет колесика, нажмите ПРОБЕЛ чтобы открыть полосу прокрутки).
По наведению курсора на название нода показывается краткое описание нода.

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

наберите название с клавиатуры.

Когда вы начнете набирать название, появится всплывающее меню с кратким списком нодов (в зависимости от набранных символов). Можно выбрать нужный нод из этого списка, используя кнопки вверх-вниз или кликом левой кнопкой мыши.
дополнительно:
Если вместо названия нода поставить "." (точку), во всплывающем меню появятся имена всех файлов патчей, из той же папки. Это самый быстрый доступ ко всем патчам в вашем проекте.
Можно изменить уже существующий и связанный нод, субпатч subpatch или модуль module, дважды кликнув левой кнопкой на название нода и выбрав другой. Все связи с входящими и выходящими пинами, имеющими одинаковые названия (учитывая Регистр) сохранятся.

После двонйого клика левой кнопкой в нод субпатча subpatch или модуля module и ввода

+. (точки)
+появится список имен файлов патчей, хранящихся в той же папке, что и текущий патч.


http://vvvv.org/documentation/категории-нодов

Категории нодов

Как просматривать список нодов по Категориям, см. Подробно об интерфейсе

2d: Геометрия в 2d, например пересечение линий, вычисление координат и т.д.
3d: Геометрия в 3d.
4d:
Animation: Things which will animate over time and therefore have an internal state; Generate motion, smooth and filter motion, record and store values. FlipFlops and other Logic nodes.
Astronomy: Все что связано с Землей и Вселенной; Текущее время (Current Time), вычисление параметров Земли, Луны, Солнца.
Boolean: Буленовы числа для построения логики
Color: Работа с цветом, сочетаниями цветов, прозрачностью, цветовыми моделями и т.д.
Debug: Контроль текущего статуса системы в различных форматах.
Devices: Управление внешними устройствами и обмен данными с ними.
Differential: Создание плавных движение с одновременным расчетом текущей позиции и ускорений
DShow9: Воспроизведение Аудио и Видео, применение эффектов на базе Microsofts Direct Show Framework
DX9: Высокоскоростной рендеринг на базе DirectX9
Enumerations: Обработка различных списков
EX9: Доработанный высокоскоростной рендеринг на базе DirectX9. Расчет и построение фигур выполняется независимо от отображения этих же фигур через шейдеры.
File: Управление файловой системой. Загрузка, запись, копирование, удаление файлов и т.д.
Flash: Все, что связано с рендером файлов Flash.
GDI: Старомодная система рендеринга (до сих применяется как системная в Windows). Простые ноды и примитивная визуализация.
HTML: Работа с кодами HTML автономно или в Интернете.
Network: Настройка сетей и Интернета HTTP, IRC, NetSend, NetReceive
Node: Операции с разными типа данных пинов node
ODE: Симулятор физики на базе Open Dynamics Engine
Quaternion: Расчет векторов вращения Quaternion
Spectral: Вычисление нескольких значений из спредов. Сложение, вычисление средних значений и т.д.
Spreads: Создание спредов по заданным значениям. Все операции с числовыми спредами.
Strings: Обработка текстовых строк. Поиск, сортировка, текстовые спреды и т.д.
System: Управление системными устройствами, такими как мышь, клавиатура, звуковые карты, управление питанием и т.п.
Transforms: Управление матрицами трансформа DirectX
TTY: Консоль вывода системных сообщений и текущего состояния для отладки патчей.
Value: Работа со всеми числовыми значениями: Математические операции, Буленовы числа и т.д.
VVVV: Управление текущим состояние vvvv: параметры командной строки, контроль событий
Windows: Управление текущим состоянием системы Windows: положение окон, выполнение внешних программ и т.д.


http://vvvv.org/documentation/горячие-клавиши

Горячие клавиши

Главное меню

Главное меню появляется в большинстве окон vvvv, рядом с курсором мыши по клику средней кнопкой. Если на мыши нет средней кнопки используйте сочетание ПРОБЕЛ + клик правой кнопкой мыши.

Так же вы можете использовать следующие сочетания клавиш:

Window menu
Snapshot  Скриншот  Ctrl 1  Сохраняет скриншот активного окна (вместе с курсором) в файл с именем имя патча_порядковый номер.png в папку с исходным патчем.
Snapshot Client  Скриншот Клинет  Ctrl 2  То же, что и скриншот, но изображение сохраняется без системных границ окна.
Kommunikator  Скриншот в Wiki  Ctrl 3  Сохраняет скриншот активного окна vvvv, открывает командную строку, где вы можете добавить короткий комментарий и через Интернет опубликовать скриншот на сайте vvvv.org
...  ...  Ctrl Shift 1  то же что Ctrl 1, но с диалоговым окном Kommunikator для отправки скриншота на сайт vvvv.org
...  ...  Ctrl Shift 2  такой же Kommunikator, но картинка сохраняется без системных границ окна.
Always on top  Поверх всех окон  Ctrl T  Закрепляет активное окно поверх остальных окон
Windowed  Отдельное окно  Alt 1  Разворачивает субпатч, модуль или рендер в отдельное окно. см. раздел Субпатчи
In a Box  В Бокс  Alt 2  Сворачивает субпатч, модуль или рендер в развернутый бокс внутри патча см. раздел Субпатчи
Hide  Скрыть  Alt 3  Сворачивает окно субпатча, модуля или рендера в нод в патче. Субпатч продолжает работать. См. раздел Субпатчи
FullScreen  Полный экран  Alt Enter  Разворачивает активное окно на полный экран. См. раздел Субпатчи
Close  Закрыть  Ctrl W  Закрывает активное окно и удаляет соответствующий нод из патча. Закрывает Code Editor, но НЕ УДАЛЯЕТ соответствующий нод.
Close All  Закрыть все  Ctrl Shift W  Закрывает все окна и открывает корневой патч по умолчанию. См. раздел Субпатчи

Main Menu
New Patch  Новый патч  Ctrl P  Создает новый патч в отдельном окне
Node Browser  Список нодов  Ctrl N  Открывает список всех нодов в отдельном окне.
New Inspektor  Инспектор  CTRL-I?  Открывает окно Инспектора, если Инспектор открыт, то переносит его поверх всех окон. Побеждает в номинации самое важное сочетание клавиш.
Inspektor  Инспектор  Shift Ctrl I  Открывает дополнительные окна Инспектора, если хотя бы один Инспектор уже открыт.
Help  Помощь  F1  Открывает help-патч для выбранного нода. Если не выбрано ни одного нода, открывает базовый help-патч vvvv
Online Help  Онлайн помощь  Alt F1  Открывает в браузере соответствующую страницу для выделенного нода из списка нодов на сайте vvvv (vvvv.org/reference.php)
Fanclub  Фанклуб  Ctrl F1  Открывает патч IRC-чата
About  Титры   Открывает патч с титрами о разработчиках.
Show Root  Показать корневой патч  Alt R  Открывает корневой патч vvvv. См. раздел Субпатчи
Delete Args.txt  Удалить Args.txt   Удаляет командные параметры по умолчанию, установленные в файле Args.txt в папке с vvvv.exe
Update View ON OFF  Обновлять вид ВКЛ/ВЫКЛ  Ctrl U  Переключает режимы обновления интерфейса. Выключение обновления улучшает производительность, но вы не увидите текущих изменений значений в патче
Minimize  Свернуть   Сворачивает vvvv в панель задач
Save All  Сохранить все  Alt S  Сохраняет все не сохраненные патчи
Quit  Выход  Alt F4  Закрывает vvvv

Patch menu
Open  Открыть  Ctrl O, Ctrl Q  Открывает существующий патч как корневой
Save Patch  Сохранить патч  Ctrl S  Сохраняет патч
Save Patch as..  Сохранить патч как... Shift Ctrl S  Сохраняет текущий патч под другим именем
Revert to saved  Вернуться к сохраненной версии  Ctrl R  Закрывает текущий патч без изменений и загружает сохраненную версию
Lock ON OFF?  Блокировка (ВКЛ/ВЫКЛ) CTRL-E?  Отключает редактирование всех функций, кроме IOBoxes. Немного улучшает производительность и защищает патч от случайных изменений.
Set as Root  Сделать корневым  Alt T  Устанавливает текущий патч как корневой и создает файл Args.txt с командными параметрами, которые автоматически загружают этот патч при следующем запуске vvvv

Edit menu
Undo  Отменить  Ctrl Z  Отменить последнее действие. Количество отменяемых шагов можнонастроить с помощью нода Undo (VVVV).
Redo  Повторить  Shift Ctrl Z  Повторить последнее отмененное действие.
Cut  Вырезать  Ctrl X  Вырезать выделенное
Copy  Копировать  Ctrl C  Копировать выделенное
Paste  Вставить  Ctrl V  Вставить
Paste modified values  Вставить измененные значения  Shift Ctrl V  Назначает скопированные значения к выбранному ноду
Duplicate  Дублировать  Ctrl D  Дублировать выделенное
Align  Выровнять  Ctrl L  Выравнивает выделенную группу нодов по горизонтали или вертикали, в зависимости от их текущего положения
Select All  Выбрать все  Ctrl A  Выделить все
Deselect  Отменить выделение  Ctrl Shift A  Отменить все выделения
Boygroup  Сетевой статус  Ctrl B  Устанавливает сетевой статус нода. См. Boygrouping Работает только в режиме SERVER.
Hide on Lock  Скрыть при блокировке  CTRL-H  Скрытые ноды и связи не отображаются в заблокированных патчах.
Debug Mode  Отладка  Ctrl F9  Вкл/Выкл. режим общей отладки см. Debug Mode
Debug Mode  Ctrl Shift F9  Вкл./Выкл. режим отладки выбранных нодов
Alter Linktype  Вид связей  Ctrl Y  Переключается между разными стилями отображения линий связи: прямые, сегменты, или кривые Безье.
Make Relative  Сделать релятивным  Alt Shift P  Устанавливает релятивные пути для выбранных субпатчей

Дополнительные сочетания
Open  Открыть  Ctrl Shift O, Ctrl Shift Q  Открывает существующий патч в активном патче
New Patch  Новый патч  Ctrl Shift P, Ctrl Shift N  Открывает новый патч в окне активного патча
Toggle Windows  Переключение окон  Ctrl Tab  Переключение между окнами vvvv (аналогчино переключению в Windows Alt-Tab)
Lighten Patch  Светлее патч  Ctrl 6  Делает фон окна патча светлее in versions >Beta8.3
Darken Patch  Темнее патч  Ctrl 7  Делает фон окна патча темнее in versions >Beta8.3
Toggle Window Frame Вкл. границы окна  Ctrl 8  Вкл/Выкл. системные границы и заголовок текущего окна
Zoom In  Увеличить  Ctrl 9  Увеличивает активный патч Осторожно: ГЛЮЧИТ
Zoom Out  Уменьшить  Ctrl 0  Уменьшает активный патч Осторожно: ГЛЮЧИТ
Hand Tool  Свободное перемещение  Ctrl Right click  перемещает патч внутри окна

и еще...
Вертикальная прокрутка  Колесико мыши  прокрутка вверх/вниз
Быстрая вертикальная прокрутка  CTRL-Колесико мыши  
Горизонтальная прокрутка  ALT-Колесико мыши  прокрутка лево/право
Быстрая горизонтальная прокрутка  CTRL-ALT-Mousewheel  
перемещение выбранного нода на 1 px Клавиши Стрелок  перемещает ноды
перемещение выбранного нода на 10 px SHIFT+Клавиши Стрелок перемещает ноды быстро...


http://vvvv.org/documentation/субпатчи

Субпатчи

Вступление
Корневой патч
Режимы окон (Window Modes)
Субпатчи
Параметры и значения
Глубина
Релятивные (относительные) пути
Гнездо
Вступление

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

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

Создать субпатч очень просто. Честно говоря, любой патч может быть использован как субпатч. Чтобы лучше понять это, давайте вернемся назад и енемного поговорим об особенностях архитектуры 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 подтвердила все релятивные пути для новой папки. Перепроверьте, что все файлы сохранили свою релятивность к новой папке. Поэтому появляется предупреждение, заставляющее вас совершить эти действия.

Гнездо

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


http://vvvv.org/documentation/параметры-командной-строки

Параметры командной строки

Встроенные параметры командной строки
/allowmultiple
/client [ServerIP] [RootPath]
/dda X
/debug
/dontregister
/logstartup
/o [path to patch]
/r [path to patch]
/server
/shutup

Использование собственных параметров командной строки
Автоматизация
args.txt
Реестр (Registry)
Исполняемые файлы
Ярлыки
Встроенные параметры командной строки

VVVV понимает несколько параметров для запуска vvvv.exe с различными настройками. Вот они:
/allowmultiple

Позволяет одновременно запускать несколько экземпляров vvvv.
/client [ServerIP] [RootPath]

Запускает vvvv в режиме boygroup сетевого клиента, управляемого сервером <ServerIP>. Корневой путь <RootPath> указывает отправную точку для релятивных путей, получаемых с сервера, например:
 /client 192.168.0.100 C:\MYPROJECT\patches

При такой спецификации командной строки, релятивный путь для текстуры:
 ..\textures\mask.jpg

будет пониматься как:
 C:\MYPROJECT\textures\mask.jpg
см. так же Boygrouping и MultiBoygrouping
/dda X

где X - ID-номер устройства, на которое выводятся рендеры в полноэкранном режиме
используется в случае проблем с переключением в полноэкранный режим, на любых мониторах, кроме основного (номер которого 0)
/debug

Запускает vvvv в режиме отладки Debug Mode.
/dontregister

запрещает регистрацию расширений для файлоы addflow, directshowfilter и .v4p
/logstartup

Используется при возникновении проблем с запуском vvvv. Этот параметр вынужныет vvvv записывать все шаги, выполняемые при запуске, в файл .txt, сохраняемый в папке с vvvv.exe. По крайней мере, вы сможете выложить этот файл на форуме, и есть шанс, что мы сможем разобраться с вашей проблемой.
/o [path to patch]

Открывает патч по заданному пути. Путь может быть релятивным относительно vvvv.exe или абсолютным. Если в описании пути используются пробелы, то описание должно быть заключено в кавычки, например:
 /o "my project/callmenames.v4p"

Может быть указано любое количество путей с параметром /o.
/r [path to patch]

Открывает патч по заданному пути как корневой патч. Путь может быть релятивным относительно vvvv.exe или абсолютным. Если в описании пути используются пробелы, то описание должно быть заключено в кавычки, например:
 /r "my project/_root_my project.v4p"

Параметр /r может быть задан только один раз, поскольку может быть только один корневой патч.
/server

Запускает vvvv как сетевой сервер в boygroup.
см. также Boygrouping и MultiBoygrouping
/shutup

Параметр для завершенных проектов: запускает vvvv без окон патчей. Показываются только окна рендеров.Работает только сочетание клавиш ALT-F4.

Использование собственных параметров командной строки

Вы можете установить собственные параметры командной строки и использовать их значения в патчах. Подробнее см. нод Args (VVVV)и его help-патч.

Автоматизация

args.txt

В папке с vvvv.exe создайте файл args.txt. Содержание файла интерпретируется как параметры командной строки. Это простой способ установить параметры. Символ # в начале строки означает, что это строка-комментарий. Комментарии не распознаются в vvvv.

см. оригинальный файл args.txt (который вы удалили после первого запуска, и который наверняка сохранился в исходном архиве vvvv)

Реестр (Registry)

По разным причинам, вам может понадобиться добавить дополнительные опции при запуске файлов .v4p напрямую из системы. Найдите в системном реестре Windows папку
 HKEY_CLASSES_ROOT\VVVV\Shell

и посмотрите, что вы можете сделать.
Исполняемые файлы

Может быть удобно использовать исполняемые .bat файлы .bat files для запуска vvvv.exe с различными параметрами.
Ярлыки

Создайте ярлык для vvvv.exe и откройте его свойства (клик правой кнопкой мыши на ярлыке). В строке Объект(Target) добавьте нужные параметры, сохраните изменения.


***

http://vvvv.org/documentation/вводный-урок

 01. Вводный урок

Вы впервые запустили vvvv и теперь думаете с чего начать, и как сделать хоть что-нибудь полезное на этой штуке. Капельку терпения, и через 20 минут чтения и кликов у вас будет общее представление о vvvv.

На старт. Внимание. Марш.

При первом запуске vvvv автоматически запускается демо-патч текущей версии. Для каждой новой версии разработчики ставят демонстрацию тех или иных новых возможностей. Чтобы демо-патч больше не запускался, просто удалите файл Args.txt из папки vvvv. Закройте vvvv используя стандартное сочетание клавиш windows: ALT+F4. Появится диалоговое окно с предложением сохранить файл. Для начала выберите Don't save and Close (Не сохранять и закрыть).

Запустите vvvv еще раз. Теперь вы должны увидеть пустое серое окно. Это и называется патч Patch. Добро пожаловать в vvvv.

Если читать дальше лень, можно посмотреть видео уроки на английском: Starting vvvv for the first time

Самое главное

Вместо обычного текстового программирования (как в большинстве языков и программных сред), в vvvv используются графические объекты. Создаваемые программы называются патчами. Команды и функции в патчах называются нодами nodes. При помощи мыши вы создаете связи links между нодами, и таким образом появляется структура передачи и обработки данных.

Ноды могут создавать, обрабатывать и выводить данные. Некоторые ноды могут объединять в себе все три процесса одновременно. У нодов может быть несколько входов и выходов, которые обозначаются темно-серыми точками вверху и внизу нода. Входы и выходы называются пины pins. Входы inlets расположены сверху, а выходы outlets расположены снизу.

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

Начиная с версии vvvv45_beta24, в vvvv появился CodeEditor - текстовый редактор на языке C# (С Sharp) - инструмент для создания собственных плагинов (dynamic nodes) классическим программированием кода.

На этом пока хватит теории. Давайте скажем Привет, мир! и начнем следующий урок.


http://vvvv.org/documentation/привет-мир

 02. Привет, мир!

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

Ну что, понеслось? Не совсем.

Итак, перед вами пустое серое окно (если нет, то вернитесь в Вводный урок) и вы думаете, где же все меню и кнопки по которым можно покликать и самому разобраться? А вот где.

Главное меню

Нажмите среднюю кнопку на мыши (или ПРОБЕЛ + правая кнопка мыши, если у вас нет третьей кнопки). Перед вами главное меню. Здесь есть все обычные функции главных меню.

Сейчас создайте новый патч (New Patch или CTRL+P) и обратите внимание, что новый патч появляется рядом с курсором мыши. Это позволяет вам сразу перетащить окно в удобное место на экране.

Вызываем первый нод

Теперь сделайте двойной щелчок левой кнопкой мыши в любом месте в патче (внутри серого окна). Появится серая плашка с мигающим курсором внутри. Так vvvv предлагает ввести название нужного нода. Стоп. Пока мы не знаем ни одного названия. Огласите весь список, пожалуйста.

Кликните правой кнопкой внутри серой плашки с курсором. Должен пооявиться алфавитный список всех нодов. Используя колесо прокрутки на мыши можно просмотреть весь список. Обычную полосу прокрутки можно включить клавишей ПРОБЕЛ.
При наведении курсора на название нода, в большинстве случаев, появляется кратное описание назначения этого нода.

Если сдвинуть курсор мыши влево от списка нодов, то должен появиться другой список. Это те же самые ноды, но разложенные по категориям. Прокрутите этот список вниз до категории Value и кликните на нод + (Value). Внимание! + (Value Spectral) ? Это совсем другая команда!

Личный совет. Повторите вызов списка несколько раз. Эта функция в интерфейсе очень удобна и пользоваться ей будете часто.

Так же можно посмотреть видео урок на английском Video Tutorial.
http://vvvv.org/tiki-index.php?page=Video+Tutorials#Tutorial_2_Moving_and_Scaling_and_Node_creation_

Категории и названия нодов

Название нода состоит из нескольких частей:
Название (Категория Версия1 Версия2 ... ВерсияN)

Номер версии не обязателен и почти не встречается. По настоящему важна привязка нода к конкретной категории (категория указывается в скобках за названием). Так ноды с одинаковым названием, например + , могут относиться к разным категориям (например + (Value), + (String), + (Color), ...).

Value - это все числовые значения
String - это все текстовые блоки
Color - это значения цвета
Transform - это категория управления матрицами трансформаций и т.д.

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

Убедитесь что вы выбрали нужный нод (при наведении курсора на нод появляется всплывающая подсказка с описанием) Здесь нам нужен нод + (Value)

В любой момент вы можете перетащить нод в нужное место в патче, нажав и удерживая левую кнопку мыши на ноде.

Теперь наведите курсор на входные пины, чтобы увидеть установленные значения. По умолчанию оба значения равны нулю. Изменить значение можно двумя способами. Либо кликнуть на входной пин правой кнопкой мыши, ввести значение с клавиатуры и нажать ENTER. Либо нажав и удерживая правую кнопку мыши на значении, провести мышью вверх (большее значение) или вниз (меньшее значение).

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

IOBoxes

Чтобы легче контролировать входные и выходные значения используйте ноды, называющиеся IOBox. В них не выполняется никаких вычислений, а только устанавливаются, хранятся и отображаются текущие значения.
Кликните левой кнопкой в пустое место в патче. В серой плашке с курсором кликните правой кнопкой и промотайте список до IOBox (Value Advanced). Выберите его левым кликом. Этот нод понадобится вам чаще других, поэтому он вынесен в отдельный список. Двойной щелчок правой кнопкой открывает список часто используемых нодов.

Соединяем ноды

Чтобы соединить IOBox с + (Value) наведите курсор на выходной пин IOBox и один раз кликните левой кнопкой нажмите. Обратите внимание, что все пины, к которым можно подсоединить это значение, стали крупнее. Теперь нужно подвести линию ко входному пину + (Value) и еще раз кликнуть левой кнопкой. Если по пути от выходного пина к входному, кликать левой кнопкой в пустые места патча, на линии создаются узлы и можно рисовать связи кривой линией.

Добавьте IOBoxes ко всем пинам + (Value)

Смотрите также Video Tutorial.

Отменить создание связи можно правым щелчком мыши. Удалить существующую связь можно выбрав линию левым кликом (линия должна стать жирной), и нажав DEL или BACKSPACE.

Изменение значений в IOBox влечет изменение значений в выходном и входном пине: кликните в IOBox правой кнопкой и удерживая нажатой правую кнопку, поводите мышью вверх или вниз. Чтобы вернуться к значению по умолчанию, нажмите ALT+ правая кнопка мыши поверх IOBox.

Рендеринг

Как же нас все это приближает к искомому Привет, мир спросите вы? Да никак. Потому что, чтобы видеть на мониторе какой-либо результат, нам нужен рендер. В vvvv есть несколько типов рендера (таким образом vvvv может отображать разные типы данных из одного патча). Дла нашей задачи нам потребуется нод GDI рендера Renderer (GDI).

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

Renderer (GDI) один из тех нодов, к которому привязано дополнительное окно. Как только вы вызываете рендер в патче, дополнительное окно появляется само собой. Чтобы поместить это окно в патч (как показано на скриншоте ниже) кликните левой кнопкой на нод рендера (чтобы сделать его активным) и нажмите ALT+2. Теперь рендер должен отображаться в патче. Вы можете снова сделать его отдельным окном, нажав ALT+1. Чтобы свернуть окно рендера и видеть только название нода нажмите ALT+3. Разные состояния рендера нужны для разных задач. Можно одновременно использовать несколько рендеров, но оставлять видимыми только те, которые нужны.

Чтобы изменить цвет фона в рендере, найдите входной пин Background Color и кликните по нему правой кнопкой. Появится окно управления цветом. Внутри этого окна вы можете:
удерживая правую кнопку и двигая мышью вверх-вниз, изменять яркость brightness,
удерживая правую кнопку и двигая мышью влево-вправо, изменять цвет hue,
нажав CTRL + удерживая правую кнопку и двигая мышью вверх-вниз, изменять насыщенность saturation.
нажав SHIFT + удерживая правую кнопку и двигая мышью вверх-вниз, изменять прозрачность alfa.

Чтобы сохранить изменения цвета, кликните левой кнопкой в любом месте в патче.
Аналогичный результат можно получить использовав связь с IOBox (Color). Управление цветом в IOBox (Color) осуществляется так же, как в приведенном примере.

Чтобы отобразить текст в окне рендера, используйте нод Text (GDI) и соедините его с рендером. Теперь найдите входной пин, отмеченный как Text. Кликните правой кнопкой и введите hello world. Одно условие! Обязательно введите именно hello world. Это очень давняя и уважаемая традиция, относящаяся к изучению любого языка программирования или программы, поэтому не глупите. Уважайте традиции.

Теперь найдите и кликните пин ‘Font’. Во всплывающем меню отображаются все шрифты, установленные в системе. Вы можете выбрать любой понравившийся вам шрифт. В истории нет четких указаний на этот счет. Возможно Lucida Console самый простой выбор.

Что касается кириллических символов. vvvv не разпознает кириллицу, но текстовые ноды распознают. То есть если вы пишите, например, комментарий внутри патча, вам придется писать его на английском или латинскими буквами. Но если вы вводите русский текст в текстовый нод (например, в этом упражнении привет, мир), то текст в рендере будет отображен в зависимости от выбранного шрифта. Стандартные шрифты Windows всегда отображаются корректно. Ура!

Взаимодействие

В заключение, давайте добавим немного интерактива. Допустим, мы хотим, чтобы размер текста зависел от вертикальных движений мыши, при этом минимальный размер текста (курсор на нижней границе экрана) был равен 15, а максимальный (курсор на верхней границе экрана) был равен 50. Поехали.

Получить координаты мыши очень просто. Рендер выводит координаты курсора в отдельные пины. Однако эти значения не в пикселях, а всегда в координатах от (-1,-1)/нижний левый угол до (1,1)/верхний правый, где (0,0) это центр окна рендера.

Обратите внимание, что координаты выводятся при движении курсора ВНУТРИ окна рендера, а не патча. если вы вывели курсор за пределы окна рендера, на выход подаются последние актуальные координаты. Альтернативные координаты можно получить используя ноды Mouse(SystemWindow) и Mouse(SystemGlobal)

А вот привязка Y-координаты к размеру текста это не так просто. Потому что если установить размер текста равный 1, текст просто станет невидимым. А как мы видим 1 это максимально возможное значение координаты. Что уж говорить о нуле или -1. Однако мы можем масштабировать значения координаты Y(-1...1) до нужного нам диапазона 15...50.

Здесь очень кстати оказывается нод Map (Value). Но в этот раз, мы не будем создавать новый нод (вы уже знаете как это делать). Возьмем не нужный нам больше + (Value), дважды кликнем по нему и введем название Map (Value). Обратите внимание, что так как выходныой пин + (Value) и Map (Value) имеют одинаковое название, связь с IOBox не пропала.

Теперь соедините выходной пин Y от рендера с первым пином Map (Value) и выходной пинMap (Value) соедините с пином Size в ноде Text (GDI).

Чтобы достичь необходимого нам результата, установите следующие значения во входных пинах Map (Value):
Source Minimum: -1
Source Maximum: 1
Destination Minimum: 15
Destination Maximum: 50
Mapping: Clamp

Теперь движение курсора вверх-вниз внутри окна рендера должно изменять размер текста в диапазоне 15-50.

Дальнейшие эксперименты

Ваш первый патч закончен и можно отдохнуть. Если же вы чувствуете, что сейчас останавливаться нельзя и хотите продолжить, рекомендуем поиграть с нодами категории GDI или посмотреть их help-патчи Где искать помощь.

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

Посмотрите еще видео уроки здесь alternative 'Hello World' tutorial, и здесь, more advanced.

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


http://vvvv.org/documentation/ваш-друг-инспектор

Ваш друг Инспектор

Этот урок предназначен для тех, кто уже прошел упражнения из урока: Привет, мир!

Kottan ermittelt

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

CTRL+I открывает окно Инспектора. Кликнув левой кнопкой по любому ноду в патче, в Инспекторе вы увидите все возможные настройки и значения всех пинов этого нода.

Главное правило: Всегда (всегда) держите как минимум одно окно Инспектора открытым. Поместите его на экране туда, где оно не будет вам мешать и оставьте там открытым. Одного взгляда в Инспектор бывает достаточно чтобы ускорить поиск и исправление ошибок в разы.

И это правда! Это не инспектор ДПС! Это очень полезный и нужный инструмент. Часто, единственно возможный инструмент.

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

Далее следуют входные и выходные пины. Вы можете изменить их значения правой кнопкой мыши (так же как значения пинов напрямую в ноде).

В заголовке Инспектора отображается название выбранного нода. Сразу под ним короткая подсказка (такая же, как если выбирать нод из всплывающего списка).

Управление несколькими нодами одновременно

Теперь создайте 3 нодаIOBox (Color). Самый быстрый способ, сделать один нод, выбрать его левой кнопкой мыши, и затем дважды нажать CTRL+D (= дублировать). Предположим вы хотите изменить цвет одновременно в трех нодах. Вместо того, чтобы изменять цвет в каждом ноде, выделите их все вместе (обведите их, удерживая левую кнопку мыши, так же как обычное выделение в windows).

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

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

Начиная с vvvv45_beta24 по умолчанию открывается только один Инспектор, при повторном нажатии CTRL+I, открытый Инспектор просто переносится поверх остальных окон. Чтобы вызвать еще одного Инспектора, нажмите SHIFT+CTRL+I

Когда вы выбираете тот или иной нод, во всех открытых окнах Инспектора отображаются пины выбранного нода. Обратите внимание на кнопку Attach to Selection вверхней части каждого Инспектора. Нажав эту кнопку вы привязываете активное окно Инспектора к выбранному ноду. Если вы выберите другой нод, привязанный Инспектор по прежнему будет показывать значения того нода, к которому он привязан.

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

Просмотр слайсов (Slices) в пине

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

В окне Инспектора вы видите 3 колонки:

В левой показаны текущие значения пинов, в правой - названия этих пинов. Между ними находится узкая серая колонка, в которой против некоторых значений вы можете увидить стрелку (>).

Одна стрелка (>) означает, что этот пин потенциально может иметь множество значений. Если вы видите двойную стрелку (>>), это означает, что в этом пине УЖЕ установлено множественное значение.

Если же стрелки нет вообще, значит этот пин может иметь только одно значение.

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

Забегая вперед, добавлю, что когда вы видите таблицу множества значений, прямо над ней есть небольшое поле (slices of имя нода) где указано количество слайсов в пине. Кликнув в это поле, можно изменить количество слайсов вручную.

Так же можно посмотреть видео урок об Инспекторе video tutorial

Теперь переходим к следующему уроку Распределяем данные и становимся профессиональным патчером.


http://vvvv.org/documentation/спреды

Спреды

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

Базовое понимание спредов изложено в уроках Распределяем данные и Ударим спредом по бездорожью. Здесь подробнее рассказывается о таких особенностях спредов, как:

О спредах и слайсах
Пустые спреды - Empty Spreads
Корзина - BinSize
Ноды категории Spread


http://vvvv.org/documentation/распределяем-данные

Распределяем данные

Этот урок подразумевает, что вы знакомы с упражнениями из урока 2: Ваш друг Инспектор.

Распределяем данные

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

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

Список состоит из строк

Прежде всего. Слово Spread означает список. Всего лишь упорядоченный список. Будь то values, strings, colors,... а каждая строка в этом списке называется Slice.

Вы уже знаете, что каждый пин относится к тому или иному типу данных vvvv (таких как числа, строки, цвет, списки, ноды). О чем до сих пор не упоминалось, так это о том, что пин может передавать не одно значение, а целый список значений.

• в традиционном программировании это кажется называется массив

Генераторы спредов

Вы можете выяснить количество слайсов в пине просто наведя курсор мыши на пин. Создайте LinearSpread (Spreads) и наведите курсор на его выходной пин. Ничего особенного. Пока. Теперь установите значение 5 для входного пина SpreadCount. Снова наведите курсор на выходной пин. Вы должны увидеть (5) после значением.

Этот не хитрый прием показывает, что даже если у вас 5 слайсов, в подсказке вы увидите только один. Это хорошо. Предположим, что у вас не 5, а 9874 слайса. Вы вряд ли заходите увидеть все сразу во всплывающей подсказке. И конечно есть другой способ увидеть все слайсы спреда. Помните финал прошлого урока? В Инспекторе вы видите две стрелки у выходного пина, кликнув на них, вы увидите весь спред в правой колонке.

Существует несколько нодов аналогичных LinearSpread (Spreads), они генерируют спреды в различных техниках. Рекомендуем вам пробежаться по help-патчам (см.helppatches) для CircularSpread (Spreads), RandomSpread (Spreads) и I (Spreads).

См. также GaussianSpread (Spreads), Resample (Spreads). По умолчанию в категории Spreads подразумеваются числовые спреды. Однако аналогичные ноды существуют для категорий String, Color и некоторых других.
Пользуемся спредами

Смотрите шире. Если во входной пин приходит 5 строк, как нод интерпретирует эти 5 строк? Сойздайте Renderer (GDI) и подключите к нему Point (GDI). В результате вы увидите + в центре окна рендера (по умолчанию координаты X и Y равны нулю). Теперь доваьте LinearSpread (Spreads) к входному пину X Point (GDI) и задайте SpreadCount равным 5.

Вы видите как умно Point (GDI) интерпретирует спред. Он просто повторяет себя 5 раз, поскольку получает список из 5 значений, понимая их как 5 точек по координате X. Круто? А что бы вы сделали на месте точки?
Так, теперь посмотрим, что будет если мы подсоединим спред с другим количеством слайсов к другому пину. Сдублируйте LinearSpread (Spreads), но установите SpreadCount = 2 и подключите его к входному пину Y Point (GDI). Получилось:

Понимаете? Point (GDI) получает 5 значений по оси X и 2 значения по оси Y. И вот что происходит:
когда нод отрисовывает первый +, он забирает первый слайс по оси X и первый слайс по оси Y
когда нод отрисовывает второй +, он забирает второй слайс по оси X и второй слайс по оси Y
когда нод отрисовывает третий +, он забирает третий слайс по оси X и поскольку по оси Y нет новых слайсов, снова повторяет первый слайс
...

Вот так. Любой нод обрабатывает спреды точно таким же образом. Конечно, если входной пин в принципе понимает спреды. Если пин не поддерживает спреды, то из всего спреда будет использован только первый слайс. Чтобы выяснить понимает пин спреды или нет, загляните в Инспектор. Значок > или >> между значением и названием пина, показывает, что пин поддерживает спреды.

Видео уроки на английском о спредах. the video tutorial.

Доступ к отдельным слайсам

В большинстве случаев вам не понадобится доступ к отдельным слайсам, поскольку большинство нодов обрабатывают спреды целиком. Но есть и масса причин, чтобы управлять отдельными слайсами. Предположим, нам нужно вручную управлять третьим слайсом из нашего первого LinearSpread (Spreads). Для этого сначала ставим SetSlice (Spreads) как показано ниже.

Нумерация слайсов начинается с 0

Крайний правый вход SetSlice (Spreads) устанавливает номер слайса, который мы хотим изменить.
Поскольку нумерация слайсов начинается с 0, а мы хотим изменить третий слайс, то ставим значение = 2. Второй входной пин задает значение для этого слайса. Поиграйте с этим значением и увидите, что третий + движется независимо от остальных.

А теперь взгляните сюда:

При помощи I (Spreads) мы говорим SetSlice (Spreads), что мы хотим управлять не только третьим слайсом, но всеми слайсами с первого по третий. И еще одним LinearSpread (Spreads) мы создаем эти 3 значения...

И так далее.

Когда кажется что ничего не получится, спред приходит на помощь.

Дальнейшие эксперименты

В этом месте мы так же рекомендуем взглянуть на help-патчи для: GetSlice (Spreads), Stallone (Spreads), Queue (Spreads) и Cons (Spreads).

А теперь нам пора рассказать кое-что еще Подробнее об IOBoxes


http://vvvv.org/documentation/о-спредах-и-слайсах

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


http://vvvv.org/documentation/пустые-спреды

Пустые спреды

Что такое пустые спреды?

Возможно работать с пустыми спредами.

 Пустое значение это отсутствие какого-либо значения, поэтому если во входе есть пустое значение, в выходе так же будет пустое значение. Например, 1 + O = O.

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

Пустые спреды обозначаются специальным символом O.

 То же самое имеется в виду, когда кто-нибудь пишет на форуме "NIL"

Как избежать пустых спредов

В большинстве случаев нужно исключить O, потому что пустые значения сбрасывают последующие данные в патче.

 В текущем релизе vvvv есть специальный модуль "AvoidNIL (Spreads)", в папке ../modules/vvvv group/Spreads.
 Так же подходящий модуль "ReplaceEmpty (Value)" можно найти в репозитарии mobules/enos/. К сожалению он не соответствует vvvv naming convention?, поэтому его нет в релизе.
 Так же вы можете найти несколько альтернативных модулей.

Если ваш спред состоит из одного слайса, можно использовать нод + (Value) Spectral?, в таком случае сумма пустого спреда будет = 0.0000

Как создавать пустые спреды

Иногда бывает удобно использовать O значения. Создать пустое значение не сложно.

Обратите внимание:

 в отличие от других значений, спредов, строк или цветов, пустые значения O во входящих пинах нода НЕ СОХРАНЯЕТСЯ в патче. Поэтому если вам постоянно нужно пустое значение O , сохраните привязку к ноду Select. Иначе при следующем запуске патча, во входящих пинах будут установлены значения по умолчанию.


http://vvvv.org/documentation/корзина

Корзина

У нодов категории Spectral, а так же некоторых нодов категории Spread, есть пин BinSize (досл. Размер Корзины). Этот пин устанавливает количество слайсов в выходном спреде. Например, BinSize = 2 означает, что входящий спред будет разделен на две корзины, каждая из которых будет обсчитана независимо. Отметим, что BinSize это не разделитель входящего спреда, поскольку если потребуется, слайсы входящего спреда будут повторяться (как в ситуациях, со входом спредов с разным количеством ячеек).

Например

+ (Value Spectral) суммирует все слайсы входящего спреда и формирует новый спред.

"BinSize =4" что выход будет состоять из четырех слайсов (0,1,2,3), а входящий спред будет разделен на четыре корзины.

Сумма первых четырех слайсов (0,1,2,3) будет первым слайсом нового спреда.

 Сумма следующий слайсов (4,5,6,7) будет вторым слайсом нового спреда и т.д.
Здесь действует то же правило распределения недостающих слайсов, что подробно описано в уроке Ударим спредом по бездорожью.

По умолчанию "BinSize =-1", что означает, что "BinSize = Все слайсы входящего спреда отправляются в одну корзину ".

 В результате выходной спред состоит из одного слайса.

Упражнения

см. пользовательский патч BinSizeTutorial с комментариями на английском.
Совет

В большинстве случаев пин BinSize так же принимает и обрабатывает спреды, что позволяет прописывать разнообразные настройки обработки спредов.


http://vvvv.org/documentation/ноды-категории-spread

Ноды категории Spread

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

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

Полный список этих нодов предстален в категории Spread во всплывающем списке нодов.

LinearSpread

LinearSpread один из самых простых спредов в vvvv. Он создает спред значений, линейно распределенных в заданном диапазоне. Скриншот сделан из help-патча LinearSpread.

CircularSpread

CircularSpread так же очень простой спред. Он распределяет значения для координат X и Y по кругу или овалу. Он позволяет быстро создавать круговые орнаменты, и избавляет от необходимости считать синусы и косинусы при распределении объектов по окружности.

TypoSpread

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

BarSpread
BezierSpread
GaussianSpread
I
PeakSpread
RandomSpread

TODO? All spreads: BarSpread (Spreads) , BezierSpread (Spreads) , CircularSpread (Spreads) , GaussianSpread (Spreads) , I (Spreads) , PeakSpread (Spreads) , Queue (Spreads) , RandomSpread (Spreads) , RingBuffer (Spreads) , SevenSegment (Spreads) , TypoSpread (Spreads)

Ноды подкатегории Spectral

Подкатегория Spectral объединяет специальные ноды, которые позволяют легко высчитывать одиночные значения из больших спредов сзначений. Типичный пример - нахождение таких значений как среднее значение, ширина, минимальное или максимальное значение спреда. Например, нод Bounds (Spectral) одновременно вычисляет среднее значение всего сперда, разницу между отдельными слайсами, минимальное и максимальное значения слайсов. Все эти данные вы видите в один момент и можете использовать все сразу или по отдельности.

Ноды Spectral так же полезны для некоторых операций с текстовыми нодами String: например, спектральное сложение текста объединяет весь текстовый спред в один слайс:

Stallone

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

Например, разделим 5 слайсов из 1 спреда на 5 спредов по 1 слайсу:

Обратное действие выполняется настройками входящих и выходящих пинов, и пина SliceCount:

В пине SpreadCount вы устанавливаете, сколько слайсов будет создано в выходящих спредах. Если не достаточно входящих слайсов, Stallone вернется в начало спреда и просто повторит недостающие значения (как и обычно при соединении спредов с разным количеством слайсов).
Режимы сортировки в ноде Stallone

Stallone собирает все спреды из всех входов в один большой спред, который затем разделяется на на соответствующие спреды для выходов. Количество слайсов в "большом спреде" это производная от количества входов и количества слайсов в каждом входе (кроме случаев, когда количество слайсов в одном из входных пинов = 0 - тогда он так же будет равен 0)

Входящие слайсы собираются одним из следующих способов:
Pin Sort Mode Сначала берутся все слайсы из первого пина, затем все слайсы второго пина и т.д.
Slice Sort Mode Сначала берутся все первые слайсы из всех пинов, затем все вторые слайсы всех пинов и т.д.

Выходящие слайсы распределяются тем же способом:
_Pin Sort mode_ Первый набор слайсов идет в первый пин, второй набо слайсов идет во второй пин и т.д.
Slice Sort mode Первый набор слайсов распределяется как первый слайс для каждого выходящего пина, второй набор - как второй слайс и т.д.

Другие ноды категории Spread
Count
GetSlice
SetSlice, InsertSlice
Cons, CDR, CAR, Shift
Resample, Scroll
Cross, SwapDim
Select, Sort, Reverse
Buffer, RingBuffer, Queue


http://vvvv.org/documentation/подробнее-об-ioboxes

Подробнее об IOBoxes

Этот урок подразусевает, что вы уже выполнили упражнения из урока 3: Распределяем данные.
IOBoxes для разных типов данных

В уроке Привет, мир! мы уже подружились с двойным щелчком правой кнопкой мыши и попробовали IOBox (Value Advanced) для числовых значений. Но существуют и другие категории нода IOBox для других типов данных:

IOBox (String) любые текстовые данные
IOBox (Color) цветом
IOBox (Enumerations) списки
IOBox (Node) универсальный бокс данных различных нодов

Если вам итересно, аббревиатура IO в IOBox означает: Вход/Выход (Input/Output). Эти ноды одинаково хороши для обеих задач. Как для управления данными для работы патчей, так и для просмотра результатов действий патча.
Общие черты

Теперь сделайте следующее: Выделите все IOBoxes и наведите курсор на нижний или правый край одного из них. Курсор должен измениться, указывая, что теперь вы можете менять размер. Увеличьте ноды, так же как обычно окна в Windows, удерживая левую кнопку мыши. Все ноды увеличились одновременно. Если удерживать CTRL во время увеличения, размер будет меняться только в одном направлении.

Кроме IOBox (Node) (о нем поговорим отдельно) все IOBoxes имеют общие функции. Выделите четыре нода (кроме IOBox (Node)) и посмотрите в Инспектор.

Здесь вы можете поменять, например, размер и вид шрифта в IOBoxes. Но гораздо интереснее для нас пины Columns(Столбцы), Rows(Строки) и Pages(Страницы). Скажем, нам нужно 3 строки. Похоже в боксах появилось место еще для 2х слайсов. Но пока мы их не видим, потому что пин SliceCount Mode установлен на значение Input. Это значит, что IOBox подстраивает отображение количества слайсов под количество слайсов во входном пине. Поскольку к нашим IOBoxes ничего не подключено, количество слайсов по умолчанию = 1.

Измените SliceCount Mode на ColsRowsPages и появится еще 2 слайса, позволяющих редактировать каждый независимо друг от друга. Наведите курсор на выходной пин IOBoxes, и во всплывающей подсказке вы должны увидеть (3) после значения пина. Теперь IOBox действительно выдает 3 слайса на выход.

В Инспекторе активируйте значения Show SliceIndex и Show Grid, кликнув на них правой кнопкой мыши, и добавьте несколько столбцов и строк и страниц.

Вы заметите, что столбцы и строки видимы, а страницы нет. Но, если навести курсор на выходной пин, то окажется, что IOBox учел все слайсы, и на других страницах. Это происходит потому что, когда IOBox установлен в режим ColsRowsPages, количество слайсов считается как Колонки*Строки*Страницы. Чтобы увидеть значения на других страницах, настройте значение SliceOffset. Номер слайса отображается в начале кажого слайса, так что ориентироваться в спреде всегда удобно.

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

Когда вы используете IOBox для контроля выходных данных, можно оставить значение Input для пина SliceCount Mode. В таком случае, в Columns и Rows вы устанавливаете количество видимых вам слайсов.

На скриншоте показан IOBox (Color), получающий 100 слайсов случайных цветов и отображающий их в таблице из 4 колонок и 25 строк.

Есть 2 видео урока на английском n creating IOBoxes, и entering some data.
Слайдеры, Кнопки, Списки,...

Если вы уже потратили весь день на поиски кнопок и слайдеров, знайте, что IOBoxes ваши друзья и в этом случае.

Выделите только IOBox (Value Advanced) и посмотрите в Инспектор. У этого бокса больше настроек, чем у других. Прозвенел звонок и сейчас мы не успеем подробно объяснить все настройки. Вы найдете ответы самостоятельно в help-патчах Где искать помощь для IOBoxes.

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


http://vvvv.org/documentation/ударим-спредом-по-бездорожью

Ударим Спредом по бездорожью

Этот урок подразумевает, что вы выполнили упражнения из урока 4: Подробнее об IOBoxes.

Повторение - мать учения!

Теперь, когда мы разобрались с IOBoxes, пришло время еще раз взглянуть на то, как можно работать со спредами.

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

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

И правда все очень просто.

Давайте просто взглянем на следующие примеры. Все должно встать на свои места.
Удобство использования нескольких спредов

Предположим, вам понадобился RoundRect (GDI), линейно распределенный по оси X, и теперь вы хотите, чтобы квадраты были поочередно зеленого и красного цвета.

А теперь попробуем сделать сетку из 25 квадратов 5х5? Первое что приходит в голову, просто подцепить еще один LinearSpread (Spreads) ко входу Y на RoundRect (GDI). Но вот что получится:

RoundRect (GDI) по-прежнему рисует себя только 5 раз. Это проиходит потому что максимальное количество слайсов в спреде = 5. Слайсы по оси X совпадают со слайсами по оси Y.

Благо в vvvv уже есть нод, специально написанный для создания сетчатых структур. Поставьте Cross (2D) так же, как показано на скриншоте.

Cross (2D) генерирует все возможные сочетания входных слайсов и выдает по 25 слайсов для осей X и Y. Обратите внимание, что расстояние между квадратами можно регулировать вторым входом в LinearSpread (Spreads).

В заключение давайте снова добавим немного интерактива. Скажем, мы хотим знать расстояние от каждого квадрата до курсора мышки. И снова находится нод для подобных вещей: Points2Vector (2D) считает расстояние между 2 точками. Соедините ноды как показано ниже и подумайте, чо означают эти 25 цифр в нижнем справа IOBox.

Верно. Points2Vector (2D) показывает нам расстояние от курсора для всех 25 квадратов. Теперь масштабируем эти расстояния до разумных размеров и привязываем к размеру RoundRect (GDI). Это и называется мультимедиа.

Теперь увеличьте количество слайсов в LinearSpread (Spreads) и вы все поймете. Не важно, сколько у вас объектов на экране - патч остается таким же простым как в самом начале.

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


http://vvvv.org/documentation/деформация-объектов

Деформация объектов

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

здесь и далее:

 Блендинг - функции наложения изображений и объектов друг на друга с разными настройками прозрачности, сочетания и обработки цветов.
 Морфинг - любая деформация трехмерных моделей и объектов по заданным параметрам. vvvv обладает массой инструментов интерактивной деформации объектов (будь то загружаемые модели .x или .dae, встроенные модели grid, box и т.д., или объекты созданные в патчах).

Существует 2 способа морфинга:

 медленный способ, основанный на расчете в процессоре Морфинг объектов CPU (вполне пристойно для простых вещей)
https://vvvv.org/documentation/морфинг-объектов-cpu

 быстрый способ, основанный на расчете в видеокарте (для любых других и сложных вещей)
вариант 1: используя простой вертексный шейдер
https://vvvv.org/documentation/морфинг-объектов-gpu
вариант 2: используя advanced vertex shading?
https://vvvv.org/documentation/tutorial-geometry-morphing-gpu2

для понимания основ морфинга, лучше начать с простого способа Морфинг объектов CPU!
https://vvvv.org/documentation/морфинг-объектов-cpu

Не зацикливайтесь на скучных скриншотах! Загрузите собственные модели через нод XFile (EX9.Geometry Load) и получите больше удовольствия во время упражнений!!
https://vvvv.org/documentation/xfile-(ex9.geometry-load)


http://vvvv.org/documentation/пиксельные-шейдеры-для-новичков

Пиксельные шейдеры для новичков

01 Введение

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

Пиксельные шейдеры гораздо легче для понимания, чем вертексные (вершинные) шейдеры, поэтому сейчас это однозначно правильный выбор для вас.

01.1 Зачем мне использовать шейдеры?

Прежде всего из-за производительности: шейдеры очень легкие быстрые. Эти небольшие программки запускаются «независимо» от остального патча, прямо в вашей видеокарте. Но самое главное: они дают почти безграничные возможности визуализации. Можно сделать столько всего!

01.2 Как поставить шейдер в ваш патч

Шейдеры (все шейдеры объединены в категорию Эффекты – EX9.Effect) – это небольшие программы, написанные на языке (HLSL "high level shader language") но представленные в vvvv как обычные ноды. Главное отличие от обычных нодов в том, что если вы кликните правой кнопкой мыши по ноду эффекта, откроется дополнительное окно с кодом шейдера. Это встроенный в vvvv редактор языка HLSL, вы можете вносить изменения, не останавливая работу патча!

В пакет vvvv включено несколько шейдеров (это файлы с разрешением .fx) в папке \effects. Если вы пишите новый шейдер или скачиваете его с сайта, просто скопируйте файл в эту папку. После поиска обновлений (Alt-E или Rescan for Externals в меню ), он будет доступен через всплывающий список нодов. Шейдер можно открыть в патче, как и любой другой нод, через всплывающий список, набирая название или сочетанием Shift+Ctrl+O

Все шейдеры, которые мы сделаем в этом упражнении, основаны на файле шейдера «template.fx» (он поэтому так и называется – «шаблон»), потому что это хорошая отправная точка для всех новых шейдеров.

Для использования примеров из этого упражнения вам нужна видеокарта, поддерживающая пиксельные шейдеры 2.0 (PS 2.0)! Уже более 5 лет все более-менее нормальные видеокарты поддерживают эти шейдеры.

01.3 Четыре основные части в файле шейдера

1.  PARAMETERS  здесь задаются входные пины и значения параметров
2.  VERTEXSHADERS  вертексные (вершинные) эффекты
3.  PIXELSHADERS  пиксельные эффекты (сейчас мы будем работать в основном с этой частью)
4.  TECHNIQUES  задается техника обработки и поддерживаемая версия шейдера

Несколько важных замечаний, прежде чем мы начнем писать свой первый шейдер:
старайтесь делать код как можно более лаконичным, например, вместо if (col.r > threshold) col.r = 1, пишите col.r = (col.r > threshold)

часто лучшие результаты достигаются двойным рендером и двумя шейдерами, например размытие (blur) лучше сделать сначала горизонтальным блюром, а получившийся результат обработать вертикальным блюром.

Но хватит теории! Приступаем к написанию вашего первого шейдера! И не забудьте выкладывать на сайте ваши новые крутые шейдеры!

Перед началом упражнений, скачайте пакет патчей и шейдеров, используемых в них:
pixelshader_for_newbies_20050922.zip
http://legacy.vvvv.org/tiki-download_file.php?fileId=607

02 "Привет розовый мир"
03 thresholding Colors?
04 Difference between 2 Textures - aka good for Tracking?
05 lovely Neighbours - let's do a simple Blur?
06 more lovely Neighbours - Kernel Filters?
07 Textur Coordinates & Textur Lookup?
08 Feedback & Cellular Automata - Game of Life?

ссылки:
john horton conway's "game of life"
Prof. Miszalok / TFH Berlin, FB Informatik / en and de

Наберите в google "morphologic filter" или "kernel filters" и найдете много подходящих сайтов

если вы хотите запостить код шейдера на форуме, не забудьте заменить < сочетанием ~lt~ ,а > сочетанием ~gt~


http://vvvv.org/documentation/как-проецировать-на-объемные-поверхности

Как проецировать на объемные поверхности

Эта страница посвящена решению проблем, связанных с проекцией на объемные поверхности, самым простым способом.

Ключевые моменты:
Проекция в трех измерениях
Проекция на здания и архитектурные сооружения
Видео мэппинг
Компенсация искажений
Дополненная реальность
Настройка и калиборовка камер
Распознавание объектов

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

Введение
Проекция на плоскую поверхность
Проекция на сложные объемные поверхности
Сведение виртуальной и реальной проекции вручную
Виртуальная копия реальной сцены
Привязываем плоскую текстуру к поверхности
Свет и тень
Иллюзия объема
Ось виртуальной камеры не совпадает с реальным положением проектора
Проекция на две стороны здания с одной перспективой
Панорамная проекция в 360°

Введение

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

В кино, основанном на компьютерных спецэффектах и графике, термины "совмещение" ("match moving") или "трекинг"("camera tracking") описывают проблему точного совмещения реально отснятых сцен с добавленной позже компьютерной графикой. Для решения таких задач, существует масса специальных программ, например, (boujou, 3d equalizer, ...), все они облегчают жизнь создателям визуальных эффектов.

Для создания дополненной реальности (совмещение транслируемой сцены с компьютерной графикой в реальном времени) используется, например, ARToolKit (в пакете vvvv есть встроенный плагин ARTK+Tracker?. А компании вроде domeprojection предлагают проектора с функцией автокалибровки. Но поскольку в vvvv нет нодов, позволяющих создать что-то вроде этого или даже этого, ручная настройка совмещения проекции со статичными объектами все еще остается актуальным решением.

Проекция на плоскую поверхность

Если вы проецируете на плоскую поверхность, например на стену, и проектор расположен под значительным углом относительно стены, вы видите искаженное изображение - трапецию. Используя нод Homography (Transform 2d) вы легко можете корректировать искажение картинки - в результате изображение на поверхности кажется правильным.

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

Сведение виртуальной и реальной проекции вручную

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

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

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

По тому же принципу устроены Растянутая навигация и Объемное оформление интерьеров.

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

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

Виртуальная копия реальной сцены

Создание виртуальной копии реальной инсталляции состоит из 3х шагов:
определение системы координат для реальных объектов, чтобы совместить их с AxisAndGrid (EX9) в vvvv.

создание 3х мерной модели поверхности для проекции и размещение ее в сцене, в соответствии с выбранной системой координат: 3d модель может быть создана в специальных программах или составлена из примитивов, встроенных в vvvv. Для ручного совмещения 3d модели с реальным объектом лучше всего использовать модуль PointEditor (3D Persistent), который позволяет деформировать отдельные фрагменты моделей.
измерение расстояния, угла наклона и характеристик оптики проектора: задайте эти параметры в модуле Projector (EX9). В инструкциях к проекторам есть таблицы, аналогичные приведенной ниже, в которых описаны характеристики оптики: проекционные расстояния и углы смещения объектива.

Сейчас у вас уже есть базовый проект для совмещения виртуальной сцены с реальной поверхностью. Потратьте время на настройку параметров модуля Projector (EX9) или вручную настраивайте 3d модель, используя модуль PointEditor (3D Persistent), до тех пор пока не получите подходящее совпадение изображения с реальной поверхностью.

ProjectionMapping_SimpleSetup.v4p (27.74 Kb)
http://vvvv.org/tiki-download_file.php?fileId=1842

Привязываем плоскую текстуру к поверхности

Используя этот простой патч, вы можете повторить эффекты итальянской студии dotdotdot из их проекта Valcucine’s skyscraper. Цель подобных инсталляций - "привязать" проецируемое изображение к поверхности так, чтобы изображение полностью повторяло физические свойства объекта, так как если бы объект был покрыт движущимся изображением или текстурой. В таких случаях текстура смотрится одинаково, независимо от места с которого вы смотрите на объект/скульптуру/поверхность, и независимо от того как установлен проектор.

Просчитав 3d-модель объекта в виртуальном пространстве в том же ракурсе, и с теми же характеристиками оптики, что и в реальной инсталляции, вы в точности совместите ваше изображение с реальным объектом. Любые плоские текстуры на 3d модели (в нашем примере - черные кресты на белом фоне) не будут казаться искаженными, независимо от точки зрения на объект.
Свет и тень

Восприятие любых эффектов света или тени, которые вы применяете к виртуальной модели, напрямую зависит от особенностей того объекта, на который проецируется изображение. Свет и тень в данном случае ведут себя точно так же, как плоские текстуры. Вы можете легко повторить эффекты из инсталляций Lightstrive или Pablo Valbuena Augmented Sculpture Series.
Иллюзия объема

Всем нам нравятся инсталляции с иллюзией объема, такие как проекция на The Hague City Hall, AntiVJs проекция на Nuit Blanche Bruxelles или проекции easyweb. Эффекты с иллюзией объема имеют одно важное ограничение, которое вы должны учитывать.

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

Но это не проблема, в большинстве случаев наши мозги, испорченные кино и телевизором, легко справляются с такими условностями, поскольку мы смотрим на проекцию с довольно большого расстояния, которое компенсирует отклонения от оси проектора. Получается тот же эффект, что и с работами John Beever.

Ось виртуальной камеры не совпадает с реальным положением проектора

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

В таких случаях вам придется дважды обработать картинку (сделать 2 рендера):
в первом рендере вы показываете сцену в желаемой перспективе
во втором рендере вы привязываетесь к реальным объектам под тем углом, который физически возможен, и меняя настройки виртуальной камеры совмещаете результат первого рендера с существующей объемной поверхностью.

Примеры:

Проекция на две стороны здания с одной перспективой

Одной из задач этой инсталляции было создать иллюзию объема на фасаде FH Schwabisch Gmund.

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

Примерно вот так выглядит патч для такой проекции:
ProjectionMapping_2ProjectorSetup.zip (12.11 Kb)
http://vvvv.org/tiki-download_file.php?fileId=1843

Иллюстрация показывает, что иллюзия объема работает только при определенном положении зрителей. Другие примеры, рассмотреные на пятидневном семинаре в Schwabisch Gmund, можно найти здесь.

Панорамная проекция в 360°

При создании панорамной проекции в 360°, виртуальные камеры должны находиться в одной точке, с разным углом поворота. Вы можете сделать это в виртуальной сцене, но физически не сможете разместить несколько проекторов в одной точке.

Подробный патч для создания панорамной проекции 360°, включая мягкие шторки на проекторах, качайте здесь:
small 360 degree setup.zip (35.95 Kb)
http://vvvv.org/tiki-download_file.php?fileId=1698

*

go to begin