Skip to content
Menu

VIS-All 3D Handbuch

VIS-All 3D Handbuch

VIS-All® 3D Handbuch

3D Modell Frau

image_print

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”.

Animationseditorfenster: Script öffnen

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.

Beispiel: Skript WalkingWoman.ani

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.

Beispiel: Verknüpfung Skript – Feature

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

Eigenschaften Fenster:Feature-Type

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.

Dialogfenster: Auswahl der animierten Features

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.

Skriptzeile

‘globale Variablen

Erläuterung

Kommentar, dass jetzt alle nötigen globalen Variablen importiert werden.

Skriptzeile

import long ttime;

Erläuterung

Diese Anweisung importiert die globale Zeitvariable ttime.

Skriptzeile

import long lTimeDiff;

Erläuterung

Diese Anweisung importiert die globale Zeitvariable lTimeDiff. Diese Variable beschreibt die vergangene Zeit seit dem letzten Skript-Durchlauf und dem aktuellen Durchlauf.

Skriptzeile

import float fWVelocity;

Erläuterung

Diese Anweisung importiert die globale Variable fWVelocity. Diese Variable steuert die Geschwindigkeit der Frau.

Skriptzeile

import float fWAngle;

Erläuterung

Diese Anweisung importiert die globale Variable fWAngle. Diese Variable gibt den aktuellen Drehwinkel der Frau an.

Skriptzeile

import float fWx;

Erläuterung

Diese Anweisung importiert die globale Variable fWx. Diese Variable gibt den Anteil in X-Richtung der relativen Verschiebung an.

Skriptzeile

import float fWz;

Erläuterung

Diese Anweisung importiert die globale Variable fWz. Diese Variable gibt den Anteil in Z-Richtung der relativen Verschiebung an.

Skriptzeile

import double dWDistance;

Erläuterung

Diese Anweisung importiert die globale Variable dWDistance. Diese Variable gibt die aktuelle Entfernung der Frau von ihrem ursprünglichen Ort an.

Skriptzeile

import double dPI;

Erläuterung

Diese Anweisung importiert die globale Variable dPI.

Skriptzeile

import bool bComeBack;

Erläuterung

Diese Anweisung importiert die globale Variable bComeBack. Diese Variable gibt an, ob die Frau sich zu dem Haus hinbewegt oder zurückkommt.

Skriptzeile

‘lokale Variable

Erläuterung

Kommentar, dass jetzt alle nötigen lokalen Variablen deklariert werden.

Skriptzeile

double dTranslation( fWVelocity* lTimeDiff * 0.0025 ) ;

Erläuterung

Diese Anweisung deklariert die lokale Variable dTranslation. Diese Variable enthält die aktuelle Verschiebung der Frau in der X-Z-Ebene.

Skriptzeile

‘ Implementierung

Erläuterung

Kommentar, dass jetzt die Implementierung erfolgt.

Skriptzeile

iffalse == bComeBack ) dWDistance+= dTranslation;

Erläuterung

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.

Skriptzeile

else dWDistance -=dTranslation;

Erläuterung

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.

Skriptzeile

double dAnimationDiff( lTimeDiff * fWVelocity * 0.001 );

Erläuterung

Die Zeit für die vordefinierte Animation ( das Laufen der Frau ).

Skriptzeile

this.beginAnimationScene();

Erläuterung

Diese Anweisung gibt dem Feature Frau bekannt,  dass ab jetzt Manipulierungen vorgenommen werden.

Skriptzeile

this.RotateY( fWAngle );

Erläuterung

Diese Anweisung greift auf die Frau zu, und gibt ihr Bescheid, dass sie sich um den Winkel dWAngle drehen soll.

Skriptzeile

if ( 30.0 < dWDistance )
begin
bComeBack = true;
fWAngle = dPI;
end

Erläuterung

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.

Skriptzeile

if0.2 > dWDistance )
begin
bComeBack = false;
fWAngle = 0.0;
end

Erläuterung

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.

Skriptzeile

‘ Berechnung der Translation

Erläuterung

Kommentar, dass jetzt die Verschiebung der Frau in der X-Z-Ebene durchgeführt wird.

Skriptzeile

fWx += -sin(fWAngle)*dTranslation;

Erläuterung

Hier wird der X-Anteil der Verschiebung ausgerechnet.

Skriptzeile

fWz += -cos(fWAngle)*dTranslation;

Erläuterung

Hier wird der Z-Anteil der Verschiebung ausgerechnet.

Skriptzeile

this.Translate( fWx , 0.0, fWz );

Erläuterung

Diese Anweisung greift auf die Frau zu, und verschiebt diese.

Skriptzeile

double dAniTime;

Erläuterung

Diese Anweisung deklariert die lokale Variable dAniTime.

Skriptzeile

this.getGlobalAnimationTime( dAniTime );

Erläuterung

Diese Anweisung setzt dAniTime auf die letzte interne Zeit der vordefinierten Animation.

Skriptzeile

this.setGlobalAnimationTime( dAniTime + dAnimationDiff );

Erläuterung

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.

Skriptzeile

this.endAnimationScene();

Erläuterung

Diese Anweisung gibt der Frau bekannt, dass alle Manipulierungen abgeschlossen sind. Ab jetzt dürfen keine Methoden mehr auf thisaufgerufen werden.

Skriptzeile

end

Erläuterung

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.