vvvv
vvvv ist eine grafische Entwicklungsumgebung für „Creative Coding“, die von der vvvv-group (Joreg, Max Wolf, Sebastian Gregor, Sebastian Oschatz) entwickelt wird. vvvv dient der Erzeugung und Manipulation von Video-, Grafik- und Datenströmen in Echtzeit.
Geschichte
1998 initiierte die Firma Meso Digital Media Systems Design, heute MESO Digital Interiors & MESO Digital Services, die Entwicklung der Software vvvv, die ursprünglich als firmeninterne Anwendung gedacht war. Sie hatte ein schmaleres GUI mit dem man zur Laufzeit Parameter einstellen, aber keine neuen Elemente hinzufügen konnte.
Eines der ersten Projekte, in denen die Software zum Einsatz kam, war die gemeinsam von Meso und 3deluxe realisierte Installation Cyberhelvetia auf der Expo 2002 in der Schweiz. Hierzu wurde mit Hilfe von vvvv eine große Reihe von interaktiven Anwendungen entwickelt, welche auf Sprache, Bewegungen und das Wetter reagierten. Im Laufe der letzten Jahre wurden zahlreiche weitere Projekte mit Hilfe von vvvv realisiert, besonders erwähnenswert ist dabei die Umsetzung des kompletten Licht-, Video- und Raumkonzeptes des Frankfurter Cocoon Clubs und des Fußball-Globus.
Funktionsweise
vvvv läuft grundsätzlich in Echtzeit, Änderungen am „Programmcode“ werden direkt ausgeführt – vvvv kann somit in die Kategorie der Datenstromorientierten Programmiersprachen eingeordnet werden.
Im Gegensatz zu herkömmlichen texturalen Programmiersprachen werden bei vvvv grafische Objekte, sog. „Nodes“, zur Entwicklung von Programmen genutzt. Einzelne Nodes verfügen über Ein- und Ausgabepins, welche sich mit der Maus über virtuelle Kabel miteinander verbinden lassen und so Daten untereinander austauschen können. Eingabepins sind oben angeordnet, Ausgabepins sind unten angeordnet.
Angelehnt an Programmiersprachen wie APL und J können über jede Verbindung Vektoren von Daten (sogenannte Spreads) übertragen werden, die von den Nodes parallel verarbeitet werden können.
Im Vergleich mit der klassischen Programmierung kann ein Node am ehesten mit einer Funktion verglichen werden – wobei die Eingabepins analog zu den Funktionsparametern und die Ausgabepins analog zur Funktionsrückgabe gesehen werden kann. Im Gegensatz zu Sprachen, die auf einer eindimensionalen Zeichenkette basieren, ist man jedoch nicht darauf angewiesen, dass ein unbenannter Rückgabewert in genau einer aufrufenden Funktion benutzt wird.
Anwendungsgebiete
Aufgrund der modularen Programmstruktur und der Fähigkeiten zur Echtzeit-Grafik ist vvvv besonders für den Einsatz in multimedialen Umgebungen gedacht. Ein kurzer Auszug der Möglichkeiten im Folgenden:
- Entwicklung und Steuerung von Multimediainstallationen: Generierung und Analyse von Audio- und Videosignalen, Verarbeitung diverser Input- und Sensorsignale, Steuerung externer Systeme durch offene Standards (XML, HTTP, RS-232, TCP, UDP, OSC, DMX, MIDI) Entwicklung diverser VJ (Visual Jockey)-Anwendungen: Synchronisation von Audio-/Videoanwendungen und Nutzung diverser externer Steuerelemente wie z. B. Midi Controller
- Entwicklung von Prototypen: Kurze Entwicklungszyklen und schnelle Umsetzung von Ideen durch grafische Programmierung.
- Durch die Integration von HLSL Shadern auf DirectX-basis erlaubt vvvv eine sehr einfache Nutzung von hardwarebeschleunigter 3d Grafik.
- Projektionen: Dadurch lassen sich zahlreiche Situationen Anpassung der Bildausgabe an unterschiedlichste, nicht plane Projektionsoberflächen; Einsatz der Software zur Verteilung von Bildmaterial auf mehrere Projektoren
Mit vvvv ist es nicht möglich eigenständige Anwendungen zu generieren, zur Ausführung eines Programms wird immer die vvvv Laufzeitumgebung benötigt. Aus diesem Grund ist vvvv auch nur bedingt dazu geeignet, Anwendungen im Sinne von klassischen Benutzerprogrammen zu entwickeln.
Analogien
Vergleichbar ist vvvv am ehesten mit Max/MSP der Firma Cycling74 und dessen Open Source Pendant Pure Data. Beides sind jedoch Anwendungen, die ursprünglich eher zur Midi-Steuerung und Audioverarbeitung entwickelt wurden und erst nachträglich auf die Erzeugung von 3D-Echtzeitgrafik adaptiert wurden. Schwachstellen bestehen auch bei der gleichzeitigen Verarbeitung von Objekten. So arbeiten die Module in vvvv grundsätzlich mit sogenannten Spreads, was bedeutet, dass mehrere parallele Berechnungen in einem Arbeitsschritt stattfinden, was die Programmierung wesentlich erleichtert.