Tutorial: Erste Schritte in TouchDesigner
Für interaktive Installationen und 3D-Animationen gewinnt die visuelle Programmiersprache TouchDesigner verstärkt an Bedeutung. Medienkünstler Mickey van Olst erzählte uns von seinen ersten Schritten in der Entwicklungsumgebung und erklärt, wie man mit TouchDesigner arbeitet.
Das erste TouchDesigner-Projekt
Van Olst, der nach seiner Ausbildung in den Niederlanden nach Berlin zog, stieß damals zunächst auf vvvv, weil die Software in der Hauptstadt entwickelt wird und er bereits viele Leute kannte, die damit arbeiteten. »Allerdings ist das Interface von vvvv sehr minimalistisch aufgebaut, und man bekommt überhaupt kein visuelles Feedback. Das war nicht wirklich etwas für mich.«
Als Mickey van Olst dann auf dem TouchDesigner Summit 2018 sah, wie viele Menschen in Europa inzwischen Interesse an der Arbeit mit der Software hatten, weckte das sein Vertrauen: »Mir wurde klar, dass TouchDesigner jetzt groß genug war, um es ernst zu nehmen und auch im Tagesgeschäft auszuprobieren.« Er schaute sich TouchDesigner-Tutorials auf YouTube an, studierte die Anleitungen des Medienkünstlers Matthew Ragan und tauschte sich mit der Community aus. »Man sollte sich seinen Mentor genau aussuchen – eine Person, deren Erklärungen man leicht versteht, denn man kann TouchDesigner auf sehr unterschiedliche Weise erklären, und Matthew Ragan hat einen ähnlichen Fokus wie ich.«
Neues lernt man bekanntlich am besten an einem echten Projekt. Van Olst hatte Glück, dass ihn Mio Loclair von Studio Waltz Binaire aus Berlin 2019 fragte, ob er die Echtzeit-Visuals für eine Kinect-Installation programmieren könnte. »Mio sagte, es sei nicht so gut bezahlt, aber auch nicht stressig, weil ich mir Zeit lassen könnte, und es war die Gelegenheit, um TouchDesigner in der Praxis zu lernen, also nahm ich den Auftrag an.« Die finale Anwendung war dementsprechend noch nicht sehr komplex – eine Art interaktiver Fotoautomat, der lustige Visuals auf Gesichter oder Hände legt, und ein paar andere Spielereien, aber der Anfang war gemacht.
Wie ein Technologie-Schwamm
»In diesem Kinect-Projekt bemerkte ich sofort den großen Vorteil von TouchDesigner, denn die Schnittstellen für Kinect sind bereits integriert. Es ist wie ein Schwamm, der andere Technologien aufsaugt und ständig neue Funktionen hinzufügt, beispielsweise eine Physik-Engine von Nvidia Flex oder eine bestimmte Renderingtechnologie – und dann verpackt Derivative das in diese kleinen Operatoren.« So lassen sich unterschiedlichste Dateiformate importieren, um sie miteinander zu kombinieren, aber auch exportieren, um sie in einer anderen Software weiterzuverarbeiten. Zum Beispiel kann man 3D-Modelle oder ganze Szenen in Blender modellieren und sie anschließend ohne Probleme in TouchDesigner-Projekte einbinden. »Diese unendlichen Möglichkeiten machen TouchDesigner zu einem mächtigen und vielseitigen Tool, zugleich gibt es keinerlei Struktur vor, und man muss wirklich aufpassen, dass man den Überblick behält«, so van Olst.
Weil TouchDesigner fortwährend weiterentwickelt wird, sind nicht alle Funktionen immer gleich gut ausgereift, und es kann mitunter zu Problemen kommen. »Aber anders als bei Unity oder Unreal werden solche Bugs von Derivative sehr schnell gefixt«, sagt van Olst. Die großen Konkurrenten haben dafür andere Vorteile gegenüber TouchDesigner, und viele Kreative kombinieren deshalb die klassischen Game-Engines mit der Software.
Fragen Sie sich jetzt, ob die Einführung in TouchDesigner auf den nächsten Seiten für Sie lesenswert ist? Mickey von Olst sagt: »Ich treffe viele Leute, die denken, dass sie die richtige Wahl bei einem Tool treffen müssen und dass ihr Leben von dieser Wahl abhängt. Aber jede Wahl, die man trifft, ist die richtige Wahl!« Und je mehr Tools man ausprobiert, desto schneller versteht man ihre Funktionsweise und kann ein weiteres Tool lernen. Sein Rat: »Nehmen Sie sich einen Nachmittag Zeit und probieren Sie es aus, ohne sich Gedanken zu machen, ob es langfristig von Bedeutung ist.«
Coden für die Grafikkarte: Das ist TouchDesigner
TouchDesigner ist eine Node-basierte visuelle Entwicklungsumgebung, auf deren grafischer Oberfläche sich Echtzeit- und interaktive Systeme erstellen lassen, ohne Code schreiben zu müssen. Es basiert auf OpenGL und erlaubt die Verwendung der Programmiersprache GLSL für den Grafikprozessor. Diese Anwendungen sind meist sehr viel schneller als Anwendungen, die auf dem Hauptprozessor (CPU) laufen.
Dank immer performanterer Grafikeinheiten könnte man TouchDesigner inzwischen als das Schweizer Taschenmesser für 2D- und 3D-Techniken bezeichnen, denn zu den enthaltenen Features gehören Rendering und Compositing, Workflow und skalierbare Architektur, Video- und Audioein- und -ausgang, Multi-Display-Unterstützung, Video-Mapping, Animation und Steuerkanäle, benutzerdefinierte Control Panels, Anwendungsentwicklung, 3D-Engine und Werkzeuge, Interoperabilität von Geräten und Software sowie Skripterstellung und Programmierung in Python. Die Entwicklungsumgebung ist also sehr flexibel und eignet sich sowohl für Programmierer:innen als auch für bildende Künstler:innen und. Creative Technologists, um verschiedenste Projekte zu prototypen und umzusetzen.
TouchDesigner: Projektordner downloaden
Eine Step-by-Step-Anleitung für die Arbeit in TouchDesigner würde den Rahmen dieses Artikels sprengen – aber Sie können die Entwicklungsumgebung spielerisch erkunden. Mickey van Olsts TouchDesigner-Einführung umfasst eine sehr simple Anwendung, ein fortgeschritteneres Beispiel und ein Bonusprojekt zum Verfeinern der erworbenen Kenntnisse. Die enthaltenen Codebausteine sind ausführlich kommentiert. Einfach hier downloaden: https://is.gd/PAGE_TouchDesigner
Technische Anforderungen für TouchDesigner
TouchDesigner l äuft am besten unter Windows 8.1 oder 10 und mit den Grafikkarten Nvidia Geforce, Nvidia Quadro, AMD Radeon oder AMD FirePro. Intel-GPUs werden unterstützt, haben aber aufgrund der Grafikanforderungen von TouchDesigner bestimmte Einschränkungen – ebenso wie die Softwareversion für macOS. Für grundlegende Aufgaben (und für Mickey van Olsts Touch-Designer-Einführung) genügen diese jedoch vollkommen. Die nicht kommerzielle Version gibt’s unter https://derivative.ca/download. Mehr zu den Anforderungen unter https://docs.derivative.ca/System_Requirements.
So funktioniert TouchDesigner
Die Entwicklungssoftware bietet so viele Möglichkeiten, dass man sich am Anfang leicht überfordert fühlt. Am besten downloaden und installieren Sie die nicht kommerzielle Version von https://derivative.ca/download sowie unser Beispielmaterial von https://is.gd/PAGE_TouchDesigner und machen sich mit ein paar wichtigen Grundlagen vertraut:
Navigation: So bewegen Sie sich im Editor
TouchDesigner ist für die Arbeit mit der Maus konzipiert, idealerweise mit einem Scrollrad und einer mittleren Klickoption, die sich zumeist unter dem Scrollrad verbirgt. Wenn Sie unsere Beispieldatei öffnen, sehen Sie auf dem gerasterten Hintergrund verschiedene Kästen (siehe großes Bild unten) mit Erklärungen und den Ergebnissen unserer Übung.
Versuchen Sie zunächst, mit der gedrückten linken Maustaste den Hintergrund beziehungsweise die Arbeitsfläche zu verschieben. Durch Ziehen mit gedrückter rechter Maustaste können Sie mehrere Kästen gleichzeitig auswählen.
Diese Kästen heißen Operatoren (OPs) und dienen als Grundlage für das Erstellen von Funktionen. Wenn Sie sämtliche OPs in die Ansicht bringen wollen, können Sie »H« drücken (Abb.1) . Ich habe in der Beispieldatei auch eine kleine Spickzettelübersicht mit gängigen Maus- und Tastaturfunktionen hinterlegt. Von den Operatoren gibt es viele verschiedene Typen – wir kommen gleich dazu, was genau sie bewirken. Die grauen Kästen dienen als Container. Sie können sie öffnen, indem Sie sie doppelklicken oder auswählen – dann erscheint ein grüner Rahmen – und die Entertaste drücken. Mit dem Mausrad kann man außerdem in die Hierarchie des Projekts hinein- und herausscrollen. Diese räumliche Navigation ist zwar faszinierend, aber anstrengend fürs Auge. Praktisch: Um wieder in die Übersicht zu gelangen, drücken Sie das »U« auf Ihrer Tastatur.
Ganz oben sehen Sie eine Leiste für die Projekthierarchie. Sie zeigt, an welcher Stelle des Projekts Sie sich gerade befinden. Beim Klick auf das kleine, auf dem Kopf stehende Dreieck ganz links im Interface öffnet sich ein Fenster für die verschiedenen Ansichten. Per Default arbeiten wir im Network-Editor – das ist auch für unser Beispiel die übersichtlichste Darstellung.
Patchen: Kabel wie bei modularen Synthesizern
Die Operatoren sind die Kernelemente, aus denen Ihr Projekt aufgebaut ist. Es gibt sie in sechs Kategorien mit jeweils einer eigenen Farbe. In den meisten Anwendungsfällen enthalten Operatoren an beiden Seiten Ein- und Ausgänge, über die wir mit gedrückter linker Maustaste Verbindungen mit anderen OPs herstellen, ähnlich wie Sie es vielleicht von anderen Node-basierten oder sogar physischen Systemen wie modularen Synthesizern kennen. Daher stammt die Bezeichnung »Patching«.
Wenn Sie Daten von einer Kategorie in eine andere bringen oder einen Parameter mit einem anderen verbinden, dann zeigt ein grauer gepunkteter Pfeil an, dass eine Verbindung besteht. Sie können die OPs auch verwenden, um eigene Schnittstellen zu bauen und sie miteinander zu verschachteln. Die ersten Operatoren, die Sie beim Öffnen unserer Beispieldatei sehen, heißen Container-COMPs und enthalten verschiedene Operatoren:
COMP (Komponenten): Komponenten sind so etwas wie ein Sammelbegriff für alles, was nicht in die nachfolgenden Kategorien passt. Typisch sind die Komponenten Base, Container und Geometry. Diese können wiederum andere OPs enthalten, die Sie zum Rendern von 3D benötigen.
TOP (Textur-Operator): Textur-Operatoren behandeln alles, was auf Pixelebene passiert. Mit ihnen können Sie Texturen manipulieren und generieren, aber auch Bilder oder Filme laden, Texturen zusammensetzen und vieles mehr.
CHOP (Kanal-Operator): Channel-OPs sind der normalen objektorientierten Programmierung sehr nahe. Sie können mit Zahlen und Arrays arbeiten, Mathematik betreiben, Logik implementieren und Daten sortieren. Sie arbeiten mit Kanälen und Samples. Ein Kanal ist ein Datenstrom mit einem eindeutigen Namen. Samples sind ein oder mehrere Datenpunkte, die sich in einem Kanal befinden.
SOP (Oberflächen-Operator): Surface-OPs arbeiten in 3D und mit 3D-Punkten sowie mit Kanten und Scheitelpunkten. Sie sind nützlich für alles, was mit Vektoren zu tun hat. Meist werden sie am Ende mit einem Geometry-COMP und einem Render-TOP in eine Textur gerendert.
DAT (Daten-Operator): Daten-OPs funktionieren ähnlich wie Tabellenkalkulationen. Man kann mit ihnen Daten manipulieren, sie lassen sich aber auch für Python-Skripte und die OpenGL Shading Language (GLSL) oder als einfache Textcontainer nutzen.
MAT (Materialien): Materialien verwendet man als Teil der 3D-Rendering-Pipeline für geometrische Objekte. Es gibt verschiedene Standardmaterialtypen sowie komplexere Materialien, die das Importieren von nutzerdefinierten Scheitelpunkt- und Pixel-Shadern unterstützen. Der am häufigsten verwendete MAT ist der Phong. Er bietet sehr viele Beleuchtungsoptionen, mit denen sich – wie in unserer Beispieldatei – einzigartige Effekte erzeugen lassen.
Parameterfenster: In der oberen rechten Ecke sehen Sie ein Menü mit Einstellungen, das sogenannte Parameterfenster: Es zeigt die Variablen des aktuell gewählten Operators. Das Fragezeichensymbol auf der linken Seite bringt Sie zur Dokumentationsseite des jeweiligen Operators. Über das zweite Fragezeichensymbol gelangen Sie zur Python-spezifischen Dokumentation. Mit dem kreisförmigen Symbol ganz rechts können Sie zwischen allen Einstellungen und nur denjenigen, die Sie angepasst haben, hin- und herschalten.
TouchDesigner: So geht’s im Download-Projekt weiter
In den Kommentaren unserer Beispieldatei erhalten Sie viele weitere Informationen und einen tieferen Einblick in das Verhalten der verschiedenen Operatoren. Außerdem lernen Sie, wie man eine dreidimensionale geometrische Form in Partikel zerlegt und das Ganze anschließend animiert.
Schauen Sie auf jeden Fall auch einmal in dem offiziellen TouchDesigner-YouTube-Kanal und bei der TouchDesigner-Community vorbei. Diese ist um einiges kleiner als etwa die von Unity oder Processing, sodass Sie bei Fragen im TouchDesigner-Discord-Channel oder im Forum auf der Derivative-Website sehr schnell Antwort von freundlichen und kompetenten Mitgliedern erhalten.
Unter https://derivative.ca/community finden Sie zudem eine sehr umfangreiche TouchDesigner-Dokumentation: Wählen Sie einfach einen beliebigen Operator aus und klicken Sie auf das Hilfesymbol. Wenn Sie dann noch mit der rechten Maustaste klicken, erscheint meist ein Operator-Snippet mit einem funktionierenden Beispiel-Patch, der mit diesem speziellen OP arbeitet. Ich wünsche viel Spaß beim Patchen! Mickey van Olst
Mickey van Olst ist freischaffender Medienkünstler, der mit Studios wie onformative, waltz binaire und schnelle bunte bilder zusammenarbeitet. Neben seinen Jobs für namhafte Brands wie Humboldt Forum, Siemens, Porsche/BMW oder Google lehrt er an der Creative Business School Hyper Island in Schweden unter anderem Node-basierte Programmiersprachen. Wissen und Inspiration sammelt van Olst nicht zuletzt an seiner Arbeitsstätte im Berliner The Node Institute.
mickeyvanolst.com
thenodeinstitute.org
www.hyperisland.com