Animation

Mit Structure Synth kann man sein Strukturen auch animieren. Dies funktioniert mittels einem JavaScript (wird auch von Structure Synth unterstützt). In diesem Script ändert man in einer Schleife schritt für schritt die Parameter der Transformationen.

Beispiel Struktur:

 

#define MyZ 50

MyRule

rule MyRule {
{ x 0.5 ry 6 rz MyZ s 0.98 h 0.5 } MyRule
{ s 0.7 } sphere
}

Ausgabe:

 


Um die Parameter über das JavaScript ändern zu können, müssen sie als Variablen deklariert werden. In unserem Fall die Variable MyZ, welche die Rotation auf der Z-Achse darstellt.
Variablen werden mit einem #define am anfang des Scripts definiert.
Dieses Script speichern wir nun unter dem Namen MyRule.es.

Wir erstellen nun ein neues Script für die Animation (JavaScript).

 

#javascript

function laufnummer(number) {
number = number + ''; // konvertiert die zahl zu einem string
while (number.length < 4) {
number = "0" + number;
}
return number;
}

Builder.load("MyRule.es");
laufnr = 0;

for (i = 50; i >= 15; i -= 1) {
Builder.reset();
Builder.setSize(0,300);
Builder.define("MyZ", i);
Builder.build();
Builder.raytraceToFile("MyRule" + laufnummer(laufnr) + ".png", true);
laufnr = laufnr + 1;
}

Mit #javascript teilen wir Structure Synth mit, dass es sich beim folgenden Script um ein JavaScript handelt. Die Funktion laufnummer(number) dient uns zum Generieren der PNG-Dateinamen mit fortlaufender Nummer.

Builder.load("MyRule.es") lädt das Script unserer Struktur (welches sich im selben Ordner befindet wie das JavaScript).

In der FOR-Schleife, bei der abwärts gezählt wird (von 50 bis 15) rufen wir Builder.define("MyZ", i) auf. Mit diesem Aufruf definieren wir die Rotation auf der Z-Achse in unserer Struktur (unserer Variable MyZ wird die Laufvariable i zugewiesen). Die darauf folgenden Builder-Aufrufe rendern und speichern die PNGs.

 

Das Ergebnis:

 

 

Weitere und genauere Informationen über Animationsscripting in Structure Synth findet man im Entwickler-Blog unter http://blog.hvidtfeldts.net/index.php/2010/11/scripting-in-structure-synth/