BahnLand

Bau von animierten Sketchup-Modellen

14 Beiträge in diesem Thema

Bau von animierten Sketchup-Modellen

Einleitung
In Sketchup durchzuführende Vorbereitungen und deren Umsetzung durch den DirectX-Exporter
Drehgestell-Animationen (Rad0 / Rad1)
Rad-Animationen (RadAnim…)
Rad-Animationen innerhalb von Drehgestellen (RadAnim… + Rad0 / Rad1)
Grundsätzliches zur AnimationSet-Definition
Aufteilung einer AnimationSet-Definition in mehrere unabhängige Animationen
An Radumdrehungen geknüpfte Animationen (_AnimWheel)
Signal-Animationen (_AnimSignal)

 

Einleitung

Mit Sketchup Version 8 gebaute Modelle lassen sich mit verschiedenen im Internet verfügbaren DirectX-Exportern in Dateien im DirectX-Format (Dateien mit der Endung ".x", im Folgenden kurz als "x-Datei" bezeichnet) exportieren, die dann in das Modellbahn-Studio importiert werden können. Der im Modellbahn-Studio direkt zur Verfügung gestellte DirectX-Exporter kann im Programm Sketchup direkt als Plugin aufgerufen werden und bereitet die beim Export erzeugten x-Datei-Inhalte so auf, dass sie mit einem gewöhnlichen Textprogramm nachträglich bearbeitet werden können.

Sollen für das Modellbahn-Studio bereitgestellte Modelle animiert werden, müssen die zu animierenden Bauteile bereits im Sketchup-Modell definiert worden sein. Diese werden dann in der x-Datei als separate Unterobjekte ausgewiesen (eigene "Frame"-Abschnitte) und nach dem Importieren in das Modellbahn-Studio dort durch die Bezeichnung dieser Frames identifiziert.

In Abhängigkeit davon, welche Arten von Animationen für das Modell ermöglicht werden sollen, muss die x-Datei gegebenenfalls durch eine Animations-Beschreibung ergänzt werden, die vom DirectX-Exporter nicht aus den exportierten Sketchup-Daten automatisch abgeleitet werden kann. Diese wird von Hand am Ende der vom DirectX-Exporter erzeugten x-Datei ergänzt. Sollen vom Modellbahn-Studio verschiedene Animationen desselben Modells unabhängig voneinander "abgespielt" werden können, muss eine zusätzliche Text-Datei, die denselben Namensrumpf wie die x-Datei, aber die Endung ".anim" besitzt (kurz "anim-Datei"), bereitgestellt werden. Diese enthält konkrete Anweisungen, wie die am Ende der x-Datei definierte "Gesamt-Animation" auf verschiedene "Teil-Animationen" aufgeteilt werden soll.

Die im Wiki abgelegte Übersichts-Beschreibung listet insbesondere jene Animations-Bezeichnungen auf, die im Modellbahn-Studio bereits vordefiniert sind, und denen deshalb dort bereits enthaltene Bewegungs-Mechanismen automatisch zugeordnet werden können, ohne dass hierfür in der x-Datei und in der anim-Datei eine "vollständige" Animationsbeschreibung hinterlegt sein muss.

In der nachfolgenden Beschreibung wird anhand von konkreten Beispielen zu ausgewählten Animations-Typen aus der oben referenzierten Liste und einer frei definierten Animation gezeigt, wie die erforderlichen Animations-Definitionen bereitgestellt werden und was hierbei zu beachten ist.

In diesem Zusammenhang sei auch auf den Thread Multianimationen im Forum hingewiesen.

Diese Beschreibung wird gegebenenfalls zu einem späteren Zeitpunkt erweitert.


In Sketchup durchzuführende Vorbereitungen und deren Umsetzung durch den DirectX-Exporter

Um im Modellbahn-Studio als separate Bausteine ("Unterobjekte") des Modells erkannt zu werden, müssen die betroffenen Bauteile in der x-Datei als eigene "Frames" definiert sein. Diese Frames werden von dem oben referenzierten DirectX-Exporter automatisch generiert, wenn die Einzelbestandteile dieser Bauteile im Sketchup-Modell jeweils in "Gruppen" zusammengefasst und mit einer Gruppen-Bezeichnung versehen wurden.

Rad0-gruppe.png
Bild 01   Gruppierung der Drehgestelle Rad0 und Rad1

Im obigen Beispiel sind die Einzelteile der Drehgestelle eines Schnellzugwagens in den beiden Gruppen "Rad0" und "Rad1" zusammengefasst. Der Abstand zwischen dem Wagenkasten und den beiden Drehgestellen dient nur der Veranschaulichung. Bei einem zu exportierenden Sketchup-Modell ist der Wagenkasten auf den beiden Drehgestell-Gruppen Rad0 und Rad1 korrekt aufgesetzt.

In der vom DirectX-Exporter erzeugten x-Datei werden diese beiden Gruppen als "Frames" Rad0 und Rad1 dargestellt, die vom Modellbahn-Studio beim Import als speziell zu behandelnde Unterobjekte des Gesamtobjekts erkannt werden.

Rad0-frame.png
Bild 02   Frames Rad0 und Rad1 der x-Datei

In jeder der beiden gezeigten "FrameTransformMatrix"-Definitionen der DirectX-Syntax zeigen die diagonalen Einsen in den 3 ersten Zeilen an, dass das jeweilige Unterobjekt ("Rad0" und "Rad1") gegenüber der "Grundstellung" nicht verdreht ist. Die gelb hinterlegten Zahlen geben die Mittelpunkt-Koordinaten der beiden Unterobjekte (der Drehgestelle) in Bezug zum Koordinatensystem des Gesamtmodells (des 4-achsigen Wagens) an. Da der Koordinaten-Nullpunkt nach dem Export des Sketchup-Modells in die x-Datei nicht unbedingt mit dem Mittelpunkt des Modells übereinstimmen muss, können die Beträge der Mittelpunkt-Koordinaten von symmetrisch zum Mittelpunkt des Gesamtmodells angeordneten Unterobjekten leicht voneinander abweichen (dies trifft hier beispielsweise für den letzten Koordinatenwert zu). Die senkrechten Punkt-Linien repräsentieren an der jeweiligen Stelle ausgeblendete Teile der x-Datei.

DirectX erwartet 3-dimensionale Koordinaten-Bezeichnungen grundsätzlich im amerikanischen System. Deshalb kennzeichnet in der gelb hinterlegten Zahlenfolge die erste Zahl die x-Koordinate, die zweite Zahl die z-Koordinate und die dritte Zahl die y-Koordinate. Dies muss immer beachtet werden, wenn in der von Hand zu ergänzenden Animations-Definition Verschiebungen, Drehungen oder Dehnungen im Koordinatensystem spezifiziert werden.

Die vorliegende Beschreibung geht davon aus, dass die an das Modellbahn-Studio zu übergebende x-Datei das Modell bereits im H0-Maßstab beschreibt und nicht durch das Modellbahn-Studio selbst erst in den H0-Maßstab umgewandelt werden muss (mit dem oben im Forum des Modellbahn-Studios direkt zur Verfügung gestellten  DirectX-Exporter (siehe obigen Link) können x-Dateien im H0-Maßstab aus Sketchup-Vorlagen (skp-Dateien) im Maßstab 1:1, 1:87 und 1:100 abgeleitet werden). Entsprechend beziehen sich die Maße in den hier betrachteten x-Dateien (Einheit "cm") stets auf den H0-Maßstab 1:87.  


Drehgestell-Animationen (Rad0 / Rad1)

Mit den Bauteil-Gruppen "Rad0" und "Rad1" lassen sich exakt zwei Drehgestelle von mehrachsigen Fahrzeugen definieren. Die Einzelteile der beiden Drehgestelle werden im Sketchup-Modell jeweils zu einer Gruppe zusammengefasst und mit "Rad0" und "Rad1" bezeichnet (siehe Bild 1). Beim Export erzeugt der DirectX-Exporter hieraus die beiden Frames "Rad0" und "Rad1" (siehe Bild 2).

Anhand der Schlüsselbegriffe "Rad0" und "Rad1" erkennt das Modellbahn-Studio beim Import, dass die so bezeichneten Unterobjekte Drehgestelle sind, und richtet sie daher auf dem Gleis automatisch an der Spur aus. Deshalb braucht die x-Datei hier nicht um eine zusätzliche Animations-Definition ergänzt zu werden.


Rad-Animationen (RadAnim…)

Bauteil-Gruppen, die im Sketchup-Modell die Bezeichnung "RadAnim" oder "RadAnim…" ("…" repräsentiert hierbei eine beliebige Zahlen- und Buchstaben-Kombination) besitzen, werden nach dem Import der aus dem Sketchup-Modell erzeugten x-Datei vom Modellbahn-Studio dann, wenn sie auf einem Gleis bewegt werden, als auf der Schienenoberfläche abrollende Radsätze aufgefasst und entsprechend verarbeitet.

Radanim-gruppe.jpg
Bild 03   Gruppierung der Radsätze RadAnim0 und RadAnim1

Auch bei diesem Bild wurde der Wagenkasten nur zur Veranschaulichung der "RadAnim…"-Gruppen angehoben. Beim zu exportierenden Sketchup-Modell sitzt der Wagenkasten mit seinen Radlagern korrekt auf den mit RadAnim0 und RadAnim1 bezeichneten Radsätzen auf.

Sollen mehrere Radsätze im Modell "bewegt" werden, muss jeder als Gruppe definierter Radsatz mit einem eindeutigen Namen, beginnend mit "RadAnim", versehen werden. Die entsprechenden Ausschnitte aus der mithilfe des DirectX-Exporters erzeugten x-Datei sehen wie folgt aus:

Radanim-frame.png
Bild 04   Frames RadAnim0 und RadAnim1 der x-Datei

Auch hier kann die x-Datei ohne zusätzliche Nachbearbeitung direkt in das Modellbahn-Studio importiert werden.

Beim Abrollen auf einem H0-Gleis (Modell-Maßstab 1:87) legt ein vom Modellbahn-Studio animierter Radsatz unabhängig von seinem Radumfang bei einer vollen Umdrehung 6,283 cm (auf 3 Dezimalstellen gerundet) zurück. Dies entspricht dem Umfang eines Kreises mit 1 cm Radius. Bei Verwendung eines anderen Modell-Maßstabs verkürzt oder verlängert sich diese Strecke im Verhältnis des verwendeten Maßstabs zum H0-Maßstab. Entsprechend verändert sich auch der "Abroll-Radius" für diese Maßstäbe im gleichen Verhältnis.

Auf den Vorbild-Maßstab 1:1 umgerechnet beträgt der für das Modellbahn-Studio korrekte Abroll-Radius demnach 87 cm oder 870 mm. Besitzen die Räder des zu animierenden Radsatzes einen größeren Radius, drehen sie beim Bewegen über das Gleis durch. Ist der Radius dagegen kleiner, rutschen die Räder über das Gleis hinweg.

Solange der Radius der zu animierenden Räder "nicht zu sehr" vom oben genannten Abroll-Radius abweicht oder sich das Erscheinungsbild des Rades nach einer Drehung um wenige Grad bereits wiederholt, fällt das unkorrekte Abrollen zu großer oder zu kleiner Räder nicht besonders auf. Andernfalls muss man die Drehung gegebenenfalls mithilfe der weiter unten beschrieben "_AnimWheel"-Animation nachbilden, um den Durchdreh- oder Durchrutsch-Effekt zu vermeiden oder zumindest zu minimieren.   


Rad-Animationen innerhalb von Drehgestellen (RadAnim… + Rad0 / Rad1)

Mit dem oben referenzierten DirectX-Exporter können in der aus einem Sketchup-Modell erzeugten x-Datei entweder bewegliche Drehgestelle oder sich drehende Radsätze realisiert werden, aber nicht beides gleichzeitig. Dies liegt daran, dass bei zu animierenden Radsätzen in Drehgestellen die RadAnim-Gruppen als Teil der Rad0/Rad1-Gruppen konfiguriert sein müssen, der Exporter aber in der x-Datei keine verschachtelten Frames erzeugt.

Es ist jedoch möglich, mit wenigen Handgriffen innerhalb der x-Datei des Drehgestell-Wagens RadAnim-Frames in die Rad0/Rad1-Frames einzubetten, sodass letztendlich in das Modellbahn-Studio eine x-Datei mit gleichzeitig funktionsfähigen Drehgestellen und animierten Radsätzen importiert werden kann. Hierzu geht man wie folgt vor:

Das nachfolgende Bildbeispiel zeigt ein fiktives Wagen-Modell mit zwei identischen Drehgestellen und darin enthaltenen Speichenrädern, die animiert werden sollen.

Drehgstell-wagen.png
Bild 05   Drehgestellwagen mit Speichenrädern

Zunächst bildet man wie in Abschnitt Drehgestell-Animationen (Rad0 / Rad1) beschrieben aus den Drehgestellen des betrachteten Wagens die Gruppen "Rad0" und "Rad1" und erzeugt hieraus die x-Datei für den Wagen mit beweglichen Drehgestellen, aber fest mit den Drehgestellen verbundenen Radsätzen.

Drehgestell.png
Bild 06   Sketchup-Modell des Drehgestells mit gruppierten Radsätzen

Dann isoliert man ein Drehgestell (z.B. Rad0), löst die Gruppe auf und bildet aus den im Drehgestell enthaltenen Radsätzen die Gruppen "RadAmim0" und "RadAnim1" (bei mehr als 2 Radsätzen im Drehgestell werden weitere Gruppen "RadAnim2" usw. gebildet).

Drehgestell0.png
Bild 07   In eine Gruppe zusammengefasster Rest des Drehgestells

Den Rest des Drehgestells fasse man in einer weiteren Gruppe zusammen (im vorliegenden Beispiel mit "Drehgestell0" bezeichnet).

Das komplette Drehgestell mit den gruppierten Radsätzen wird nun als Sketchup-Modell an den DirectX-Exporter übergeben, der daraus eine x-Datei für das Drehgestell erzeugt. Nach den Vorgaben aus dem Sketchup-Modell enthält die x-Datei nun die Frames "RadAnim0" und "RadAnim1" für sich drehende Radsätze.

Im folgenden Bild sind nun die für die Nachbearbeitung relevanten Teile der beiden x-Dateien für den Wagen (links) und für das separierte Drehgestell (rechts) nebeneinander gestellt.

Frame-mix.png
Bild 08   x-Dateien des 4-achsigen Wagens (links) und eines separierten Drehgestells (rechts)

Grundsätzlich erzeugt der DirectX-Exporter einen alle Frames umschließenden "Basis-Frame" mit der Bezeichnung "_Global_", der hier - obwohl von der händischen Nachbearbeitung nicht tangiert - zum besseren Verständnis mit dargestellt wird. Die senkrechten Punktlinien kennzeichnen wieder Teile der x-Dateien, die in der obigen Darstellung an den jeweiligen Stellen ausgeblendet wurden.

In der x-Datei des Wagens müssen nun die "inneren Daten der Frames Rad0 und Rad1 (die Gitternetz- oder Mesh-Daten, die keine RadAnim-Frames enthalten - hier rot umrahmt und durchgestrichen) entfernt und jeweils durch den Inhalt des grün umrandeten Abschnitts aus der x-Datei des Drehgestells ersetzt werden. Dieser Abschnitt kann hier für beide Drehgestelle verwendet werden, da diese identisch sind. Andernfalls muss für beide Drehgestelle des Wagens je eine eigene x-Datei erstellt und der entsprechende Abschnitt dann für jedes Drehgestell separat in die x-Datei des Wagens übertragen werden.

Die modifizierte x-Datei des Wagens hat nun folgende Gestalt:

Radradanim.png
Bild 09   Nachbearbeitete x-Datei eines Drehgestellwagens mit animierten Radsätzen

Die vom Modelbahn-Studio auszuwertenden Frames müssen mit eindeutigen Namen versehen sein. Deshalb müssen die grün unterlegten Frame-Bezeichnungen innerhalb des Frames Rad1 gegenüber den gelb unterlegten Bezeichnungen im Frame Rad0 abgeändert werden. Außerdem wird der vertikale Versatz in der FrameTransformMatrix der Frames "Rad0" und "Rad1" auf 0 gesetzt (rote hervorgehobene Werte), da dieser Versatz bereits in der FrameTransformMatrix der Frames "Drehgestell0" und "Drehgestell1" enthalten ist (schwarz hervorgehobene Werte). Die horizontale Position von Rad0 und Rad1 muss jedoch erhalten bleiben (in den übernommenen "Drehgestell"-Frames nicht vorhanden). Sollen die beiden Drehgestelle entgegengesetzt ausgerichtet sein, muss eines davon noch um 180° gedreht werden. Dies erreicht man, indem man in der FrameTransformMatrix im Frame Rad0 oder im Frame Rad1 die erste und die dritte "1" (für die Drehung in der x-y-Ebene) negiert (violett hervorgehobene Werte).

Die so nachbearbeitete x-Datei des Wagens kann nun abgespeichert und im Modellbahn-Studio als "Rollmaterial" importiert werden. Wird der Wagen nun auf einem Gleisstrang in Bewegung gesetzt, folgen die Drehgestelle der Gleisspur und die Räder rollen auf der Schienenoberfläche ab.     


Grundsätzliches zur AnimationSet-Definition

Während bei den bisher beschriebenen Animationen das Modellbahn-Studio allein schon aufgrund der Frame-Bezeichnungen (Rad0, Rad1, RadAnim…) und der Umgebungs-Beschaffenheit (Gleisverlauf) weiß, was zu tun ist, benötigen die nachfolgend beschriebenen Animationen Anweisungen, welche die auszuführenden Bewegungen beschreiben. Hierzu muss die mithilfe des DirectX-Exporters erzeugte x-Datei um eine "AnimationSet"-Definition ergänzt und in bestimmten Fällen zusätzlich eine Anweisungs-Datei (Endung ".anim") angelegt werden, in der die im AnimationSet beschriebenen Animations-Sequenzen auf verschiedene Animationen aufgeteilt werden.   

Die AnimationSet-Definition und eine zugehörige "AnimTicksPerSecond"-Anweisung besitzen hierbei folgende Form:

Animationset2.png
Bild 10   Struktur einer AnimationSet-Definition

Ein "AnimationSet" (gelb mit orange unterlegter Bezeichnung) besteht aus einer oder mehreren "Animation"-Definitionen (Animationsbeschreibungen (rosa) für jeweils ein animiertes Unterobjekt, das über seinen "Frame"-Namen in geschweifter Klammer (weiß unterlegt) referenziert wird). Jede Animationsbeschreibung enthält mindestens einen "AnimationKey" (grün), kann jedoch bis zu 3 AnimationKeys unterschiedlicher Typen enthalten. Der AnimationKey ist hierbei wie folgt aufgebaut:

  • AnimationKey-Typ (0 = Rotation, 1 = Skalierung, 2 = Positionierung)
  • Anzahl n der im AnimationKey enthaltenen Zustände, deren Abfolge die eigentliche Animation bewirkt.
  • Liste der n Zustands-Einträge, die von 0 bis (n-1) durchnummeriert sind.

Jeder Zustands-Eintrag ist - abhängig vom AnimationKey-Typ - wie folgt zusammengesetzt:

  • Ordnungsnummer = Position des Eintrags innerhalb der kompletten Zustandsfolge. Der erste Zustands-Eintrag besitzt die Nummer 0, der letzte die Nummer (n-1).
  • Anzahl der den Zustand beschreibenden Zustandswerte. Bei der Skalierung (AnimationKey-Typ 1) und der Positionierung (AnimationKey-Typ 2) ist dies der Wert 3, bei der Rotation (AnimationKey-Typ 0) der Wert 4.
  • Die 3 oder 4 Zustandswerte selbst.

Die Bedeutung der Zustandswerte hängt vom Typ des AnimationKeys ab:

AnimationKey = 1 (Skalierung)
scale-x = Dehnungsfaktor entlang der x-Achse des Gesamtmodells
scale-z = Dehnungsfaktor entlang der z-Achse des Gesamtmodells
scale-y = Dehnungsfaktor entlang der y-Achse des Gesamtmodells

Beispiele:
[scale-x, scale-z, scale-y] = [1, 1, 1]   Original-Ausdehnung (Grundeinstellung)
[scale-x, scale-z, scale-y] = [2, 1, 0.5]   Doppelte Ausdehnung in x-Richtung, halbe Ausdehnung in y-Richtung

Achtung:
Das Dezimalzeichen muss immer ein Punkt sein, weil das Komma in der DirectX-Syntax genauso wie das Semikolon grundsätzlich als Trennzeichen interpretiert wird. x-Dateien, die mit Dezimalkomma versehene Werte enthalten, können nicht in das Modellbahn-Studio importiert werden (es wird eine Fehlermeldung ausgegeben).

AnimationKey = 2 (Positionierung)
pos-x = Position relativ zum Koordinaten-Nullpunkt in Richtung der x-Achse des Gesamtmodells
pos-z = Position relativ zum Koordinaten-Nullpunkt in Richtung der z-Achse des Gesamtmodells
pos-y = Position relativ zum Koordinaten-Nullpunkt in Richtung der y-Achse des Gesamtmodells

Beispiele:
[pos-x, pos-z, pos-y] = [0, 0, 0]   Das Unterobjekt wird im Koordinaten-Nullpunkt positioniert
[pos-x, pos-z, pos-y] = [2.5, 0, -1]   Positionierung auf der Koordinate (2.5 cm, 0 cm, -1 cm) im Koordinatensystem

Die "Grundeinstellung" ist hierbei durch jene Koordinaten-Werte festgelegt, die in der FrameTransformMatrix des durch die Animation repräsentierten Unterobjekts (Frames) enthalten sind (siehe z.B. die gelb unterlegten Werte in Bild 02).

AnimationKey = 0 (Rotation)
Eine Drehung des Unterobjekts mithilfe der Zustandswerte [rot, rot-x, rot-y, rot-z] lässt sich am einfachsten mit folgenden Beispielen beschreiben:

[rot, rot-x, rot-y, rot-z] = [1, 0, 0, 0]     Grundeinstellung (keine Drehung in irgendeine Richtung)
[rot, rot-x, rot-y, rot-z] = [cos(w/2), sin(w/2), 0, 0]     Drehung um die x-Achse mit Winkel w
[rot, rot-x, rot-y, rot-z] = [cos(w/2), 0, sin(w/2), 0]     Drehung um die z-Achse mit Winkel w
[rot, rot-x, rot-y, rot-z] = [cos(w/2), 0, 0, sin(w/2)]     Drehung um die y-Achse mit Winkel w

Mit Blick in die Richtung der jeweiligen positiven Koordinatenachse bewirken ein positiver Winkel eine Rechtsdrehung und ein negativer Winkel eine Linksdrehung, wobei cos und sin die Winkelfunktionen Cosinus und Sinus repräsentieren und dort als Argument stets der halbe Drehwinkel eingesetzt werden muss.

Es können auch mehr als 2 Werte aus [rot, rot-x, rot-y, rot-z] mit einem Wert ungleich 0 belegt werden. Nur lassen sich dann die Drehachse und der Drehwinkel nicht mehr so einfach ableiten. Generell ist bei einer von den obigen Beispielen abweichenden Wahl der Zustandswerte

[rot, rot-x, rot-y, rot-z] = [u, x, z, y]     

darauf zu achten, dass die Bedingung

u² + x² + z² + y² = 1

erfüllt ist. Andernfalls wird das Unterobjekt bei der durch diese Zustandswerte bewirkten Drehung verzerrt.

Die Anzahl n spezifizierter Zustandseinträge muss für alle AnimationKeys innerhalb einer Animations-Definition und für alle Animationen innerhalb des AnimationSets gleich sein. Wenn eine AnimationKey-Definition nur Zustands-Einträge in der Grundeinstellung enthält, also für die übergeordnete Animation keine Auswirkung besitzt, braucht dieser AnimationKey in der betroffenen Animations-Definition nicht spezifiziert zu werden.
 

AnimTicksPerSecond
Der in der oberhalb der AnimationSet-Definition blau unterlegt wiedergegebenen "AnimTicksPerSecond"-Definition hinterlegte Ganzzahlwert m bestimmt, dass in sämtlichen Zustandsfolgen aus der AnimationSet-Definition m Zustandseinträge in 1 Sekunde "abgearbeitet" werden sollen. Ein hoher Wert bewirkt also ein schnelles, ein niedriger Wert ein langsames Abspielen aller im AnimationSet spezifizierten Animationen.


Aufteilung einer AnimationSet-Definition in mehrere unabhängige Teil-Animationen

Besitzt die x-Datei eines im Modellbahn-Studio zu animierenden Modells eine AnimationSet-Definition, ohne dass es parallel dazu eine "gleichnamige" anim-Datei gibt, wird vom Modellbahn-Studio die gesamte Definition als zu einer einzigen Animation gehörig aufgefasst. Die Unterteilung der AnimationSet-Definition in verschiedene "Animationen" (im Bild 10 rosa unterlegt) bezieht sich hierbei auf die Animation verschiedener Unterobjekte, die beim Start der (Gesamt-)Animation synchron abgearbeitet werden (die Zustandseinträge mit der Nummer k in allen AnimationKey-Definitionen aller Animationen des AnimationSets kommen gleichzeitig zur Ausführung).

Möchte man nun für ein Modell mehrere voneinander unabhängige Animationen bereitstellen, werden diese in der AnimationSet-Definition zu einer "Animationskette" zusammengefasst. D.h. die Zustandsfolgen der einzelnen Animationen werden zu einer großen Zustandsfolge verkettet. Abgesehen von wenigen Ausnahmen ist nun für die korrekte Lokalisierung der einzelnen "Teil-Animationen" durch das Modellbahn-Studio die anim-Datei, in der die Position der einzelnen Animationen innerhalb der globalen Animationskette hinterlegt ist, zwingend erforderlich.

Im folgenden Beispiel werden die Seitenbordklappen und die Puffer-seitige Stirnwandklappe (im folgenden Bild rechts oben) im Sketchup-Modell Gotthard-Autoverlad-Rampenwagens als Gruppen "Links", "Rechts" und "Vorne" zusammengefasst.

Rampenwagen.png
Bild 11   Sketchup-Modell des Gotthard-Autoverlad-Rampenwagens mit gruppierten Bordwandklappen

Im Modellbahn-Studio sollen diese Klappen wie nachfolgend angedeutet unabhängig voneinander um ihre jeweiligen Scharnier-Befestigungen gedreht werden können.

Rampenwagen.jpg
Bild 12   SBB-Autoverlad-Rampenwagen mit getrennt animierten Kopf- und Seitenborden

Hierfür werden zunächst die in den Frames der x-Datei hinterlegten Koordinaten (jeweils gelb unterlegt) der zu animierenden Bordwandklappen benötigt, welche deren Grundpositionen relativ zum Koordinaten-Nullpunkt des Gesamtmodells repräsentieren.  

Rampenwagen-x.png
Bild 13   Frames der gruppierten Bordwandklappen des Rampenwagens

Diese werden als Ausgangskoordinaten für die im nachfolgenden AnimationSet beschriebenen Animationszustände benötigt.

Rampenwagen-x-anim.png
Bild 14   AnimationSet-Definition für den Gotthard-Autoverlad-Rampenwagen

Das AnimationSet enthält für jedes zu animierende Unterobjekt ("Vorne", "Links" und "Rechts") eine Animations-Definition, die wiederum die AnimationKey-Definitionen für die Rotation und die Position enthalten (in der x-Datei sind die AnimationKeys wie im Bild 10 gezeigt jeweils hintereinander angeordnet). Die AnimationKeys für die Skalierung können weggelassen werden, da für die Bordwandklappen keine Größenänderung vorgesehen ist.

Die in den Frames referenzierten Koordinaten der Bordwandklappen, die für deren Positionierung relevant sind, sind Mittelpunkt-Koordinaten. Da die Drehung der Klappen jedoch in den Scharnier-Achsen (also abseits dieser Koordinaten verlaufen, muss die Position der Bordwandklappen entsprechend ihrer Neigung jeweils so korrigiert werden, dass die Scharnier-seitigen Kanten der Klappen auf der jeweiligen Drehachse verharren. Dies wird erreicht, indem man die Mittelpunkt-Koordinaten entlang einer Kreisbahn um die Drehachse verschiebt. Deshalb wird neben dem AnimationKey für die Rotation auch jener für die Positionierung benötigt.

Im obigen Beispiel sind für die Drehung der Bordwandklappen um jeweils 90° zusätzlich zum Ausgangszustand weitere 6 Zustände im Winkelabstand von 15° (also insgesamt 7 zu beschreibende Zustände) berücksichtigt, woraus sich 6 Einzelbewegungen (zwischen jeweils 2 Zuständen) ergeben. Dies gilt für jedes der drei Unterobjekte. Da diese in der Gesamt-Animation als hintereinander-liegende Abschnitte realisiert sind, besitzt jeder AnimationKey in jeder Animations-Definition 21 Zustandseinträge, von denen die Einträge 0-6 die Animation des Unterobjekts "Vorne", die Einträge 7-13 jene des Unterobjekts "Links" und schließlich die Einträge 14-20 jene des Unterobjekts "Rechts" repräsentieren.

Die Zuordnung der einzelnen Zustandseinträge (Animations-Abschnitte) zu den Unterobjekt-spezifischen Animationen erfolgt nun über die anim-Datei mit dem Inhalt

Rampenwagen_anim.png
Bild 15   Animations-Aufteilung in der anim-Datei

Dieser Inhalt bewirkt schließlich die Anzeige und Auswahlmöglichkeit der einzelnen Animationen im Modellbahn-Studio innerhalb des Eigenschaftsfensters des Wagens. Animationen aus einer Animationskette, deren Lokalisierung durch eine anim-Datei festgelegt wird, können auch aus unterschiedlich vielen Zustandseinträgen bestehen. Neben der Lokalisierung wird hier auch die Länge der Animation ausschließlich durch die Angaben in der anim-Datei bestimmt.  

Mit dem Inhalt der anim-Datei wird nun auch klar, warum alle Animations-Sequenzen in den Animations-Definitionen aller Unterobjekte berücksichtigt werden müssen. Jene Abschnitte, die für das jeweilige Unterobjekt nicht relevant sind, werden dort mit den "Grundeinstellungen" belegt. Bei der Rotation ist dies der Zustandseintrag [1, 0, 0, 0]. Bei der Positionierung müssen dagegen die Koordinaten aus den FrameTransformMatrix-Einträgen der zugehörigen Frames (siehe Bild 13) übernommen werden.

In den für das jeweilige Unterobjekt relevanten Zustandseinträgen (welche im Modellbahn-Studio für die jeweilige Animation ausgewertet werden sollen) stehen beim AnimationKey für die Rotation die Cosinus-Werte der halben (!) Winkel in der ersten Spalte und die zugehörigen Sinus-Werte in der Spalte für jene Koordinaten-Achse, zu der die jeweilige die Drehachse parallel verläuft (bei der stirnseitigen Klappe ist dies die x-Achse, bei den seitlichen Klappen die y-Achse, weil der Wagen insgesamt entlang der y-Achse ausgerichtet ist). Die Koordinaten beim AnimationKey für die Positionierung beschreiben - jeweils beginnend von den aus der Frame-Definition (Bild 13) übernommenen Ausgangskoordinaten - einen Viertelkreis um die jeweilige Scharnier-Achse.
 

An Radumdrehungen geknüpfte Animationen (_AnimWheel)

Mit der Animationsbezeichnung "_AnimWheel" werden solche Animationen gekennzeichnet, die in Abhängigkeit von einer Fortbewegungs-Geschwindigkeit wiederholt abgespielt werden sollen. Beispiele hierfür sind das Gestänge einer Dampflokomotive, das sich in Anhängigkeit von der Radumdrehungs-Geschwindigkeit vor und zurück sowie auf und ab bewegt, oder die Schritte eines Läufers.

Während beim Beispiel "Lokomotive" die _AnimWheel-Animation parallel (d.h. synchron) zur Rad-Animation ("RadAnim…") abläuft und man deshalb hier den direkten Zusammenhang sofort erkennt, gibt es beim Beispiel "Läufer" keine parallel ablaufende Rad-Animation. Dennoch hält sich die _AnimWheel-Animation grundsätzlich an dieselbe Zyklus-Periode: Ein voller Zyklus der _AnimWheel-Animation ist genau dann durchlaufen, wenn das Modell, welches die _AnimWheel-Animation enthält, im Modell-Maßstab H0 eine Strecke der Länge 6,283 cm (= Umfang eines Kreises mit Radius 1 cm - auf 3 Dezimalstellen gerundet) zurückgelegt hat.

Solange sich das Gesamtmodell in Bewegung befindet, wird die Animation nach Ablauf einer Zyklus-Periode wiederholt. Für die Realisierung einer "geschlossenen" Bewegung ist es daher erforderlich, dass der letzte Animationszustand mit dem ersten identisch ist. Die Anzahl der Zustandseinträge, aus der sich die Animation zusammensetzt, kann hierbei beliebig sein. Da die Bewegung zwischen zwei aufeinanderfolgenden Zustandseinträgen vom Modellbahn-Studio "interpoliert" wird (die Bewegung von einem Zustand zum nächsten geht "flüssig" vonstatten), genügen im günstigsten Fall 3 Zustände, von denen der mittlere von den beiden äußeren verschieden sein muss, damit überhaupt eine Bewegung sichtbar wird.

Anhand des nachfolgenden Beispiels eines "abstrakten" Läufers (der wie im nachfolgenden Bild gezeigt nur aus 3 Quadern für den Rumpf (gelb) und für die beiden Füße (blau und grün) besteht) werden 3 unterschiedlich komplexe Anwendungen der _AnimWheel-Animation  gezeigt, die alle den Gang des Läufers nachbilden.

Maennlein.jpg
Bild 16   Drei _AnimWheel-Animations-Varianten zur Darstellung eines voran schreitenden Läufers

Ein minimaler Geh-Zyklus besteht aus 2 Schritten, wobei ein Fuß nach vorne bewegt wird, während der andere am Boden fixiert bleibt. Die Schrittlänge ist also genau die halbe Streckenlänge für eine Geh-Periode. Relativ zum sich gleichmäßig nach vorne bewegenden Rumpf pendeln die beiden Füße hin und her, wobei der maximale Ausschlag der Füße genau der halben Schrittweite entspricht.

2-schritt-zyklus.png
Bild 17   AnimationSet des Läufers mit einer Periode über 2 Schritte

Die relativen Ausschläge der Füße bezogen auf die Gesamtfigur sind in der obigen AnimationSet-Definition wiedergegeben. Dass die gelb unterlegten Zahlen nicht symmetrisch sind, liegt an der nicht mit dem Koordinaten-Nullpunkt identischen Position des Mittelpunkts der Gesamtfigur, der in x- und y-Richtung mit den Mittelpunkt-Koordinaten des Rumpfes übereinstimmt (siehe die hellgrün unterlegte x-Koordinate in der FrameTransformMatrix des Rumpfes). Subtrahiert man diese Zahl von den gelb unterlegten "Ausschlags-Koordinaten", wird der symmetrische Ausschlag relativ zur Mitte des Gesamtmodells sichtbar.   
Da das Modellbahn-Studio zwischen den Werten der einzelnen Zustandseinträge eine lineare Interpolation durchführt, erscheint der "Marsch" des Läufers als "gleichmäßige Bewegung", wobei ein Fuß am Boden "haften" bleibt, während sich der andere mit der doppelten Geschwindigkeit des Rumpfes (ebenfalls am Boden entlang) nach vorne bewegt.

Die sich aus dem AnimationSet aus Bild 17 ergebende Schrittweite ist in Bild 16 durch die rechte Figur dargestellt. Sie erscheint gegenüber der Gesamthöhe der Figur übermäßig groß. Man kann nun die Schrittweite verkleinern, indem man die Anzahl der "Schritt-Paare" innerhalb des Perioden-Abschnitts erhöht. In Bild 18 wurde die Anzahl der Schritte, die innerhalb einer Animationsperiode ausgeführt werden sollen, verdreifacht: Anstelle von bisher 2 Schritten werden also auf der Distanz für einen Animationszyklus 6 Schritte ausgeführt, wodurch deren Weite auf ein Drittel reduziert werden kann.

6-schritt-zyklus.png
Bild 18   AnimationSet des Läufers mit einer Periode über 6 Schritte

Im Bild 16 zeigt die mittlere Figur die sich durch diese Modifikation in der AnimationSet-Definition ergebende maximale Schrittweite. Die Frequenz der Schritte ist hier natürlich 3 mal so groß, da sich die Länge der Ausführungszeit für den kompletten Geh-Zyklus bezogen auf die Geschwindigkeit des Gesamt-Modells nicht geändert hat. Die eigentliche Figuren-Beschreibung durch die der AnimationSet-Definition vorgelagerten Frames ist von dieser Modifikation nicht betroffen.  

Da bei beiden Beispielen die Füße nicht geneigt werden und auch keine Dehnung oder Schrumpfung der zu animierenden Bestandteile erfolgt, kann hier auf die Darstellung der AnimationKeys für die Skalierung und die Rotation verzichtet werden.

Bei der im Bild 16 links dargestellten Figur wird zusätzlich der sich nach vorne bewegende Fuß "angehoben" und während des Verlassens der Bodenfläche und beim Aufsetzen "angestellt" (in die Schräge verdreht). Deshalb wird dort auch der AnimationKey für die Rotation benötigt. Für eine "flüssige" Darstellung der Gehbewegung dieser Figur wurden in den AnimationKeys jeweils 145 Zustandseinträge hinterlegt, was der Ausführung von 144 Einzelbewegungen innerhalb eines Ablaufzyklus entspricht.

Die Spezifikation eines "AnimTicksPerSecond"-Werts hat bei einer "_AnimWheel"-Animation keine Auswirkung, da sich deren Ablaufgeschwindigkeit grundsätzlich an der Fortbewegungs-Geschwindigkeit des Gesamtmodells orientiert.

Eine "_AnimWheel"-Animation kann auch zusammen mit anderen Animationen für dasselbe Modell zu einer Animationskette zusammengefügt sein. Dann ist "_AnimWheel" nicht mehr die Bezeichnung des gesamten AnimationSets, sondern muss stattdessen in der zugehörigen anim-Datei zur Kennzeichnung des "_AnimWheel"-Abschnitts innerhalb der gesamten Animationskette verwendet werden.


Signal-Animationen (_AnimSignal)

Signal-Animationen setzen sich aus 2 oder mehr Signalanzeigen zusammen, die im Modellbahn-Studio über deren Nummer gezielt ausgewählt werden können (der Wert 0 kennzeichnet die ersten, der Wert (n-1) die letzte von n Signalanzeigen). Wie viele Signalanzeigen ausgewählt werden können sollen, wird beim Konfigurieren des Signals während des Hochladens in den Katalog des Modellbahn-Studios festgelegt.

Im folgenden Beispiel wird ein schweizerisches Lichtsignal mit 3 Lampen betrachtet, das insgesamt 5 verschiedene Signalbilder anzeigen kann: "Halt" (rot), "Freie Fahrt" (grün), "Langsamfahrt" (grün+gelb), "Ausgeschaltet" und "Vorsicht - Fahrt auf Sicht" (rot blinkend).

Signal.png
Bild 19   AnimationSet eines Lichtsignals mit 3 Lampen als animierte Unterobjekte und 5 Signalbildern

Die Bezeichnung "_AnimSignal" für das AnimationSet kennzeichnet dieses als Signal-Animation, dessen Aufteilung in 5 Signalbilder durch die Konfiguration des Signals im Modellbahn-Studio festgelegt wird.

Signalkonfiguration.png
Bild 20   Konfiguration der Anzeigen eines Signals

Hiermit wird dem Modellbahn-Studio mitgeteilt, dass die Folge von im Bild 19 dargestellten 25 Zustandseinträgen gleichmäßig auf 5 Signalbilder (Teil-Animationen) aufgeteilt werden soll. Das Modellbahn-Studio ordnet daraufhin bei allen AnimationKey-Definitionen jedem Signalbild 5 Zustandseinträge zu, ohne dass es dafür einer zusätzlichen anim-Datei bedarf.

Wenn ein Signalbild als "animiert" gekennzeichnet wird, muss der letzte Zustandseintrag der dem Signalbild zugeordneten Teil-Animation mit deren erstem Eintrag übereinstimmen. Die Übergänge zwischen den Zustandseinträgen werden dann zyklisch hintereinander abgespielt. Beim obigen Beispiel ist das 5. Signalbild (Zustandseinträge 20-24 in den AnimationKey-Definitionen aus Bild 19) als animiert gekennzeichnet. Die in einem Zyklus zu durchlaufenden 4 Zustandsübergänge werden aufgrund der dort ebenfalls ausgewiesenen AnimTicksPerSecond-Definition in einer Sekunde abgespielt.

Die in Bild 19 farbig unterlegten Einträge sind jene, die zur "Anzeige" in y-Richtung nach "vorne" gerückt sind (Wert = 0.03). Die nicht unterlegten Zustandswerte kennzeichnen durch eine nach hinten verlagerte Position (Wert = 0.09) "verdeckte " und dadurch nicht sichtbare Lampen. Hierdurch wird auch das Blinken der roten Lampe beim 5. Signalbild verdeutlicht.

Würde man im obigen Beispiel auf die Blinklicht-Animation verzichten, könnte man die 5 Zustandseinträge pro Signalbild jeweils auf einen Eintrag reduzieren. Das folgende Bild zeigt ein solches Beispiel in Form einer Lok-Laterne, bei der es die 4 Anzeigen "Licht aus", "Weißes Licht an", "Rote Schlusssignal-Anzeige bei Tag" und "Rotes Schlusslicht bei Nacht" gibt. Hier reicht jeweils ein Zustandseintrag für jede der 4 "Teil-Animationen" aus.

Loklampe.png
Bild 21   Animation einer als "Signal" definierten Lok-Laterne mit 4 Anzeigen

Bei diesem Beispiel wird für die Animationen der AnimationKey für die Skalierung verwendet. Bei der Ausdehnung "0" ist die zugehörige "Lampen-Scheibe" verschwunden. Mit dem Dehnungsfaktor "1" wird sie in ihrer vollen Größe angezeigt. Auch hier erfolgt der Übergang von einem gewählten "Signalbild" zu einem anderen im Modellbahn-Studio durch eine gleichmäßige Dehnungs- oder Schrumpfungs-Bewegung der betroffenen "Bildscheiben". Durch die Spezifikation des Werts "100" in der AnimTicksPerSecond-Definition wird diese Bewegung so beschleunigt, dass kein "fließender" Übergang mehr sichtbar ist. Bei einem Wert "1" würde hier der (fließende) Wechsel zwischen zwei Zuständen eine volle Sekunde benötigen.

 

Wenn neue Erkenntnisse vorliegen, wird diese Beschreibung fortgesetzt.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo Bahnland,

vielen Dank für die Beschreibung. An der Nuss habe ich jetzt aber erst mal länger zu knacken. Mal sehen, ob ich das irgendwann verstehe.

LG

Brummi

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo Neo,

ich bitte Bahnlands Beschreibung ((y)) ins Wiki aufzunehmen, ich fürchte sonst, sie bei Bedarf nicht mehr im Forum wiederzufinden. :) Auch für mich eine Nuß, an der ich gelegentlich (um Verständnis bemüht) in Ruhe knabbern möchte. Auf die Schnelle kann ich das aber nicht verinnerlichen.

viele Grüße,

Henry

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Typisch BahnLand, technisch perfekter Artikel, habe ihn im Wiki verlinkt.

Viele Grüße,

Neo

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

hallo Bahnland,

meinen persönlichen dank an dich für diese tolle anleitung. (y)

vg quackster

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo Bahnland,

nun möchte ich auch einmal probieren, ob ich eine Animation in einem ursprünglichen Sketchup-Modell in dessen x-Datei geschrieben und auch zum Laufen bekomme.

Könntest du zur besseren Handhabung die in den obigen Bilddateien enthaltenen Texte vielleicht hier auch als Textanhänge einstellen? Dann hätte man per copy and paste direkt die richtig geschriebene Syntax für die x-Datei zur Hand und müsste nur noch entsprechende Werte ändern.

Vielen Dank

Brummi

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo Brummi,

ich stelle hier 4 Beispiele mit unterschiedlichen Anwendungsszenarien bereit:

Lichtsignal.zip
Loklaterne.zip
Rampenwagen.zip
RoLa.zip

Beim Lichtsignal findet nur eine Verschiebung der "Leuchtscheiben" vor und hinter die "Abdeckung" statt, wodurch die Lampen aufleuchten oder dunkel werden. Bei der Loklaterne ist das Ein- und Ausschalten der Lichter über die Scale-Eigenschaft realisiert, wobei sich die "Lichtscheibe" beim Ausschalten auf "0" zusammen zieht  und beim "Einschalten" auf die volle Größe ausgedehnt wird. Da es sich bei beiden Beispielen um eine "Verdeckte Signalschaltung" handelt (das Animationset heißt "_AnimSignal"), wird hier keine Anim-Datei benötigt, um die Einzel-Animationen zu separieren.

Die beiden Beispiele Rampenwagen und RoLa sind komplexer, da sie jeweils eine Rotation um einen nicht-zentrischen Drehpunkt enthalten. Beim RoLa-Wagen sind die Drehungen horizontal, beim Rampenwagen vertikal zweimal quer und einmal längs zur Fahrtrichtung des Wagens. Dies muss bei der Spalten-Auswahl für die Eintragung der Dreh-Koordinaten berücksichtigt werden. Da das Objekt immer um den Mittelpunkt "rotiert" wird, der tatsächliche Drehpunkt aber sowohl beim RoLa-Endstück als auch bei den Rampenwagen-Verladeklappen "außen" liegt, muss dies über eine mit der Rotation einher gehende entsprechende Verschiebung des Objekts "korrigiert" werden. Deshalb ist in beiden Beispielen neben der "Rotation" auch die "Position" anzupassen. Da es sich bei beiden Beispielen um "Benutzer-definierte" Animationen handelt, muss hier jeweils eine Anim-Datei zur Kennzeichnung und Unterscheidung der einzelnen (Teil-)Animationen hinzugefügt werden.

Animationen werden grundsätzlich über die AnimationKeys spezifiziert, welche es für die 3 Typen "Rotation" (Kennzahl 0), "Scale" (Kennzahl 1) und "Position" (Kennzahl 2) gibt. Enthält ein Animationkey identische Werte für die gesamte Animationsdefinition (das komplette AnimationSet), kann er ganz weggelassen werden. So wurde beispielswerise in den Beispielen Lichtsignal und Loklaterne jeweils nur der Animationkey "Position" bzw. "Scale" spezifiziert.

Viele Grüße
BahnLand

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo Bahnland,

vielen herzlichen Dank. Ich werde dann über meine Erfolge (oder Misserfolge) berichten.

Herzliche Grüße

Brummi

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo Bahnland, hallo Gemeinde

Vorwort:

Ich mag eure Modelle und mir gefallen eure Animationen. Aber der Weg dorthin....

Und weil ich es ja nicht so mit dem "digitalen" habe, muß ich euch eine Kurzgeschichte erzählen:

Sternzeit 4711 null acht einundzwanzig. Logbuch der USS Enterprise Captain Modellbahnspass.

Die Enterprise kommt zu einem Routinecheck ins Heimat-BW auf der Erde.

Enterprise.jpg

Die Erde hat sich verändert. Nullen und Einsen haben die Macht übernommen.

Oval office.jpg

Ein Bild, das mich nicht begeistert. Die Technik geht einfach nicht in meinen Kopf, daher bleibe ich bei dem, was ich kann

Gruß

Modellbahnspass

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo Bahnland,

Am ‎07‎.‎12‎.‎2015 um 21:28 schrieb BahnLand:

AnimTicksPerSecond
Der in der oberhalb der AnimationSet-Definition blau unterlegt wiedergegebenen "AnimTicksPerSecond"-Definition hinterlegte Ganzzahlwert m bestimmt, dass in sämtlichen Zustandsfolgen aus der AnimationSet-Definition m Zustandseinträge in 1 Sekunde "abgearbeitet" werden sollen. Ein hoher Wert bewirkt also ein schnelles, ein niedriger Wert ein langsames Abspielen aller im AnimationSet spezifizierten Animationen.

Das ist schade, dass man hier keine Werte kleiner als 1 eingeben kann, weil dadurch ja die Anzahl der Definitionen weiter steigt. Wenn also z.B. eine Bewegung 4 Sekunden dauern soll, dann muss ich auch mindestens 4 Zustände eintragen.

Wenn du bei deinem Signalbeispiel für die Ticks per second eine sehr hohe Zahl eingibst, müsste es doch eigentlich reichen, wenn du nur den Anfangs- und den Endzustand definierst. Der Wechsel ginge dann so schnell, dass man den Übergang nicht sieht. Oder interpretiere ich da etwas falsch?

Ansonsten habe ich es bisher geschafft, eine Lagerhalle mit zu öffnenden Einfahrtstoren zu bauen, die zum Öffnen und Schließen jeweils 2 Sekunden brauchen.

HG

Brummi

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo Brummi,

das Signal hat bezüglich der Animationen insofern eine Sonderstellung, als beim Wechsel der Phase ein gleichmäßiger Übergang vom aktuellen Ist-Zustand des Modells zuem ersten Zustand der ZielPhase erfolgt, bevor dann der "Durchlauf" aller Zustände der Zielphase angestoßen wird. Wenn nun alle Phasen einen kostanten Zstand darstellen, genügt es sogar, nur einen Zustand (Anfangszustand = Endzustand) für jede Phase zu spezifizieren. Sobald aber eine Phase einen sich ständig wiederholenden Zustandswechsel beinhaltet (z.B. beim Blinklicht), müssen der Anfangs- und Endzustand dieser Phase identisch und die geänderten Zustände dazwischen angeordnet sein. D.h. eine Blinklicht-Animation als Signal-Phase muss aus mindestens 3 Zustands-Definitonen bestehen. Da aber in der Gesamt-Animation eines Signals alle Phasen gleich lang sein müssen, (die Gesamtheit der Zustände wird gleichmäßig auf alle Phasen verteilt), müssen auch die Phasen mit konstantem Licht entsprechend viele (identische) Zustands-Definitionen enthalten.

Dass meine Signale "schlagartig" von einer Farbe auf eine andere umschalten, erreiche ich nur dadurch, dass ich die sich nach hinten und vorne verschiebenden "Lichtflächen" durch eine "Maske" durchbrechen lasse. Diese wird von sich gegenläufig bewegenden Lichtscheiben gleichzeitig passiert, wodurch die schlagartige Umschaltung realisiert wird. Allerdings ist hier die gleichmäßige Bewegung der Lichtscheiben nicht aufgehoben (iese findet trotzdem statt). Deshalb braucht es auch die halbe "Phasenlänge", bis sich die Flächen "in der Mitte treffen". Dies ist genau die Verzögerungszeit, die man bei meinen Signalen feststellt, wenn man sie beispielsweise mit einem Schalter umstellt.

Im beiligenden ZIP-Paket (#Signaltest.zip) habe ich ein Signalbeispiel eingefügt, das im Prinzop dem Signal "SBB L-Hauptsignal (3/3 gn+ro+ge)" aus dem schweizerischen Signal-Verzeichnis im Online-Katalog entspricht. Nur habe ich hier die "Lichtflächen" seitlich herausgezogen, damit man ihre Bewegung beim Umschalten des Signals verfolgen kann. Importiere dieses Signal bei Dir in den Online-Katalog, füge ein originales Signal "SBB L-Hauptsignal (3/3 gn+ro+ge)" hinzu und verbinde ersteres mit letzterem.Wenn Du nun das "richtige" Signal umschaltest, macht das "Testsignal" alle Änderungen mit, und Du siehst wie die Bewegungen der Lichtflächen im "richtigen" Signal zur Wirkung kommen. Hier siehst Du dann auch, weshalb es zu einer (vermeintlich) verzögerten Umschaltung meiner Lichtsignale kommt.

Wenn die Signale keine Blinklicht-Phase hätten, könnte ich wie von Dir vorgeschlagen die Zahl der "Ticks per Second" erhöhen, um eine schnellere Reaktion der Signalumschaltung zu erzielen. Die Blinklicht-Phase würde aber dann zur "Flacker-Phase", was eben dann kein "Blinken" mehr wäre. Deshalb kann ich diesen Weg bei den Schweiz-Signalen nicht einschlagen.

Man sieht hier auch sehr gut, dass die Blink-Phase erst sehr spät wirksam wird, da vorher zuerst eine (langsame) Verschiebungs-Umschaltung erfolgt, bevor das Blinken beginnt.

Viele Grüße
BahnLand

Bearbeitet von BahnLand

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo Bahnland,

erstmal vielen Dank für das ausführliche Tutorial.
Ich habe mal eine Frage zum Thread-Link Multianimationen . Ist der Thread nur für Premium-User denn ich bekomme nur die Meldung " Du besitzt keine Berechtigung diesen Inhalt zu betrachten" ?

Viele Grüße
Michael

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo Michael,

es gibt im Forum einen "Internen Bereich", zu dem im Wesentlichen nur ein kleiner sehr aktiver Zirkel der "Modellbauer-Gemeinschaft" für das Modellbahn-Studio  Zugriff hat. Es werden Themen (z.B. zur inneren Struktur des Modellbahn-Studios oder zu "noch nicht ausgegorenen" Vorhaben)  diskutiert, die entweder grundsätzlich nicht in den öffentlichen Bereich des Forums gehören, oder die das Stadium, für die "Öffentlichkeit" preisgegeben oder angekündigt zu werden, noch nicht erreicht haben. Wenn die Themen dann "allgemein spruchreif" sind, werden sie im öffentlichen Bereich fortgeführt.

Leider kommt es zumindest bei mir ab und zu vor, dass mir bei einer Referenzierung nicht bewusst ist, dass ich auf den internen Bereich verlinke. Das führt dann zu der von Dir oben angezeigten Meldung. Dafür möchte ich mich hier entschuldigen.

Speziell zu den Multianimationen gibt es im Wiki eine kurze Passage, die besagt, dass man dann, wenn man in einem Modell verschiedene Animationen anbieten möchte, diese in der Definition zu einer großen "Gesamt-Animation" zusammenfassen muss, und dann Einzelabschnitte hiervon in einer speziellen Definitionsdatei als separate Animationen ausweist (das sind die Multianimationen). So ist es möglich, über den (einen) AnimationsSet-Abschnitt der (Direct)X-Datei einem Modell verschiedewne (teikweise sogar voneinander unabhängige) Animationen zuzuweisen.

Viele Grüße
BahnLand

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo Bahnland,

dafür brauchst Du dich doch nicht zu entschuldigen. Jetzt weiß ich fürs nächste Mal bescheid.

Viele Grüße
Michael

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.


Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.


Jetzt anmelden