Jump to content

Animationen mit Timer beeinflussen


Empfohlene Beiträge

Hallo @Neo, 

Am 31.5.2021 um 20:34 schrieb Neo:

wie schnell eine Animation im Studio läuft entscheidet der Modellbauer,

Ich hab mal mit verschiedenen Anzahlen von definierten Frames in Blender experimentiert, 

um die Abspielgeschwindigkeit zu beeinflussen.

Dabei habe ich etwas Interessantes festgestellt. 

Die folgende Animation hat nur 3 Frames in Blender:

 330046377_Screenshot_15.thumb.jpg.c5bb68e43699cbc2dfc163044760bebb.jpg

Die Zwischenschritte zwischen 0 und 1 werden mindestens in 1/1000 im MBS erzeugt.

643755829_Screenshot_16.thumb.jpg.4c1d4b7bcbf85af217a8b740096c98f8.jpg

Müsste es dann im MBS nicht auch möglich sein, die Abspielgeschwindigkeit zu variieren?

So in die Richtung Zeitlupe und Zeitraffer ?

1298126241_Screenshot_17.thumb.jpg.9a0afde5bbee76944a520dee6a371d1f.jpg

 

Nur mal so als Gedankenspielerei.

 

Viele Grüße

Hawkeye

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Hawkeye,

vor 11 Minuten schrieb Hawkeye:

Müsste es dann im MBS nicht auch möglich sein, die Abspielgeschwindigkeit zu variieren?

das gibt es bereits im Bereich der Kransteuerung, bisher ist diese Funktion für andere Animationen aber noch nicht für den Nutzer zugänglich.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Brummi,
 

das würde die Möglichkeiten für Animationen generell erweitern, 

wenn die Abspielgeschwindigkeit auch noch über eine Variable gesteuert werden könnte.

Vor Allem in Verbindung mit einer von JimKnopf und Götz vorgeschlagenen Play-Funktion,

Abspielen von …, bis … .

Am 1.6.2021 um 09:49 schrieb JimKnopf:

Spiele die Animation von Position 0,xx bis 0,xx ab.

 

Am 1.6.2021 um 16:51 schrieb Goetz:

Ein "play von ... bis ..." würde mir auch gut gefallen.


Viele Grüße

Hawkeye

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Thomas,

vor 2 Stunden schrieb HaNNoveraNer:

Schlage eine graphische Oberfläche vor, bei der man eine Kurve mit mehreren Punkten definieren kann für die Geschwindigkeit und die Grenzen ;-)

9_9 Klasse Idee, schließlich „arbeiten“ wir hier ja auch in einem „Professional Studio“.:P


Nein im Ernst,

eine Play- Funktion mit (Startposition, Endposition) hat einen gewissen Biß, 

z.B. als neue Funktion (parallel zur bisherigen vorhandenen)

playto(0.5, 0.7)  = vorwärts,  dadurch wird erstens die Richtung, oder

bei playto(0.5, 0.3) eben die Richtung = rückwärts vorgegeben und zusätzlich

wird die Animation bei Erreichen der Endposition gestoppt. Dann noch die

Abspielgeschwindigkeit mit wählen zu können,

z.B. playto(Startposition, Endposition, Geschwindigkeit) wäre doch Klasse.

Dann kann man sich den ganzen Aufwand mit dem Timer, wie in der obigen Beispiel-Anlage sparen,

der auch nur Rundungsfehler erzeugt.

Viele Grüße 

Hawkeye

 

 

 

 

Bearbeitet von Hawkeye
Ergänzungen
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @Neo,

beeinträchtigen viele Einträge pro Sekunde in der Ereignisprotokollierung

die Performance des MBS oder der PC-Leistung erheblich, oder kann das vernachlässigt werden  ?

Als einfaches Beispiel eine große (unsinnige) Schleife in Lua:

for i = 1, 10000, 1 do

   print(„Schritt :“, i)

end

Es wird ja die Ausführung (z.T. Anfang und Ende) jedes Ereignisses,

sowie jede gesetzte Variable und jede print()-Anweisung protokolliert.

 

Viele Grüße

Hawkeye

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

😂😂

Hallo Andy,

ich wollte lieber erstmal nachfragen, bevor ich den Rechner dadurch in die Knie zwinge,

wenn er über 10.000 Ereignisse pro Sekunde abarbeiten soll.

Ich hab halt noch kein Gefühl dafür, wie groß eine Anlage oder wieviele Ereignisse 

ausgeführt werden können, bevor der Rechner streikt.

Hab eh schon Probleme mit gelegentlichem „Einfrieren“.

Irgend ein Programm adressiert bei mir wohl eine reservierte Speicheradresse, was zum Einfrieren führt.

Mußte gerade erst das MBS per Backup wiederherstellen.


Gruß

Hawkeye

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Hawkeye,
überleg mal, was Dein Rechner mit der Grafik sonst so leistet. Mit der Zählschleife bis 10000 zuckt er nicht großartig. Viel größer kannst Du den Wert aber nicht machen, denn dann bricht MBS mit einem Timeout ab. Allerdings: für meine Seilbahn habe ich damals einen 60 Hz-Timer eingesetzt, worauf Neo dann gemeint hat, da wäre eine Hookfunktion für derart schnelle Dinge sinnvoller und sie eigentlich in Aussicht gestellt. Hat dies später aber doch widerrufen, da dann doch wieder Schindluder mit getrieben wird und Reklamationen kommen. In der Ereignisprotokollierung nervt dieser Timer sowieso, da er diese natürlich flutet. Ich nehme dabei an, dass hierbei nichts verschluckt wird - als muß etwas ausgebremst werden. Insofern dürfte Deine Schleife schon einen Effekt haben.

Gruß
  Andy

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Andy,

mir geht es auch nicht explizit um die „print“- Anweisung, die sollte auch nur als Beispiel dienen.

Ich habe über „benutzerdefinierte“ Ereignisse in Lua ein paar kleine Funktionen geschrieben,

die die Animationen eines Objektes, wie in den vorangegangenen Beiträgen auch von Dir beschrieben,

eben von einer Startposition bis zu einer definierten Endposition in einer variablen einstellbaren Dauer abspielen.

Damit das auch flüssig abläuft, werden eben in einer Schleife für 24 Einzelbilder/ s (x Dauer) die Schritte für jeweils

eine Animation berechnet, die dann über „Verzögerungen“ / Schritt größtenteils zeitgleich ausgeführt werden.

Das soll den Timer ersetzen, weil die Animationen mit Timer ungenau stoppen.

(Verzögerungen können zwar nicht in einer Schleife ausgeführt werden, aber Sie können von einer Schleife aus

in einem anderen benutzerdefinierten Ereignis gestartet werden. Die Verzögerungen müssen nur alle unterschiedliche Namen haben,

damit sie sich nicht gegenseitig beeinflussen, oder gar überschrieben werden. 

 

Bei 5 s für eine Objekt-Animation sind das schon 120 verschiedene Verzögerungs-Anweisungen,

die berechnet und gleichzeitig ausgeführt werden, sie stoppen nur zeitversetzt.

Bei z.B. 10 Objekten gleichzeitig, wären das 1200 Anweisungen und bei jedem Start/ Stop einer Verzögerung

wird ein Eintrag also 2 Einträge pro Verzögerung in das Ereignissprotokoll geschrieben.
 

Wieviele Objekte (Gondeln + Rad + Sonstiges) werden z.B. bei einem Riesenrad animiert ? 
 

Da werden die 10.000 Einträge pro Sekunde auch nicht ausreichen. 

Bei früheren PC hatten solche Einträge immer einen großen Einfluss auf die Leistung.

Mit vielen Objekten hab ich es zwar noch nicht probiert, mach ich aber noch.:)

Mal sehen, wann der Rechner anfängt zu meckern.

 

VG

Hawkeye

Bearbeitet von Hawkeye
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Hawkeye,

deine Herangehensweise ist die falsche, jeder Befehl benötigt > 0 Sekunden Verarbeitungszeit. Somit sollte deine Frage nicht sein, was das Studio alles leistet (das ist ziemlich viel), sondern wie kann ich Lösungen auf eine Komplexität von O(1) reduzieren. Wenn du häufig durch eine Liste von vielen tausend Einträgen iterieren musst, solltest du dort nach einem anderen Konzept suchen. Aus diesem Grund ist auch Andys 60hz-Funktion problematisch, weil nichts mehr ausbremst als ständige Prüfungen ohne Änderungen.

Um Animationen in einem bestimmten Bereich performant abspielen zu können musst du auf eine Studioerweiterung warten, denn dort wurden die Animationen bereits optimiert, die Steuerung steht lediglich der EV noch nicht zur Verfügung.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @Neo,

vor 2 Stunden schrieb Neo:

musst du auf eine Studioerweiterung warten, denn dort wurden die Animationen bereits optimiert, die Steuerung steht lediglich der EV noch nicht zur Verfügung.

Das sowieso, freue mich schon darauf. :)


Aber um die Möglichkeiten mit Lua- Skripten und „benutzerdefinierten“ Ereignissen auszutesten,

um dabei etwas zu lernen, brauchte ich mal eine Aufgabenstellung. Das das auch keine „elegante“ Lösung ist, weiß ich.

vor 2 Stunden schrieb Neo:

Somit sollte deine Frage nicht sein, was das Studio alles leistet (das ist ziemlich viel), sondern wie kann ich Lösungen auf eine Komplexität von O(1) reduzieren.

Das ist dann doch aber erst der 2. Schritt. 

vor 2 Stunden schrieb Neo:

deine Herangehensweise ist die falsche

Warum das, und schon wieder? :) Ist ja schon fast wie ein Kompliment. :D

Der 1. Schritt ist doch immer überhaupt eine funktionierende Lösung zu finden.

Dadurch habe ich ja erst festgestellt, das es keine optimale Lösung ist, aber es ist eine Lösung.

vor 2 Stunden schrieb Neo:

solltest du dort nach einem anderen Konzept suchen.

Hab ich gemacht, jawohl.(y)

Erste Lösung war den „Timer“ einsetzen, Probleme feststellen, diese lösen oder

eine andere Herangehensweisen ausprobieren. 

Jetzt hab ich schon zwei Lösungen, zugegeben beide sind nicht optimal, 

aber ich habe einen Haufen dazugelernt. 

Aus den Aufgaben denen man sich stellt, und den Fehlern, die man dabei macht, 

lernt man immer noch am meisten, wenn man versteht, welche es sind. 

„Experience is the Knowledge that enables you to recognize a mistake when you make it again.“  (Martin Leeuwis)


Wo soll Erfahrung und Routine sonst herkommen.B|

Viele Grüße

Hawkeye

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Hawkeye,

sieh meinen Beitrag nicht als Kritik an deinem Forscherdrang, sondern als Tipp, in welche Richtung du dich als nächstes bewegen solltest. Für ein Proof-of-Concept kannst du natürlich jede beliebige Lösung wählen.

Viele Grüße,

Neo

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