VVVV CREARES
VVVV CREARES
Een project als dit komt niet tot stand zonder de steun en hulp van anderen. Bij deze wil ik hen graag bedanken. Eerst en vooral wil ik mijn mentor, Pedro Mari, alsook de volledige vvvv community bedanken voor alle hulp. Zonder de hulpvaardigheid van alle vvvv gebruikers had ik dit project nooit kunnen realiseren. Ook zou ik graag mijn vriendin willen bedanken voor alle steun. Zonder haar was dit project nooit gelukt.
INHOUD 9 Introductie 11 Kenmerken 11 Grafisch programmeren 11 Tekstueel programmeren 12 Stabiliteit 12 Spreads 13 Boygrouping 13 Vvvv uitbreiden 14 Animatie 14 3D Rendering 15 Audio 15 Physics simulatie 16 Video tracking en effecten 16 Communicatie met externe apparaten
19 Theoretisch 19 Basis uitleg 19 Renderer (EX9) 20 Primitives (DX9) 20 Textures 21 Spreads 22 IO Boxes 22 Subpatches 23 S en R nodes 23 Coรถrdinatensys-teem 24 3D modellen in vvvv 25 Shaders (effecten) 26 Loops en feedback 26 Logica 27 Rode nodes en andere errors 27 Externe apparaten
29 Praktisch 29 31 31 32 33
User interface Soorten nodes Waardes aanpassen Herr Inspektor Patches lezen
35 Creaties 51 Links 53 Bronnen
7
8
creares Š 2013 // Jonas Vansieleghem
Laten we beginnen met een korte
introductie van het programma vvvv
Het programma vvvv is een krachtige grafische programmeeromgeving dat voor verschillende doeleinden kan worden gebruikt. Het is ontworpen om de behandeling van grote mediaomgevingen, real-time motion graphics, audio en video te vergemakkelijken. Vvvv is erg geschikt voor verschillende taken uit te voeren waarbij veel gebruikte mediatypes zoals: video, audio, 3D-animatie, het internet en interactieve multi-user interacties gebruikt worden. Het is perfect mogelijk om met dit ene programma in realtime met verschillende media types tegelijkertijd te werken.
Het is niet mogelijk om vvvv applicaties (ook wel patches genoemd) te laten draaien in een web browser. Ook is het niet mogelijk om patches om te zetten naar op zichzelf draaiende .exe bestanden. Om vvvv patches te runnen heb je altijd het programma zelf nodig. Vvvv is gratis voor niet-commercieel gebruik, je kan het downloaden op de website vvvv.org. Voor commercieel gebruik heb je een betaalde licentie nodig.
1. Microsoft DirectX
Omdat vvvv het krachtige Microsoft DirectX1 gebruikt is het enkel mogelijk om vvvv op Windows te draaien. Indien je het programma op een Mac wilt gebruiken ben je genoodzaakt om Windows te runnen via Bootcamp.
Microsoft DirectX is een verzameling van API’s (Application Programming Interface) die het voor programmeurs eenvoudiger maakt computerspellen te programmeren op Windows. DirectX en de bijbehorende SDK zijn gratis verkrijgbaar bij producent Microsoft.
9
creares © 2013 // Jonas Vansieleghem
Hieronder volgen de voornaamste
KENMERKEN van vvvv
Grafisch programmeren
Tekstueel programmeren
De grafische programmeertaal van vvvv is vergelijkbaar met die van software zoals Maximum, Pd, Reaktor of Simulink. Afzonderlijke acties of functies worden weergegeven als nodes (knooppunten). Verbindingen tussen nodes worden getrokken en aangepast met slechts enkele muisklikken.
Voor de situaties waarbij grafisch programmeren zijn beperkingen heeft biedt vvvv de mogelijkheid om met behulp van de programmeertaal C#1 de code tekstueel aan te passen.
Na verloop van tijd ontstaat op deze manier een netwerk van nodes, input – en output data. Zo’n netwerk van nodes en data wordt een patch genoemd. Een vvvv applicatie of patch is dus een netwerk van verbindingen waarbij input data verwerkt wordt d.mv. nodes (functies/ bewerkingen). Die data kan dan uiteindelijk gerenderd worden.
Tekstuele code kan worden geschreven binnen vvvv’s codeeditor die functies, zoals syntax-highlighting en code completion biedt. Met externe IDE’s (Integrated Development Environment) zoals MonoDevelop, SharpDevelop of Visual Studio is het mogelijk om de code te inspecteren en bugs te traceren.
1. C#
Terwijl veel andere programmeertalen verschillende modi hebben, één voor het ontwikkelen en één voor de runtime, heeft vvvv slechts één modus – runtime. Met andere woorden, dit programma is constant data aan het berekenen en beelden aan het renderen terwijl je aan het ontwikkelen bent. Dit programma is dus real-time.
C# is een objectgeoriënteerde programmeertaal ontwikkeld door Microsoft als deel van het .NET-initiatief. C# lijkt qua syntaxis en semantiek sterk op Java, terwijl vooral in de bibliotheken en programmeeromgeving een sterke invloed van Object Pascal en Delphi te zien is. C# is samen met het .NETframework geïntroduceerd, en wordt beschouwd als de belangrijkste taal voor dat platform.
11
VVVV // 2. Kenmerken
Stabiliteit
Spreads
In de loop der jaren heeft vvvv bewezen erg stabiel te zijn. Net als de meeste software durft het soms wel nog eens op een willekeurig moment vast te lopen.
Vvvv kan zonder problemen een hele reeks objecten (grafische objecten of data) tegelijkertijd bewerken of weergeven. Dit betekent dat we even gemakkelijk met ĂŠĂŠn exemplaar van een grafisch object (bijv. een afbeelding) kunnen werken als met 1000. We noemen deze techniek spreading (verspreiden). Spreading is een abstractie die verwijst naar de handeling van het verspreiden van verschillende waarden over een reeks van objecten. Vvvv bevat veel spread generators die het gemakkelijk maakt om complexe gedragingen te programmeren voor een grote groep van objecten.
12
creares © 2013 // Jonas Vansieleghem
Boygrouping
Vvvv uitbreiden
Er zijn toepassingen waarbij het nodig zal zijn om meerdere pc’s te gebruiken om de gewenste output te bereiken of om met meerdere schermen te werken. In die situaties zou het niet praktisch zijn om alle pc’s individueel te controleren. Om dit probleem op te lossen wordt in deze situatie meestal gewerkt met een server. Via deze server kunnen alle verbonden pc’s gemakkelijk en overzichtelijk gecontroleerd worden.
Indien je je eigen nodes wilt creëren biedt vvvv vele mogelijkheden. Het programma beschikt over een COMgebaseerde plugin interface die het mogelijk maakt om nodes te schrijven in verschillende programmeertalen.
Vvvv’s ingebouwde boygrouping techniek maakt dit mogelijk en verlicht ook de inspanningen die betrokken zijn bij het creëren van multi-screen systemen of naadloze multi-projectie opstellingen. Boygrouping maakt ook het opzetten van een render-cluster mogelijk. Hierbij kan men kiezen welke nodes op welke computer draaien. De mogelijkheid om te bepalen welke gegevens op welke computer draaien maakt het mogelijk om een setup handmatig te optimaliseren.
Zo is het mogelijk om nodes te schrijven in c# en f# maar ook in delphi of c++. Vertex- en PixelShader nodes kunnen gemaakt worden met behulp van het DirectX Effect framework. Video filter en analyse nodes kunnen worden uitgevoerd op basis van de FreeFrame 1.0 standaard. VST (Virtual Studio Technology, virtuele instrumenten/effecten) plugins kunnen worden gebruikt als audio nodes en patches kunnen natuurlijk ook gebruikt worden als herbruikbare modules.
13
VVVV // 2. Kenmerken
Animatie
3D Rendering
Vvvv heeft een groot aanbod aan gespecialiseerde nodes voor het maken van vloeiende animaties of het filteren van binnenkomende reeksen van waarden. Voor situaties waarbij een sequencer nodig is biedt vvvv de mogelijkheid om met een timeline editor te werken. Deze editor is een stand-alone versie die zelfstandig draait.
Vvvv’s D engine is gebaseerd op DirectD een API (Application Programming Interface) voor high performance computer graphics. Met de kracht van moderne grafische kaarten maken die API’s het voor programma’s zoals vvvv mogelijk om gelijkwaardige renderprestaties te bekomen als die van moderne computerspellen. Naast een verzameling van nodes die u toelaat om op een eenvoudige wijze geometrische gegevens te genereren of aan te passen, heeft vvvv ook de mogelijkheid om .x - en collada files te lezen. Deze files kunnen worden geëxporteerd vanuit alle belangrijkste D-modelling software. Met Collada bestanden kan vvvv animatie gegevens importeren voor geometrieën en er is een set van plug-in nodes om karakter/skelet animatie/generatie te doen.
14
creares © 2013 // Jonas Vansieleghem
Audio
Physics simulatie
De sound engine van vvvv is gebaseerd op DirectShow en is niet echt uitgebreid. Hoewel het perfect in staat is om muziekbestanden af te spelen en simpele FFT-analyses uit te voeren is het niet echt geschikt om serieuze geluidsmanipulaties uit te voeren of geluid te genereren.
Vvvv heeft ook een reeks nodes die gebruik maken van de Open Dynamics D Physics Engine. Er zijn ook veel nodes, voorzien door gebruikers, die gebruik maken van The Box D en Bullet Engines. De ODE Engine kan gebruikt worden om rigid body dynamics te simuleren en met de Bullet Engine is het zelfs mogelijk om soft body dynamics te simuleren.
Een reeks van plugin nodes die het mixen van meerder geluidsbronnen toelaat zijn beschikbaar .
15
VVVV // 2. Kenmerken
Communicatie met externe apparaten
Video tracking en effecten Vvvv’s video engine is gebaseerd op DirectShow en bijgevolg zijn de afspeelbare videoformaten afhankelijk van de codecs die geïnstalleerd zijn. Ook alle video-apparaten die met een conventionele WDM-driver werken zullen normaal gezien werken met vvvv. Of het nu usb-webcams, dv/firewire camera’s of analoge/digitale capture kaarten zijn. Video-effecten en video-analyse nodes worden uitgevoerd via de FreeFrame plugin architectuur en kunnen daarom onafhankelijk van vvvv worden ontwikkeld. Een reeks van nodes kan gebruikt worden voor het uitvoeren van tracking technieken zoals vorm- en kleur-tracking of bewegings-en object-detectie.
16
Het is mogelijk om met vvvv externe apparaten te bedienen. Dvd-spelers, industriële interfaces (bijv. om licht en geluid te besturen), touch-screen schermen, gaming apparaten, schakelaars, sensoren, MIDI apparatuur, DMX interfaces en toetsenborden kunnen allemaal met vvvv bestuurd worden. Naast de standaard lage niveau protocollen, zoals TCP, UDP of RS voor communicatie met andere computers en software biedt vvvv hoger niveau nodes aan voor communicatie via MIDI, DMX, ArtNet, OSC, HTTP, IRC etc.
creares © 2013 // Jonas Vansieleghem
3
Het volgende onderdeel is het
theoretisch gedeelte over vvvv
Basis uitleg
Renderer (EX9)
Vvvv gebruikt grafische objecten om te programmeren i.p.v. een tekstuele programmeer interface. Vvvv applicaties worden ook wel patches genoemd. Individuele operaties en functies worden nodes genoemd. Verbindingen tussen nodes worden links genoemd en worden getekend en aangepast met de muis. Links transporteren data van de ene node naar de andere.
Om uitgaande data te visualiseren heb je een renderer nodig. Er zijn verschillende renderer nodes in vvvv (verschillende types voor verschillende soorten data). In de meeste gevallen wordt de Renderer.EX gebruikt.
In de meeste gevallen heeft een node meer opties dan degene die zichtbaar zijn. Alle opties van een node zijn beschikbaar in “The Inspektor” (zie pagina 32). Je kan deze openen door een node te selecteren met de linkermuisknop en vervolgens op Ctrl + i te drukken.
De renderer node heeft een extern scherm dat de DirectXRenderer heet, hierop zie je hoe de data gerenderd wordt. Dit scherm kan eventueel fullscreen weergegeven worden.
19
VVVV // 3. Theoretisch
Primitives (DX9)
Textures
Om basisvormen (primitives) te tekenen in vvvv kan je verschillende nodes gebruiken. Als je bijvoorbeeld een rechthoek wil visualiseren gebruiken je de Quad(DX9) node. Je kunt deze vorm dan aanpassen door de node te verbinden met andere nodes. Als je hem bijv. wil transformeren dan kan je hem verbinden met een Transform node en indien je hem een kleur wil geven kan je hem verbinden met een HSL node.
Vvvv ondersteunt enorm veel soorten textures. Alles wat je ziet in de renderer kan, net als afbeeldingen en video, als een texture gebruikt worden.
De Group.EX9 node is vergelijkbaar met het werken met lagen in Adobe Photoshop of Illustrator en met de Blend node kan je verschillende blend modes selecteren.
20
creares © 2013 // Jonas Vansieleghem
Spreads Het woord spread duidt simpelweg op een lijst. Een lijst van willekeurige data. Deze data kan van alles zijn: waardes, kleur, vectoren… en één enkel item uit een lijst heet een slice. In bijna alle gevallen waarbij je met meerdere eenheden van data wil werken is het erg handig om met spreads te werken. Stel dat je bijv. 100 vierkanten wil visualiseren die in een cirkel staan dan kan dit met de node CircularSpread erg eenvoudig bereikt worden.
Vectoren zijn de meest gebruikte spreads in vvvv. Het programma heeft veel vector georiënteerde nodes. In de meeste gevallen is het gebruiken van vectoren eenvoudiger dan het gebruiken van aparte waarden.
In veel gevallen is het interessant om toegang te hebben tot individuele slices. Elke slice heeft een indexnummer, hierdoor kan je de gewenste slice eenvoudig selecteren. Het is ook mogelijk om een reeks van slices te selecteren. Dit kan je doen door bijv. de node GetSlice te gebruiken. De binsize bepaald hoe veel slices er genomen worden en de index bepaald welke slices er genomen worden.
21
VVVV // 3. Theoretisch
IO Boxes
Subpatches
IO box betekent Input/Output Box, ze kunnen dus voor alle twee de toepassingen gebruikt worden. Aan de ene kant kan je ze gebruiken om input data in te voeren in een patch. Maar je kunt ze even goed gebruiken om output data te transporteren of weer te geven.
Een subpatch is eigenlijk gewoonweg een node die een andere patch bevat. De term subpatch verwijst enkel naar de manier waarop de patch wordt weergegeven. Het is een gewone patch maar hij wordt weergegeven als een node.
Er zijn verschillende soorten IOBoxen. De meeste gebruikte is de Integer, hierbij heb je slechts 2 pinnen, één voor de input data en één voor de output data, op de IObox kan je de doorgegeven data aflezen. Andere veel gebruikte IOBoxen zijn: Enumeration (om lijsten met mogelijke input data weer te geven, bijv. mogelijke fonts), Toggle (heeft slechts 2 mogelijke waarden, aan of uit), Color (om kleur weer te geven) en String (kan enkel tekst bevatten/weergeven).
Een subpatch aanmaken is erg eenvoudig. Eerst maak je de patch en sla je hem op. Hierna kan je deze file gewoon in je nieuwe patch slepen en gebruiken als subpatch.
22
creares © 2013 // Jonas Vansieleghem
S en R nodes In sommige gevallen is het nodig om data te transporteren zonder dat je nieuwe links wil aanmaken. In deze gevallen kan je S en R nodes gebruiken. S en R staat voor send en receive. Data van de S node kan gelijk waar in de patch ontvangen worden met de R node. Indien er meerdere S nodes zijn verschijnt er bij de R nodes een dropdown menu waarbij je de bijhorende bron moet aanduiden.
Coördinatensysteem Het renderer scherm heeft een standaard bereik van -1 tot +1 in alle 2 de dimensies (XY). Het midden van het scherm heeft als coördinaten 0,0.
Er zijn geen pixels, inches of millimeters in het coördinatensysteem van vvvv maar enkel digitale waarden. Dit zorgt er voor dat de coördinaten niet afhangen van de grootte van het scherm of de schermresolutie. Dit zijn dus genormaliseerde coördinaten. Het gebruik van genormaliseerde coördinaten heeft als gevolg dat je gevisualiseerde data er anders zal uitzien afhankelijk van de grootte van je scherm. Om dit te vermijden kan je Transform nodes gebruiken om je renderer aan te passen.
23
VVVV // 3. Theoretisch
3D modellen in vvvv Er zijn verschillende manieren om in vvvv D modellen (meshes) te creëren. Je kan: • • • •
gebruik maken van basis primitives zoals Grid, Box of Sphere uit de EX.Geometry node een .x file laden uit een ander D programma een .dae collada file laden m.b.v. de collada plugin zelf een mesh genereren met een vertexbuffer en een indexbuffer
Een D model of een mesh is een data container met twee afzonderlijke delen: IndexBuffer en VertexBuffer. Elke mesh is opgebouwd uit (honderden) driehoeken. Elke driehoek heeft 3 punten, we noemen elk punt een vertex (hoekpunt). Dus om een specifiek mesh te vormen moeten we alle vertices samenvoegen in een speciale datalijst, zo’n lijst noemen we een vertexbuffer. Indexbuffers zijn gelinkt aan vertexbuffers. Hun doel is om de locatie van elke vertex bij te houden. Op deze manier kunnen vertices sneller gevonden en gerenderd worden.
24
creares © 2013 // Jonas Vansieleghem
Shaders (effecten) Een shader is een computerprogramma dat voornamelijk zorgt voor de belichting en de schaduw van een object. De positie, kleur, verzadiging, helderheid en contrast van alle pixels, vertices of textures die gebruikt worden voor het genereren van een D model kunnen snel en eenvoudig worden aangepast m.b.v. een shader. Een shader bepaalt dus hoe een vorm er zal uitzien. Vertexshaders zorgen er voor dat de positie van elke vertex omgezet wordt van een virtuele D positie naar een D coördinaat op het scherm. Vertexshaders kunnen eigenschappen zoals kleur en positie aanpassen maar kunnen geen nieuwe vertices creëren. Een pixelshader maakt geavanceerde kleuring in rasterizers mogelijk. Dit stuk programmeercode wordt voor elke getekende pixel uitgevoerd en heeft als taak de kleur van die pixel te berekenen. Vvvv heeft een ingebouwde HLSL (High Level Shading Language) editor, het is dus mogelijk om zelf effecten aan te maken en aan te passen. Op vvvv.org/contributions zijn er talloze interessante shaders te vinden die gratis worden gedeeld door de gebruikers. Je kan er ook zelf shaders of patches uploaden.
25
VVVV // 3. Theoretisch
Loops en feedback
Logica
Alle nodes in een patch worden slechts eenmaal per frame doorlopen. Dit wil dus zeggen dat, indien je data wilt loopen, je minstens één frame moet wachten. Nodes zoals FrameDelay (Animation) geven een output die afhankelijk is van de input van de vorige frame i.p.v. de huidige. Op deze manier kan je data in een patch loopen.
Het programma vvvv heeft verschillende nodes die het dataverkeer kunnen regelen. De meest gebruikte nodes hiervoor zijn o.a. Switch, Or, And, “=”, “>”, …
Er zijn ook veel tijd gerelateerde nodes. Zo heb je bijvoorbeeld een LFO (LowFrequency Oscillator, telt op van 0 tot 1 over een bepaalde periode), een Counter (telt op of af bij elk signaal) en een MonoFlop (geeft een signaal voor een bepaalde tijd).
Wanneer je complexe logica hanteert in een patch is het aan te raden om een “centraal station” aan te maken waar je al deze nodes plaatst. Op deze manier blijft je patch overzichtelijk.
26
creares © 2013 // Jonas Vansieleghem
Rode nodes en andere errors
Externe apparaten
Soms kom je in vvvv rode nodes zonder pinnen tegen. Dit gebeurt bijv. wanneer je een patch download van het forum. Door een node rood weer te geven toont vvvv aan dat ze een specifieke file niet kan vinden. Om dit probleem op te lossen volstaat het om de specifieke file te vinden en aan te duiden.
Vvvv heeft input/output nodes voor enorm veel verschillende apparatuur. Zo zijn er nodes voor TCP, UDP, DMX, MIDI, TUIO, OSC, RS enzovoort.
Vvvv heeft verschillende nodes die je kunnen helpen problemen op te sporen en op te lossen. Zo’n eerste node is Renderer (TTY). Deze node rapporteert alle errors in een apart venster. Het is aan te raden om, zeker wanneer je aan het coderen bent, de Renderer (TTY) node ergens in je patch te plaatsen.
Dankzij de vvvv gebruikers is het zelfs mogelijk om met dit programma consoles zoals de Nintendo Wii, de PSP en de Xbox 360 Kinect te controleren. Maar het kan ook eenvoudiger: met de nodes Keyboard (System) en Mouse (System) kan je data ontvangen van je keyboard en muis. Je kan dus erg eenvoudig een patch besturen met de beweging van je muis of met een bepaalde toetsencombinatie.
Om overige problemen op te lossen kan je terecht op het forum. Je kan er een nieuw topic openen met je probleem en rekenen op de hulp van mede vvvv gebruikers.
Voor sommige apparaten is het wel noodzakelijk om de bijhorende drivers eerst te installeren.
27
creares Š 2013 // Jonas Vansieleghem
4
Na het theoretisch stuk volgt nu het
Praktisch gedeelte over vvvv
User interface A. Algemeen Dubbelklikken met de linkermuisknop op een lege plaats binnenin een patch opent NodeBrowser. Dit is een lijst die alle mogelijke nodes bevat. Er is een zoekoptie die je helpt om snel een node te vinden.
Dubbelklikken met de rechtermuisknop op een lege plaatst opent een IOBoxes menu. Dit is een lijst met alle mogelijke input/ output boxes. Klikken met de middelste muisknop opent het Main Menu. Op sommige systemen werkt dit niet, in dat geval kan je het Main Menu openen met de combinatie spatiebalk + rechtermuisknop.
29
VVVV // 4. Praktisch
Verticaal en horizontaal scrollen kan je doen met behulp van je scrollbar (Alt inhouden om horizontaal te scrollen) of door je rechtermuisknop in te houden en te slepen. Alle standaard shortcuts zoals Ctrl-c, Ctrl-v en Ctrl-s werken ook in dit programma.
C. Werken met links Om een nieuwe link aan te maken moet je eerst op een pin klikken. Wanneer je dan op een lege plaats in de patch klikt maak je een hoekpunt in de link aan. Om de link te sluiten moet je hem verbinden met een andere pin.
B. Werken met nodes Wanneer je met je muis boven een node zweeft verschijnt de naam van de node.
Je kan een node selecteren door er op te klikken met je linkermuisknop. Om een node te verplaatsen moet je hem verslepen met je linkermuisknop. Je kan de grootte van een node aanpassen door te klikken op de rechterkant van de node en de zijkant te verslepen.
Dubbelklikken op een node opent de NodeBrowser. Het is mogelijk om op deze manier een verbonden node te veranderen, alle pinnen met dezelfde naam blijven dan verbonden.
30
Je kan een link die je aan het tekenen bent deleten door op je rechtermuisknop te klikken. Om een reeds getekende link te deleten moet je de link eerst selecteren en daarna op de rechtermuisknop of de delete knop drukken. Het is ook mogelijk om de stijl van je link aan te passen door op ctrl-y te drukken. De stijl van je links aanpassen helpt je om je patch overzichtelijk en leesbaar te houden.
creares © 2013 // Jonas Vansieleghem
Soorten nodes Er zijn verschillende types van nodes. Een icoontje aan de linkerkant van de titel toont aan welk type node het is.
A. Subpatches en Modules Deze nodes bevatten patches, je kan ze openen door er met je rechtermuisknop op te klikken en bewerken als gewone patches. Eénmaal ze geopend zijn kun je ze weer afsluiten door er een tweede maal op te klikken met je rechtermuisknop.
B. Dynamic Plugins Deze nodes zijn C# plugins, je kan ze openen en aanpassen met de CodeEditor door er op te klikken met je rechtermuisknop. Je kan de code aanpassen terwijl je patch aan het lopen is. Met Crtl-w kan je de CodeEditor weer afsluiten.
C. Effects
Waardes aanpassen Je kan de waardes van IOBoxes aanpassen met behulp van je muis en toetsenbord. Klik en sleep van links naar rechts (of omgekeerd) of van boven naar onderen (of omgekeerd) met de rechtermuisknop om de waarde van een IOBox aan te passen. Je kan de waarde ook invoeren door er op te dubbelklikken met de linkermuisknop en dan een waarde in te typen. Wanneer je met je muis over een pin zweeft verschijnt de waarde van deze pin. Je kan de waardes van een input pin ook rechtstreeks aanpassen zonder gebruik te maken van een IOBox. Dit doe je door je rechtermuisknop ingedrukt te houden op een pin en je muis dan te verslepen (net zoals bij een IOBox). Een waarde ingeven met het toetsenbord kan je door op een pin te klikken met de rechtermuisknop. De waardes van een IOBox (Color) aanpassen is iets ingewikkelder. Klik met de rechtermuisknop op de IOBox en sleep de muis:
Deze nodes zijn HLSL shaders, je kan ze openen en aanpassen met de CodeEditor.
•
D. Nodes met externe vensters
•
Deze nodes hebben een extern venster, je kan dit venster openen door de node te selecteren en op Alt-1 te drukken. Alt-2 opent het venster als een blok binnenin de patch, Alt-3 verbergt het externe venster en Alt-enter zet het venster fullscreen.
•
•
van links naar rechts (of omgekeerd) om de kleur aan te passen van boven naar onderen (of omgekeerd) om de helderheid aan te passen van links naar rechts (of omgekeerd) terwijl je de Ctrl-toets ingedrukt houdt om de verzadiging aan te passen van boven naar onderen (of omgekeerd) terwijl je de Shift-toets ingedrukt houdt om de helderheid aan te passen
Al deze waardes kan je ook aanpassen met de Inspektor.
E. Standaard nodes Bij deze nodes kan je enkel de waardes van hun pins aanpassen maar verder niets.
31
VVVV // 4. Praktisch
Herr Inspektor De Inspektor is een extern venster die alle info van een node toont. Het is zeer erg aan te raden om altijd een Inspektor te hebben openstaan. Je kan de Inspektor openen door op Ctrl-i te drukken. Om een node te inspecteren met de Inspektor moet je simpelweg op de specifieke node klikken waarna alle mogelijke info verschijnt in het Inspektor venster.
32
creares Š 2013 // Jonas Vansieleghem
Patches lezen Doordat vvvv werkt met grafische objecten om te programmeren i.p.v. pure tekst, is het eenvoudiger om patches te lezen en te begrijpen. Om te zien waar data vandaan komt of naartoe gaat moet je enkel de links volgen. Hier volgt een truckje om patches beter te begrijpen: probeer de patch van onderen naar boven te lezen i.p.v. omgekeerd. Zoals eerder al vermeld komt de meeste data meestal terecht bij de Renderer. Hetgeen je ziet in de Renderer is het resultaat van de hele patch. Dus het eerste wat je moet doen is de (hoofd) Renderer zoeken (in complexe patches kunnen er meerdere Renderers voorkomen). Meestal ziet een eenvoudige patch er zoals hiernaast uit. Eenmaal je de Renderer hebt gevonden is het simpelweg een kwestie van de input pins van de huidige node (in dit geval de Renderer) te volgen naar de voorgaande node. In de meeste gevallen is de Renderer verbonden met een Group. Verbonden met deze Group vind je dan weer nodes zoals Quad, PhongDirectional enzovoort. De meeste nodes hebben een helpfile. Je kan ze openen door een node te selecteren en op F1 te drukken. Er verschijnt hierna een apart venster met een nieuwe patch die demonstreert hoe de node werkt en kan gebruikt worden.
33
creares Š 2013 // Jonas Vansieleghem
5
Na het research gedeelte volgen nu de
creaties die volledig gemaakt zijn in vvvv
35
creares © 2013 // Jonas Vansieleghem
Enkele nuttige
links
over het programma vvvv
www.vvvv.org De officiële site van het programma.
www.vvvv.org/forum Het officiële forum van vvvv. Hier kan je terecht met al je vragen.
www.vvvv.org/contributions Hier vind je de bijdrages van vvvv gebruikers.
www.vimeo.com/channels/vvvv Het vimeo kanaal van de vvvv gebruikers. Hier wordt het werk van verschillende artiesten tentoongesteld.
www.flickr.com/groups/vvvv/pool Prachtige screenshots genomen door vvvv gebruikers. De meeste afbeeldingen zijn volledig gemaakt in vvvv.
www.meso.net MESO is een media design bedrijf in Frankfurt. Het is de distributeur van het programma. Via deze site kan je hun projecten, waarvan het merendeel gemaakt is met vvvv, bekijken.
51
creares Š 2013 // Jonas Vansieleghem
Overzicht van alle geraadpleegde
bronnen Box2D http://box2d.org
Buffers, Shaders & HLSL http://en.wikibooks.org/wiki/DirectX/10.0/Direct3D/Buffers_Shaders_HLSL
Bullet Physics http://bulletphysics.org/wordpress
C# http://nl.wikipedia.org/wiki/C#
DirectShow http://nl.wikipedia.org/wiki/DirectShow
DMX http://nl.wikipedia.org/wiki/DMX512
Generative Gestaltung http://www.generative-gestaltung.de
High Level Shader Language http://nl.wikipedia.org/wiki/High_Level_Shader_Language
Microsoft DirectX http://nl.wikipedia.org/wiki/Microsoft_DirectX
Open Dynamics Engine http://www.ode.org/
Pixel Shader http://nl.wikipedia.org/wiki/Pixel_shader
Rasterisation http://en.wikipedia.org/wiki/Rasterisation
Shader http://en.wikipedia.org/wiki/Shader
Shading http://en.wikipedia.org/wiki/Shading
VBO Indexing http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-9-vbo-indexing
Vertex Shaders and Pixel Shaders http://www.tomshardware.com/reviews/vertex-shaders-pixel-shaders,411.html
VVVV http://vvvv.org
53
VVVV CREARES
©2013 JONAS VANSIELEGHEM