Animationsskript Baukran
Die folgenden Kapitel beschreiben das Einfügen und Verknüpfen verschiedener Animationsskripte mit 3D-Elementen in der VIS-All-Grafik. Im Folgenden wird eine Animation für den Schwenkarm des Baukrans 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 Baukran.ani aus dem Ordner “Animation-Scripts” der VIS-Installation gewählt.

Verknüpfung Skript – Feature
Im nächsten Schritt muss das Animationsskript “Baukran” mit den Objekten in VIS-All verbunden werden, auf welche 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 -> Baukran”.

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. Es gibt nur ein Feature, welches einen Baukran darstellt, deshalb fällt die Wahl natürlich leicht. 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 Baukran mehr erfahren möchten, bietet die folgende Tabelle einen Überblick. Erklärung zum Steuerskriptcode “BuildingCrane”
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 double dPI;
Diese Anweisung importiert die globale Variable dPI.
import float fSeillaenge;
Diese Anweisung importiert die globale Variable fSeillaenge.
import bool bDown;
Diese Anweisung importiert die globale Variable bDown.
import float fRotation;
Diese Anweisung importiert die globale Variable fRotation. Diese Variable wird genutzt, um den Drehwinkel des Krans zu speichern. Bei jedem Durchlauf des Skripts wird diese Variable vergrößert.
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 bool bBCRotate;
Diese Anweisung importiert die globale Variable bBCRotate. Diese Variable gibt an, ob der Kran sich drehen darf.
‘lokale Variable
Kommentar, dass jetzt alle nötigen lokalen Variablen deklariert werden. ( Es gibt aber keine 🙂 )
‘ Implementierung
Kommentar, dass jetzt die Implementierung erfolgt.
if ( true == bBCRotate )
Wenn der Kran arbeitet, dann
begin
Mit Begin wird der Start einer Sequenz eingeleitet.
fRotation += ( 0.0002 * lTimeDiff );
Diese Anweisung vergrößert den Winkel des Baukrans, abhängig von der verstrichenen Zeit seit dem letzten Durchlauf des Skripts. ( Berechnung im Bogenmass )
if ( 2*dPI < fRotation ) fRotation = 0.0;
Falls der Winkel größer als 2*Pi ( also 360 Grad ) ist, wird er wieder auf 0 gesetzt.
if ( bDown )
begin
if ( fSeillaenge <7) fSeillaenge+= 0.001 * lTimeDiff;
else bDown = false;
end
else
begin
if ( fSeillaenge >1) fSeillaenge-= 0.001 * lTimeDiff;
else bDown = true;
end
Anweisung für Seillängenänderung abwärts (bis <7) und aufwärts (>1) mit Schrittweite 0.001
‘debug_print << fSeillaenge;
Hiermit kann der Wert für die Seillänge ausgegeben werden. Entfernt man das Kommentarzeichen, kann dieser Wert über den Button Debug im Animationseditor ausgegeben werden.
this.beginAnimationScene();
Diese Anweisung gibt dem Feature Baukran bekannt, dass die Eigenschaften der Animation verändert werden sollen. Um alle anderen Methoden eines Features aufrufen zu können, muss zuerst diese Methode aufgerufen werden.
this.Tripod_Rotor.RotateJoint( “Rotor_Tripod”, fRotation );
Diese Anweisung lässt den Arm des Baukrans um den Winkel fRotation drehen.
this.Tripod_Rotor.Rotor_LiftTruck.LiftTruck_Cable.Scale( 1, 1 + fSeillaenge, 1 );
this.Tripod_Rotor.Rotor_LiftTruck.LiftTruck_Cable.Cable_Hook.RotateJoint (“Hook_Cable”, -1);
this.Tripod_Rotor.TranslateJoint( “Rotor_Tripod”, fSeillaenge*sin( fRotation ) , 0.0, fSeillaenge*cos( fRotation ) );
Die Anweisungen steuern die Joint- Animation innerhalb des HierarchiKrans.
(siehe dazu Hierarchische Symbole)
this.endAnimationScene();
Diese Anweisung greift auf den Baukran zu, und gibt ihm Bescheid, dass alle Manipulierungen abgeschlossen sind. Ab jetzt dürfen keine Methoden mehr auf this aufgerufen 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 globale Initialisierung und das Steuerskript). Klicken Sie dazu links im Projektbaum mit der rechten Maustaste auf Baukran.ani und 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.
