TouchDesigner: Python-Einzeiler

Spickzettel für Parameter-Felder (Blue Expression Mode)
Tipp: Klicke im Parameter-Fenster auf den Namen eines Parameters oder schalte das Feld mit dem blauen Quadrat auf Expression Mode um, damit TouchDesigner den Python-Code auswertet!

1. Zeit & Kontinuierliche Animation

Python Einzeiler Ergebnis / Bedeutung Typischer Einsatz
absTime.seconds Fortlaufende Zeit seit TD-Start in Sekunden Grundlage für permanente Animationen
absTime.seconds * 20 Verdoppelt/Verstärkt die Geschwindigkeit Rotation (z. B. rotate im Transform TOP)
absTime.frame Fortlaufender Frame-Zähler seit Start Frame-basierte Trigger oder Rhythmen
me.time.frame Aktueller Frame der lokalen Timeline Timeline-abhängige Loops
abs(2 * (absTime.seconds * 0.1 % 1) - 1) Der Modulo-Operator % 1 lässt den Wert immer wieder kontinuierlich von 0 bis 1 laufen (Sägezahn).

Zeitabhängige Werte 0 -1
siehe unten

(math.sin(absTime.seconds * 0.2) + 1) / 2 math.sin(...) erzeugt eine Welle zwischen -1 und 1.
+ 1 verschiebt sie auf 0 bis 2.
drückt das Ergebnis exakt in den Farbbereich 0 bis 1.
Zeitabhängige Werte rauf und runter mit weichem Schwingen.
siehe unten
math.sin(absTime.seconds * 1.5) * .5
math.cos(absTime.seconds * 1.5) * .5
Die beiden Werte sind für x und y Position gedacht und ergeben eine Kreisbewegung Kreisbewegung mit x und y Koordinaten

* Mit einem LFO CHOP lassen sich diese Effekte wie Sägezahn Sinus Cosinus auch erzeugen.

2. Operatoren & CHOP-Channels auslesen

Python Einzeiler Ergebnis / Bedeutung Typischer Einsatz
op('null1')[0] Liest den Wert des ersten Channels (Index 0) aus Steuerung per Audio, MIDI oder Sensor
op('null1')['chan1'] Liest den Wert des Channels namens 'chan1' aus Sicherer Weg, wenn Channel-Namen feststehen
op('null1')[0] * 100 Liest Wert aus und skaliert ihn direkt mal 100 Einpassung von 0..1 Signalen auf Pixel/Grad
op('geo1').par.tx Liest den aktuellen X-Trans-Wert von geo1 aus Koppeln von Parametern zwischen OPs

3. Der 'me' Operator (Selbstreferenz)

Python Einzeiler Ergebnis / Bedeutung Typischer Einsatz
me.digits Gibt die Zahl am Ende des Node-Namens zurück (z. B. 3 bei circle3) Dynamische Versätze in geduplizierten Nodes
me.digits * 45 Multipliziert die ID mit 45 Automatische Rotation/Verschiebung in Klonen
me.parent().digits Liest die Ziffer des übergeordneten Container-Nodes aus Modulare Layouts in Replicatoren/Kapseln
me.name Gibt den exakten Namen des Nodes als String zurück Namensbasierte Logiken/Filter

4. Math-Helfer & Bedingungen (Ternary Operator)

Python Einzeiler Ergebnis / Bedeutung Typischer Einsatz
math.sin(absTime.seconds) Sinus-Welle zwischen -1.0 und 1.0 Sanftes Oszillieren/Atmen von Werten
(math.sin(absTime.seconds) + 1) / 2 Normalisierter Sinus zwischen 0.0 und 1.0 Perfekt für Opazität / Skalierung
1 if op('null1')[0] > 0.5 else 0 Ternary Operator (Inline-If: Bedingung ? A : B) Schalten/Triggern per Schwellenwert
tdu.rand(me.digits) TD-eigener Zufallswert (0.0 bis 1.0) basierend auf Seed Zufällige Startwerte pro Node ohne Rauschen
((me.inputPoint.x + 1) / 2) * 2 * math.pi
(1.5 + me.inputPoint.y * 3.0)
Polarkoordinaten (Photoshop Filter)
Rectangular to Polar
es folgen tx und ty
Eine flache, waagerechte Achse wird nahtlos zu einem 360°-Kreis aufgebogen
math.cos(((me.inputPoint.x + 1) / 2) * 2 * math.pi) * (1.5 + me.inputPoint.y * 3.0)
math.sin(((me.inputPoint.x + 1) / 2) * 2 * math.pi) * (1.5 + me.inputPoint.y * 3.0)

5. Daten aus DAT-Tabellen auslesen

Python Einzeiler Ergebnis / Bedeutung Typischer Einsatz
op('table1')[0, 0] Liest Zelle in Reihe 0, Spalte 0 aus Text- oder Konfigurationswerte abrufen
op('table1')['zeile', 'spalte'] Liest Zelle über Header-Namen aus Lesbare Tabellen-Abfragen
op('table1').numRows Gibt die Gesamtzahl der Tabellenzeilen zurück Dynamische Instanziierung / Replicator Count