Animationsskript Frau
Im Folgenden wird eine Animation für den Laufweg der Frau installiert. Klicken Sie dazu mit der rechten Maustaste auf “Steuerskript” und wählen Sie im Kontextmenü “Script neu”.

Achtung: Wenn Sie unsere mitgelieferten Animationsskripte verwenden, dann fügen Sie diese mit “Script öffnen” ein.
Für unser Beispiel wird das Skript WalkingWoman.ani aus dem Ordner “Animation-Scripts” der VIS-Installation gewählt.

Verknüpfung Skript – Feature
Im nächsten Schritt muss das Animationsskript “WalkingWoman” mit dem Objekten in VIS-All 3D verbunden werden, auf welches dieses Skript angewandt werden soll. Öffnen Sie dafür den Eigenschaften-Dialog des Skriptes.

Wählen Sie als Feature-Type den Baukran unter Ausgestaltung -> Animiert -> Frau, laufend”.

Nach Klick auf den Feature-Typ wird in diesem Dialog die Struktur des Symbols sowie die Methoden, welche der Featuretyp unterstützt, angezeigt. Nun drücken Sie die Schaltfläche Bearbeiten im Eigenschafts-Dialog und wählen das Feature, auf welches das Skript angewandt werden soll. Mit Klick auf den Pfeil wird das Feature der Kategorie “animierte Features” auf der rechten Seite des Dialogs zugeordnet.

Anschließend schließen Sie den Dialog zur Auswahl der Features und den Eigenschaftsdialog. Jetzt ist das Skript mit dem Feature, also dem Baukran, verknüpft. Der Skriptcode kann natürlich auch editiert werden. Über die Scriptsprache informieren Sie sich im gleichnamigen Kapitel. Falls Sie über die Bedeutung des Skriptcodes WalkingWoman mehr erfahren möchten, bietet die folgende Tabelle einen Überblick.
Erklärung zum Steuerskriptcode “Walking Woman”
Skriptzeile
begin
Erläuterung
Mit Begin wird der Start einer Sequenz eingeleitet. Beginmuss immer zu Beginn eines Skriptes stehen.
‘globale Variablen
Kommentar, dass jetzt alle nötigen globalen Variablen importiert werden.
import long ttime;
Diese Anweisung importiert die globale Zeitvariable ttime.
import long lTimeDiff;
Diese Anweisung importiert die globale Zeitvariable lTimeDiff. Diese Variable beschreibt die vergangene Zeit seit dem letzten Skript-Durchlauf und dem aktuellen Durchlauf.
import float fWVelocity;
Diese Anweisung importiert die globale Variable fWVelocity. Diese Variable steuert die Geschwindigkeit der Frau.
import float fWAngle;
Diese Anweisung importiert die globale Variable fWAngle. Diese Variable gibt den aktuellen Drehwinkel der Frau an.
import float fWx;
Diese Anweisung importiert die globale Variable fWx. Diese Variable gibt den Anteil in X-Richtung der relativen Verschiebung an.
import float fWz;
Diese Anweisung importiert die globale Variable fWz. Diese Variable gibt den Anteil in Z-Richtung der relativen Verschiebung an.
import double dWDistance;
Diese Anweisung importiert die globale Variable dWDistance. Diese Variable gibt die aktuelle Entfernung der Frau von ihrem ursprünglichen Ort an.
import double dPI;
Diese Anweisung importiert die globale Variable dPI.
import bool bComeBack;
Diese Anweisung importiert die globale Variable bComeBack. Diese Variable gibt an, ob die Frau sich zu dem Haus hinbewegt oder zurückkommt.
‘lokale Variable
Kommentar, dass jetzt alle nötigen lokalen Variablen deklariert werden.
double dTranslation( fWVelocity* lTimeDiff * 0.0025 ) ;
Diese Anweisung deklariert die lokale Variable dTranslation. Diese Variable enthält die aktuelle Verschiebung der Frau in der X-Z-Ebene.
‘ Implementierung
Kommentar, dass jetzt die Implementierung erfolgt.
if( false == bComeBack ) dWDistance+= dTranslation;
Falls die Frau sich in das Haus läuft, ist bComeBack gleich false, und die Entfernung der Frau von ihrem ursprünglichen Standort nimmt zu. Deshalb wird von der Distanz ( dWDistance ) der Wert die aktuelle Verschiebung (dTranslation ) dazu addiert.
else dWDistance -=dTranslation;
Falls die Frau aus dem Haus zurückkommt, ist bComeBack gleich wahr, und die Entfernung der Frau von ihrem ursprünglichen Standort nimmt zu. Deshalb wird von der Distanz ( dWDistance ) der Wert die aktuelle Verschiebung (dTranslation ) abgezogen.
double dAnimationDiff( lTimeDiff * fWVelocity * 0.001 );
Die Zeit für die vordefinierte Animation ( das Laufen der Frau ).
this.beginAnimationScene();
Diese Anweisung gibt dem Feature Frau bekannt, dass ab jetzt Manipulierungen vorgenommen werden.
this.RotateY( fWAngle );
Diese Anweisung greift auf die Frau zu, und gibt ihr Bescheid, dass sie sich um den Winkel dWAngle drehen soll.
if ( 30.0 < dWDistance )
begin
bComeBack = true;
fWAngle = dPI;
end
Falls die Frau mehr als 30 Maßeinheiten von ihrem ursprünglichen Standort entfernt ist, befindet sie sich im Haus, und soll wieder umkehren. Deshalb wird die Variable bComeBackauf wahr gesetzt. Außerdem wird der Winkel für die Drehung der Frau auf die entgegengesetzte Richtung gesetzt ( dPI = 180 Grad ), so dass die Frau wieder zurückläuft. Der begin-end-Block gehört zur Bedingung.
if( 0.2 > dWDistance )
begin
bComeBack = false;
fWAngle = 0.0;
end
Falls die Frau sehr nahe an ihren Ursprungsort zurückgekommen ist, läßt man sie wieder umkehren. Deshalb wird bComeBack wieder auf falschgesetzt und der Drehwinkel der Frau wieder auf 0.
‘ Berechnung der Translation
Kommentar, dass jetzt die Verschiebung der Frau in der X-Z-Ebene durchgeführt wird.
fWx += -sin(fWAngle)*dTranslation;
Hier wird der X-Anteil der Verschiebung ausgerechnet.
fWz += -cos(fWAngle)*dTranslation;
Hier wird der Z-Anteil der Verschiebung ausgerechnet.
this.Translate( fWx , 0.0, fWz );
Diese Anweisung greift auf die Frau zu, und verschiebt diese.
double dAniTime;
Diese Anweisung deklariert die lokale Variable dAniTime.
this.getGlobalAnimationTime( dAniTime );
Diese Anweisung setzt dAniTime auf die letzte interne Zeit der vordefinierten Animation.
this.setGlobalAnimationTime( dAniTime + dAnimationDiff );
Diese Anweisung setzt die neue interne Zeit der vordefinierten Animation. Diese Anweisung bewirkt, dass sich die interne Animation der Frau ( die Bewegung der Beine ) fortsetzt.
this.endAnimationScene();
Diese Anweisung gibt der Frau bekannt, dass alle Manipulierungen abgeschlossen sind. Ab jetzt dürfen keine Methoden mehr auf thisaufgerufen werden.
end
Alle Skripte müssen mit end enden.
Start der Animation
Um die Funktion des Skripts zu überprüfen, kann die Animation sofort gestartet werden. Dazu muss das Skript “kompiliert” werden (wie auch die bereits eingefügten Skripte, z.B Baukran). Klicken Sie dazu links im Projektbaum mit der rechten Maustaste auf WalkingWoman.aniund wählen Sie “Kompilieren”. Oder kompilieren Sie alle Skripte über das Kontextmenü (rechte Maustaste auf Projektmappe) – Projekt erstellen. Lesen Sie dann weiter unter Starten der Animation.