Schritt-für-Schritt-Anleitung für variable Rotation, Skalierung & Phasenverschiebung mit CHOPs
In TouchDesigner gibt es innerhalb eines Geometry COMP keine separaten Knoten pro Instanz.
Um einzelnen Instanzen individuelle Eigenschaften (wie unterschiedliche Winkel oder Größen) zuzuweisen,
nutzt man Daten-Kanäle aus **CHOPs**.
Die Transformationen der einzelnen Punkte (Positionen) und die benutzerdefinierten Werte (z. B. Rotation)
werden über ein Merge CHOP zusammengeführt und gemeinsam an das Geometry COMP übergeben.
circle1 (SOP, Polygon): Das Objekt, das instanziiert wird.circle2 (SOP, Polygon, Divisionen = N): Pfad/Anordnungsmuster für die Instanzen. Hänge daran ein Null SOP namens instances.pattern1 CHOP (Type: Ramp).Length mit der Anzahl der Punkte aus circle2.rotZ.SOP to CHOP ein und verknüpfe es mit dem instances Null SOP (erzeugt tx, ty, tz).SOP to CHOP und das pattern1 CHOP mit einem Merge CHOP.inst_data an.geo1 COMP.inst_data.tx, ty den Feldern Translate X/Y zu.rotZ dem Feld Rotate Z zu.
Verwendet man bei einer vollen Umdrehung (360°\circ) das Intervall 0 bis 360 für N Instanzen,
besitzen die erste (0°\circ) und die letzte Instanz (360°\circ) optisch exakt denselben Winkel.
$$\text{Endwert} = 360 \times \left(1 - \frac{1}{N}\right)$$
| Divisionen ($N$) | To Range (Start) | To Range (Ende) | Erhaltene Winkel pro Instanz |
|---|---|---|---|
| 4 (Quadrat) | 0 | 270 | 0°\circ, 90°\circ, 180°\circ, 270°\circ |
| 6 (Sechseck) | 0° | 300° | 0°\circ, 60°\circ, 120°\circ, 180°\circ, 240°\circ, 300°\circ |
Dynamischer Python-Ausdruck im 2. Feld von To Range:
360 * (1 - 1 / me.par.length)
Das Gesamtsystem lässt sich auf zwei Ebenen sauber über Zeit-Ausdrücke animieren:
Transform SOP nach circle1 unter Rotate Z:
absTime.seconds * 50
Transform SOP nach circle2 unter Rotate Z:
absTime.seconds * 10
pattern1 CHOP auf der Karteikarte Pattern unter Phase:
absTime.seconds * 0.2
Wirkung: Die Rotation wird fortlaufend von einer Instanz an die nächste weitergereicht (La-Ola-Effekt), ohne dass sich das Raumgefüge verändert.