Jump to content

Kombination von Bewegungs-Animationen und abrupten Zustandsänderungen


BahnLand

Empfohlene Beiträge

Hallo,

vielleicht trage ich ja mit diesem Beitrag "Eulen nach Athen", aber ich selbst habe lange mit dem Problem gekämpft, dass ich dann, wenn ich "Bewegungs"-Animationen und solche, deren Zustand schlagartig geändert werden soll, kombiniere, bei letzteren ein teilweise deutliches "Flackern" bekomme. Besonders krass war dies bei meinen elektrischen Fahrzeug-Modellen, bei denen einerseits der Stromabnehmer möglichst langsam angehoben oder gesenkt, aber andererseits die Innenraumbeleuchtung schlagartig an- oder ausgeschaltet werden sollte.

Da es mir zu aufwendig war, für die Stromabnehmer Animation oder die Bewegungs-Animation der Fahrzeug-Türen in der AnimationSet-Definition der x-Datei jeweils mehr als 20 Zustände zu definieren (hierbei müssen jeweils die Zustandskoordianten einzeln berechnet und als "leer"-Zustände in jede andere Animation mit übernommen werden), und bei einer Bewegungsdauer von 1 Sekunde der nur global einstellbare "AnimTicksPerSecond"-Wert auf 20 gesetzt ist (je länger die Bewegungsanimation andauern soll, umso kleiner muss der AnimTicksPerSecond-Wert gewählt werden), hat bei meinen Modellen die "abrupte" Status-Änderung (Wechsel zwischen nur 2 Zuständen) 1/20 Sekunde benötigt, in der das Auge dann unweigerlich das Flackern sieht. Um das Flackern komplett zu unterbinden, wären hier 1/50 oder gar 1/100 Sekunde notwendig gewesen, was aber für die Bewegungs-Animationen die Berechnung von 50 oder gar 100 Zwischenzuständen bedeutet hätte, um dieselbe Ablaufzeit von 1 Sekunde für die Bewegungs-Animationen zu erhalten.

Ich habe nun einen "Trick" entdeckt, wie man zumindest bei der Steuerung mit der Ereignisverwaltung für die abrupten Statusänderungen eine "schlagartige" Umschaltung bekommt, ohne dass man für die Bewegungs-Animationen entsprechend viele Zwischenzustände benötigt:

EV-Definition.thumb.jpg.d35835e1664010dc1a586d6c3ce2720f.jpg

Im obigen Bild habe ich die Ereignisdefinitionen aus V5 für das Heben und Senken des Stromabnehmers zusammengefasst und die Varianten für die "fließenden" Bewegungs-Animationen und die abrupten Umschaltungen nebeneinandergestellt. Der wesentliche Unterschied beseht darin, dass die eigentlich immer "fließende" Animation bei der Bewegungs-Variante an der aktuellen Position des zu bewegenden Teilobjekts beginnt, und daher die Bewegung von dieser Posuition aus "abgeschlossen" werden kann, während bei der abrupten Umschaltung die Ausgangsposition zuerst auf die Zielposition gesetzt wird, bevor der Bewegungsvorgnag angestoßen wird. Das Setzen der Ausgangsposition auf die Zielposition bewirkt das "schlagartige" Umschalten, während von der anschließenden "fließenden" Bewegung nichts mehr zu erledigen ist.

Animationstest.thumb.jpg.f17f16079fd25a63f042a4083986b12a.jpg

Ich habe dazu eine kleine Demo erstellt, bei der man mit den 2 links platzierten Buttons den Stromabnehmer entweder "langsam" zum Ziel bewegen oder "schnell" (abrupt) in die andere Stellung bringen kann. Zum direkten Verkleich habe ich die schlagartige Umschaltung hier ebenfalls auf den Stromabnhehmer angewendet. Diese auf die Innenraum-Beleuchtung des Straßenbahn-Modells angewandt löst das oben beschriebene Problem.

Für den händischen Anstoß der Animation im Eigenschaftsfenster des Modells fehlt für deren schlagartige Umschaltung der im obigen Bild "hinein-retuschierte" Set-Button. Man bekommt die abrupte Umschaltung aber trotzdem hin, indem man für die Animation zunächst die Gegenrichtung einstellt ("Rückwärts" statt "Vorwärts" oder umgekehrt) und dann auf den Reset-Button klickt.

@Neo,
wäre es möglich, im Eigenschaftsfenster für die Animationen noch zusätzlich den oben angedeueten "Set-Button" hinzuzufügen, mit dem die Animation von der darunter eingestellten Richtung abhängige "Zielposition" gesetzt wird, ohne eine Animationsbewegung durchzuführen (wäre dieselbe Funktionaität wie beim Reset-Button, nur dass dort auf die Richtungs-abhängige "Startposition" zurückgesetzt wird)? 

Zum Ausprobieren füge ich hier die im obign Bild gezeigte Demo mit der passenden Ereignissteuerung sowohl als V5-Beispiel als auch als V4-Beispiel bei. Damit können auch jene Anwender den "Trick" ausprobieren, die noch MBS V4 verwenden.

Animationstest V5.mbp
Animationstest V4.mbp

Viele Grüße
BahnLand

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

vor 2 Stunden schrieb BahnLand:

wäre es möglich, im Eigenschaftsfenster für die Animationen noch zusätzlich den oben angedeueten "Set-Button" hinzuzufügen

worin würde sich so ein Set-Button unterscheiden im Vergleich zu einer direkten Eingabe von 0 oder 1 im Positionsfeld?

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @Neo,

vor 1 Stunde schrieb Neo:

worin würde sich so ein Set-Button unterscheiden im Vergleich zu einer direkten Eingabe von 0 oder 1 im Positionsfeld?

es genügt ein Klick auf den Set- oder Reset-Button.
Natürlich funktioniert prinzipiell auch die von Dir genannte Variante. Aber man muss hierbei zuerst mit der Maus den aktuell vorgefundenen Wert komplett markieren, ihn dann auf der Tastatur mit einer 0 oder 1 überschreiben, und abschließend noch die Enter-Taste drücken, damit der Wert auch tatsächlich angenommen wird. Diese Variante ist also mit 3 benötigten Aktionen deutlich umständlicher als ein einfacher Mausklick.

Ich verwende das Eingabefeld oder die Inkrementierungs- und Dekremtierungspfleile genau dann, wenn ich einen konkreten Zwischenstand einstellen oder die Animation quasi in "Einzelschritten" ablaufen lassen (testen) möchte.

Viele Grüße
BahnLand

 

Link zu diesem Kommentar
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
×
×
  • Neu erstellen...