Jump to content

Animationen mit Timer beeinflussen


Empfohlene Beiträge

Hallo Zusammen,

ich hab mir mal die Frage gestellt, ob es nicht möglich ist, 

Animationen gezielt an einer bestimmten Position anzuhalten.

Wenn eine Animation startet, läuft sie von 0 bis 1 in hundertstel Schritten ab.

Eine Wagontür braucht dafür etwa 3 Sekunden.

Ich habe mal zum Testen einen Würfel in Blender erstellt und ihn als Animation

einmal um 360 Grad um eine Achse rotieren lassen mit je 50 Schritten pro 90 Grad.  

Dafür benötigt das MBS ca. 8,6-8,9 Sekunden. (Handgestoppt :/)

Kennt jemand die genau Abspielzeit  in X Schritten / s ?

Dann müsste es doch theoretisch möglich sein,

über einen Timer, der parallel mit der Animation gestartet wird, 

eine Animation nach Ablauf der Zeit an einer definierten Stelle anzuhalten.

Hat das schon mal jemand versucht?

VG

Hawkeye

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Hawkeye,

wie schnell eine Animation im Studio läuft entscheidet der Modellbauer, das ist nicht fest vorgeschrieben. Blender verwendet standardmäßig 24 FPS, also 24 Keyframes für eine Sekunde.

Grundsätzlich kannst du aber gern mit Timern Animationen steuern, musst halt selber die jeweiligen Animationslängen messen.

Viele Grüße, 

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Neo,

Danke für die schnelle Antwort,

dann passt das auch etwa mit der gestoppten Zeit.

Wenn ich also statt 50 Frames 48 für eine 90 Grad Rotation nehme,

dann müssten 360 Grad exakt in 8 s ablaufen.

Umgekehrt könnte ich mit dem Timer nach 2s exakt bei 90 Grad 

die Animation stoppen und dann auch steuern, 

ob sie weiter vorwärts oder rückwärts weiterlaufen soll.

Das eröffnet interessante Möglichkeiten.

Werd mal ein bisschen ausprobieren. 9_9 
 

Zählt die „0“ als Frame mit?

In Blender setzt ich den Startframe bisher immer auf „1“

VG

Hawkeye

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Hawkeye
 

vor 11 Stunden schrieb Hawkeye:

Zählt die „0“ als Frame mit?

Das kommt drauf an wo der Erbauer den Startframe setzt, das ist variabel. Ich kann von hier leider kein Bild einfügen, aber auf der Timeline siehst du den Startframe, den Endframe und die Gesamtframes daneben.

lg max
 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Maxwei,

der Erbauer der Anination bin ich im Moment selbst,

um ein Gefühl dafür zu bekommen.

Rotation 90 Grad sollen also 48 Frames sein.

Wenn ich die in Blender von 1 bis 48 definiere.

Muss ich dann in der   .Anim  Datei den Bereich  1;48; oder 0;47 eingeben?

Die Frage sollte eigentlich lauten:

Startet die Animation im MBS immer bei 0?

VG

Hawkeye

 

 

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin, wäre es nicht viel einfacher in der EV zu sagen Spiele die Animation von Position 0,xx bis 0,xx ab. Das Thema hatten wir schon, ich weiß allerdings nicht ob @Neo diese Möglichkeit in Version 7 bereits eingeplant hat.

Ich selber bin dabei die Vorderräder von einem Silberpfeil von 1935 lenkbar zu machen. Damit nicht für jede mögliche Stellung der Vorderräder eine einzelne Animation gebrauche, müsste ich die Position der Animation in der EV steuern könnten ich brauche dann nur eine Animation alle Radstellungen 0,00 wäre ganz links 0,50 geradeaus und 1,0 ganz rechts. Damit wären auch „Schweinekurven“ (z.B. rechte Kurve fängt mit einem Radius von 30m und geht in einem Radius von 20m über) sauber zu durchfahren. 
Gruß Axel 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Hawkeye
Nochmal:
Wenn du den Startframe auf 1 und den Endframe auf 48 setzt dann ist die Animation von 1-48. also steht auch in der *.anim xxxx;1;48.

Die *.anim bezieht sich immer auf den Bereich den du definierst, es kann aber auch sein dass dass du nur Teile definierst, als Beispiel:

Animation Tür auf/zu: Frame 1-48
Animation Licht Frame 50-60

Also definierst du in Blender einen Bereich von 1-60 als Gesamtanimation (wobei die Teil-Animation selbst für die zB: Tür aber nur von 1-48 definiert ist) und in der *anim steht dann

Tür;1;48
Licht;50;60

lg max

Bearbeitet von maxwei
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Zusammen,

@maxwei:

Ja, danke, 

das habe ich jetzt auch begriffen.

Im Moment habe ich das Problem, wenn ich den Würfel 

nur als 3D-Objekt lade, stimmt die Anfangsposition und der Würfel 

spielt sofort die Animation ab. Soll er aber nicht, also

hab ich dann eine .varlist und eine .anim Datei erstellt  mit ;noloop; noautoplay 

und der Würfel ist beim Laden im MBS in der Startposition um 90 Grad verdreht.

Das muß ich noch herausfinden.

@Jim Knopf

ja, auf so etwas möchte ich auch hinaus.

Im Grunde versuche ich einen Animationsbereich z.B. 1  - 92 zu definieren

und die Startposition soll bei 48 liegen.

d.h. die Animation soll im MBS die Startposition  0,5 haben,

damit sie dann wahlweise vorwärts oder rückwärts abgespielt werden kann.

Mit dem Timer könnte man dann steuern, wie weit die Animation in welche Richtung

verändert werden soll. z.B. 0,5 s = 45Grad  oder 1s = 90Grad

Ich habe mit Blender erst vor 2 Wochen angefangen, 

deshalb entschuldigt bitte meine einfachen Fragen.

VG

Hawkeye

 

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

Hallo Hawkeye

Beschreibe doch mal  was du eigentlich genau damit bezwecken willst, vielleicht kann man das ja einfacher lösen.
 

vor 1 Stunde schrieb Hawkeye:

Ich habe mit Blender erst vor 2 Wochen angefangen, 

deshalb entschuldigt bitte meine einfachen Fragen.

Ist absolut kein Problem, dafür ist das Forum ja da.

lg max

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Neo, hallo Maxwei,

@Neo: Danke, muss man auch erstmal drauf kommen.9_9

@Maxwei: 

Mögliche Ziele sind zum Beispiel, so als erste Gedanken.

1. Bei einem Motorrad auch eine Neigung zu erzeugen, wenn es in eine Rechts oder Linkskurve einfährt, 

über den Timer könnte die Kurvenneigung in Abhängigkeit der Geschwindigkeit gesteuert werden.

2. Bei Fähren die zwischen zwischen zwei Anlegestellen pendeln, 

könnte durch animierte Rotation um die Z- Achse eine Strömung oder abdriften simuliert werden.

3. Bei Segelschiffen eine Animation „Rollen“ durch Wind.

Habe es aber noch nicht geschafft,  den Kontaktpunkt so zu definieren,

das ein verbundenes Model mit der Simulation mit rotiert. 

VG 

Hawkeye

Bearbeitet von Hawkeye
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Hawkeye

Ausgehend vom Motorradfahrer als Beispiel:

Definiere eine Animation von -45° bis 0° von Frame 1-50
Definiere eine Animation von   0° bis  45° von Frame 51-100

In die Anim schreibst du jetzt:

Links-Kurve;0;50;noloop;noautoplay
Rechts-Kurve;51;100;noloop;noautoplay

Dann  hast du genau 2 Animationen und mit dem o.a. Befehl von NEO über LUA steuerbar, das muß   mMn.  als eine Animation ja gar nicht definiert werden, wobei ich aber nicht weiß wie die einzelnen unterschiedlichen Animationen eines Modells angesprochen werden.

lg max

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Maxwei,

das ich das mit 2 Animationen realisieren kann, weiß ich.

vor 20 Minuten schrieb maxwei:

Links-Kurve;0;50;noloop;noautoplay
Rechts-Kurve;51;100;noloop;noautoplay


So (mit anderen Zahlen) sieht meine .Amin Datei auch aus.

Als Ziel habe ich mir nur eine Animation mit Startpunkt  bei 0,5 = Mitte vorgestellt.

Das würde ggf. den Programmieraufwand in der Ereignissteuerung reduzieren.


Bisher schaffe ich es nur nicht, ein beliebiges Modell mit der animierten Bewegung zu koppeln.

Weder ein am definierten Kontaktpunkt gekoppeltes Modell 

noch ein verknüpftes Modell bewegen momentan bei Ausführung der Animation mit.

Da kaue ich noch dran.

 

Auch habe ich festgestellt, das in Blender definierte Kontaktpunkt nicht 

immer in das MBS übernommen werden.

Wenn ich nur „3D- Modell“ auswähle, sind die Kontaktpunkte vorhanden.

Wenn ich „Fahrzeug“ oder „Gleis/Straße“ wähle, werden die in Blender definierten Kontaktpunkt ignoriert.
 

VG

Hawkeye


 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @Neo

Ist es auch per LUA möglich nur einen Bereich der Animation abzuspielen?

Ich möchte die Animation bei 0.5 starten und bei 0.75 stoppen. Ich kann zwar mit play bei 0.5 starten und auch mit stop bei 0.75 stoppen, nur muss ich zwischen den beiden Befehlen eine Zeitliche Verzögerung einbauen damit die Animation mit der normalen Geschwindigkeit abläuft - und die Tüftelei wollte ich mir eigentlich sparen. 

$(„Modell“).animations[„Rechts“]:play(0.5)

$(„Modell“).animations[„Rechts“]:stop(0.75)

So ein Play / Stopp Befehl wäre gut 😌 

Gruß Axel 

Bearbeitet von JimKnopf
😎
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Götz,

genau das versuche ich ja mit dem Timer zu realisieren.

Was bisher klappt, ist z.B.

:play(0.5,1)   Startposition 0.5 und Richtung „Vorwärts“

:Stop(0.75) anhalten bei Position 0.75

Der Timer soll die Zeit exakt laufen, die dafür benötigt wird.
Passt das nicht genau,

 „springt“ die Animation auf die Stop- Position vor oder zurück.

VG

Hawkeye

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @Neo,

ich hab den Kontaktpunkt bei meinem Würfel jetzt auch so hinbekommen,

das er auf einer Seite mit rotiert.

Wenn ich ein 2tes Objekt am Kontaktpunkt einraste,

kann ich es durch Verschieben oder Rotieren des Würfels (von Hand) auch mitbewegen.

Wenn ich aber die Animation starte, bleibt das 2te Objekt stehen.

Ich kann es dann aber von Hand in die durch die Animation entstandene neue richtige Position einrasten.

Der Kontaktpunkt bewegt sich also richtig mit,

das 2te Objekt wird in der Animation aber nicht mitbewegt.

Verknüpfen wie z.B. bei Kameras mit Loks geht auch nicht.

Ist das für Animationen nicht implementiert?

Bei einer Kran Animation kann ich doch auch ein anderes Modell mitbewegen.

VG 

Hawkeye

 

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

Hallo,

vor 16 Stunden schrieb JimKnopf:

Ist es auch per LUA möglich nur einen Bereich der Animation abzuspielen?

aktuell ist es noch nicht möglich, ich werde im Rahmen von V7 prüfen, ob das einfach umgesetzt werden kann.

vor 11 Stunden schrieb Hawkeye:

das 2te Objekt wird in der Animation aber nicht mitbewegt.

Du musst wie im Wiki beschrieben die richtigen Kontaktpunkte wählen, _CP_Target und _CP_Source.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Brummi,

vor einer Stunde schrieb Roter Brummer:

Aber wer sich so mit der Vespa in die Kurve legt, …

Hast recht, ich werde für eine kleine Demoanlage auf den Motorradfahrer wechseln.

Der trägt wenigsten einen Helm.;)

Muss noch ein wenig dran rumfeilen.


VG

Hawkeye

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo, 

hier die versprochene Demo-Anlage. Ich habe sie mal "Verfolgungsjagd" getauft.

Für die Anlage werden 2 neue Objekte benötigt, die ich vorhin als Entwurf hochgeladen habe.

Sie stehen also im Katalog zumindest eine Zeit lang (4 Wochen?) zur Verfügung.

Dummy_Rotation_(Antrieb):  2FC40312-35B4-49BE-8109-62338ACD068E

Die Startpositionen für 0° müssen von Hand eingegeben werden, oder per Lua-Anweisung (nicht mehr in der Demo-Anlage), 

da in der .Anim-Datei keine Startpositionen definiert werden können.  (vielleicht ändert sich das ja mal mit V7 ;))

 

1617040225_ScreenshotDummy_Rotation_03.jpg.d2cb667bbfea9c551c8e156e19a9b7c9.jpg

und das

Source_Objekt:   94BC7BBA-6E4E-4C76-930A-F36C25A509F4

899900272_ScreenshotSource_Objekt.jpg.c59b85f6e978f866ca14fd6aba99f51a.jpg 321867284_Screenshot_07.jpg.899e5f94bc3981928ef3f4aeb2a51ac1.jpg

 

Beispiel: 

157786077_Screenshot_08.jpg.4ba746ca893ce7d4e070719b7088689d.jpg

Hier die Demoanlage :

287879385_Screenshot_09.thumb.jpg.4835c402bc742d866c1cd4e15dfbbd74.jpg

 

Verfolgungsjagd.mbp

 

Viel Spaß

Hawkeye

 

Bearbeitet von Hawkeye
Doppelte Bilder gelöscht
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...