Zugriff auf gesteuertes Feature ( Symbol )
Der Zugriff auf ein gesteuertes Features funktioniert im objektorientierten Sinn. Es müssen ein oder mehrere Features mit dem Skript verbunden sein. Im Skript wird das Feature über die vordefinierte Variable this angesteuert. Auf this können dann die vom Feature unterstützten Methoden aufgerufen werden. Die unterstützten Methoden hängen vom Featuretyp ab. In der folgenden Tabelle sind alle Methode aufgelistet, die auf jeden Fall unterstützt werden. Alle diese Methoden verwenden float als Datentyp. Die Parameter der Geometriemanipulationen sind immer relativ zum Ausgangspunkt des Objektes zu verstehen.
Syntax
beginAnimationScene();
Beispiel
this.beginAnimationScene();’ Starte Animation
Beschreibung
Diese Anweisung gibt dem Feature bekannt, dass die Eigenschaften der Animation verändert werden sollen. Um alle anderen Methoden eine Features aufrufen zu können, muss zuerst diese Methode aufgerufen werden.
Syntax
endAnimationScene();
Beispiel
this.endAnimationScene();’Ende der Animation
Beschreibung
Diese Anweisung gibt dem Feature bekannt, dass die Manipulation der Eigenschaften abgeschlossen ist. Nachdem diese Methode aufgerufen wurde, können keine weitere Methode mehr auf das Feature aufgerufen werden.
Syntax
RotateX( float W);
Beispiel
this.RotateX( Pi );’Rotation 180 Grad um X-‘Achse
Beschreibung
Rotation des Features um seine X-Achse mit dem angegebenen Winkel.
Syntax
RotateY( float W);
Beispiel
this.RotateY( Pi );’Rotation 180 Grad um Y-Achse
Beschreibung
Rotation des Features um seine Y-Achse mit dem angegebenen Winkel.
Syntax
RotateZ( float W);
Beispiel
this.RotateZ( Pi ); ‘Rotation 180 Grad um Z-Achse
Beschreibung
Rotation des Features um seine Z-Achse mit dem angegebenen Winkel.
Syntax
RotateAxis( float X, float Y, float Z, float W);
Beispiel
this.Rotate( 1.0, 1.0, 0.0, Pi );’ Rotation um 180 Grad um X- und Y-Achse.
Beschreibung
Rotation des Features um X-,Y-,Z-Achse mit dem angegebenen Winkel.
Syntax
Translate( float X, float Y, float Z );
Beispiel
this.Translate( 5.0, 0.0, 0.0 ); ‘Verschiebung um 5.0 auf X-Achse
Beschreibung
Verschiebung des Features in Richtung X, Y, Z.
Syntax
Scale( float X, float Y, float Z );
Beispiel
this.Scale( 2.0, 1.0, 1.0 ); ‘Skalierung um 2.0 in X-Richtung.
Beschreibung
Skalierung des Features in Richtung X, Y, Z.
Animierte X-Symbole
Animierte X-Symbole bieten zwei weitere Methoden. Da für diese Art von Symbolen bereits eine Bewegungsfolge vorgegeben ist, muss diese Bewegung synchronisiert werden. Für diese Synchronisierung definieren diese Symbole zwei Methoden. Beide Methoden benutzen double als Datentyp.
Syntax
getGlobalAnimationTime();
Beispiel
this.getGlobalAnimationTime ( time ); ‘ Gibt Zeit in Millisek zurück.
Beschreibung
Diese Anweisung ruft die relative Animationszeit des X-Symbols ab.
Syntax
setGlobalAnimationTime();
Beispiel
this.setGlobalAnimationTime( newtime );’ Setze neue rel. Zeit in Millisek.
Beschreibung
Diese Anweisung setzt die neue rel. Animationszeit für das X-Symbol. Diese neue Zeit bestimmt, inwieweit die vordefinierte Animation weiter ausgeführt wird.
Hierarchische Symbole
Eine weitere spezielle Klasse von Symbolen sind die hierarchischen Symbole. Diese Symbole sind aus mehreren Teilen ( Elementen ) zusammengebaut. Über die Skriptsprache kann man dabei jedes einzelne Teil ansprechen und modifizieren. Die Struktur des Symbol, also die Zusammensetzung der Teile, kann man dabei über die Skriptumgebung abfragen. Auf jedes Teilstück können wiederum die Standardmethoden ( siehe oben ) ausgeführt werden. Ist das Teilstück wiederum aus anderen Teilstücken zusammengesetzt, kann man auch diese Teilstücke wieder abfragen.

Bei der Zusammensetzung gibt es immer nur genau ein Basiselement, welches alle anderen Teilstücke enthält. Das Basiselement kann beliebig viele Unterelemente haben und jedes weitere Unterelemente wiederum beliebig viele Unterelemente. Es entsteht also eine Hierarchie von Unterelementen. Das Prinzip soll anhand des Riesenrades erläutert werden:
- Das Teil Riesenrad-Basis ist das Basiselement des Symbols. Das Rad ist ein Unterelemente der Basis.
- Das Rad ist ist direkt verknüpft mit der Basis. Die Gondel ist ein Unterelemente des Rades.
- Die Gondel ist direkt mit dem Rad verknüpft.
Die Verknüpfungen zwischen den Einzelteilen funktionieren durch Joints ( in der Praxis eine Verbindung, Gelenk oder Schweißstelle ). Diese Joints sind in der Abbildung durch die schwarzen Linien angedeutet. Jedes dieser Teile muss also mindestens einen Joint aufweisen, um mit in das hierarchische Symbol aufgenommen werden zu können. Diese Joints spielen in der Skriptsprache eine große Rolle, da nur durch sie das Unterelemente angesprochen werden kann. Jedes Oberelement in der Hierarchie kann so viele Unterelemente besitzen, wie es Joints besitzt.
Die Verknüpfung der Teile über ihre Joints kann mit Hilfe der Skript-Umgebung untersucht werden.
Ist die Struktur eines hierarchischen Symbols klar, kann auf sie folgendermaßen im Skript zugegriffen werden:
Syntax
this.Sub1.Sub2….Subn.Function;
Beispiel
this.Basic_Wheel.RotateJoint( “WheelBasic”, f ); ‘Drehe Riesenrad um winkel f
Beschreibung
Dieser Ausdruck greift auf den Joint Subn eines Unterelementes zu. Es können alle Methoden auf den Joint angewandt werden.
In der Skriptsprache wird also nicht auf den Namen der Unterelemente operiert, sondern auf den Jointnamen.
Neben den schon bekannten Basismethoden für Symbole unterstützen die Joints weitere folgende Methoden:
Syntax
RotateJoint( String JointName, float f );
Beispiel
this.Basic_Wheel.RotateJoint( “WheelBasic”, f ); ‘Drehe Riesenrad um winkel f
Beschreibung
Dieser Ausdruck dreht das Unterelement um die Joint-Achse mit dem Winkel f.
Syntax
TranslateJoint( String JointName, float X, float Y, float Z );
Beispiel
this.Basic_Wheel.TranslateJoint( “WheelBasic”, x, y, z ); ‘Verschiebe Riesenrad um x, y, z
Beschreibung
Dieser Ausdruck verschiebt das Unterelement um X, Y, Z relativ.