Jump to content

Gestänge-Animation mit Blender 2.8 ff.


Recommended Posts

Posted (edited)

Hallo zusammen,

u.a. in diesem Beitrag sowie per PN an mich, taucht die Frage auf, wie die Gestänge-Animation bei Loks mit Blender 2.8 aufwärts gemacht werden kann. Dazu muss ich zunächst sagen, dass es hier tatsächlich einen entscheidenden Unterschied zu früheren Blender-Versionen gibt (2.79 abwärts). Ich vermute, dass liegt an den unterschiedlichen Exportern. Wenn man mit DirectX Objektabhängigkeiten exportiert hat, sind diese auch im 3D-MBS angekommen, mit dem glTF-Export funktioniert das nicht.

Diesen Beitrag werde ich in 2 Teilen schreiben, weil die zugehörigen Bild-Dateien die 2MB überschreiten. Da ich nicht genau weiß, ob ich nur in einem Beitrag oder nur an einem Tag 2MB hochladen darf, kann es sein, dass Teil 2 erst morgen kommt.

notwendige Voreinstellungen in Blender
Bild01.thumb.jpg.66695aae26ce4fd20f450160a189a705.jpg

Animation Default-Interpolation: Linear
Bild02.thumb.jpg.680f75e7c9e28b0f07beac159e8d8dcc.jpg

Output Properties
(gilt nur ab Blender 2.8 aufwärts mit glTF-Export, bei früheren Blender-Versionen bis 2.79 mit DirectX-Export sind auch andere Frame-Raten möglich)
Frame-Rate: 24 fps
Bild03.thumb.jpg.43a1400dbd3f5d3dc09a2c708f617dcd.jpg

Ausgangssituation: zu erstellen sind 3 Räder sowie das Gestänge. Die Räder sollen sich (beim Fahren) um sich selbst drehen, das Gestänge soll der Drehbewegung der Räder folgen.
Hierbei ist zu beachten, dass der Objektmittelpunkt jedes einzelnen Rades an der richtigen Stelle ist. (siehe diesen Beitrag, gilt für Blender 2.79 wie für Blender 2.8 ff.)
Bild04.thumb.jpg.ea3c1df1ae052a52e8ac62cc92c34737.jpg

Die Animation der Räder kann so erfolgen (es gibt in Blender für die meisten Aktionen verschiedene Möglichkeiten, ich stelle hier eine der Möglichkeiten vor)
erster Keyframe <Taste I - Rotation> (wichtig bei 0, nicht bei 1)
Bild05.thumb.jpg.8192d39a444b7f4a3545981551913bfc.jpg

dann die Animation auf den Frame 24 setzen,
nun das Rad in der y-Achse 360 Grad drehen
und den Keyframe setzen <Taste I - Rotation>
Bild06.thumb.jpg.63d8c4679f575d6e2e81f175df4620ee.jpg

Die eigentliche Bewegung des Rades befindet sich auf den Frames 0 bis 23, der letzte Frame 24 ist identisch mit dem Frame 0, das ist für die Animation im 3D-MBS wichtig.

So kann nun die Animation auch für die Räder 2 und 3 erstellt werden.
Bild07.thumb.jpg.92d9a23befed3c5c868db4a6c01a23b5.jpg

Anmerkung: Warum erstellt man die Animation der Räder nicht einfach dadurch, dass man sie als "_Wheel_1-3" bezeichnet? Weil es nicht möglich ist, das Gestänge so zu animieren, dass die Gestänge-Animation mit der "_Wheel"-Animation synchron läuft. Deshalb werden beide Animationen Räder und Gestänge mit "_AnimWheel" erstellt.

Teil 2 folgt...
Gruß
Reinhard

Edited by Reinhard
Link to post
Share on other sites
Posted (edited)

Teil 2 (als Kommentar ist es also möglich, die 2MB zu überschreiten)

Das Gestänge soll nun der Drehung der Räder folgen. Das kann erreicht werden, wenn man das Gestänge mittels <Object-Constraint – Objekt-Beschränkung> mit dem Rad 2 verbindet. Dazu ist folgende Vorbereitung notwendig:

Der Objektmittelpunkt des Gestänges sollte sich an der Stelle befinden, an der das Gestänge mit dem Rad verbunden sein soll.
Der 3D-Cursor sollte sich ebenfalls genau an dieser Stelle befinden (Tastenkombination <Shift>+<S> --> Cursor to Selected) Dadurch wird erreicht, dass im nächsten Schritt eine Vertex-Gruppe genau an dieser Stelle eingefügt wird.
Bild08.thumb.jpg.25ac9bcb2e5abaa82b7bc2badcaa9a0c.jpg

Im Edit-Modus des Rad_2 wird nun mit <Shift>+<A> --> Circle ein Kreis genau an der Stelle des 3D-Cursors eingefügt. Diesen Kreis sollte man auf 3 Vertices und einen Radius von etwa 0.01 verkleinern (auch hier sind andere Möglichkeiten denkbar)
Nun wird mit diesen 3 (markierten!) Vertices mit <Strg>+<G> --> Asign to New Group eine Vertexgruppe erstellt.
Bild09.thumb.jpg.8c3c2803dc72dba4e3d5728f6c37c702.jpg

Nun wird für das Gestänge unter <Object Constraint> --> <Copy Location> ausgewählt
Bild10.thumb.jpg.d2f8002bd97d831a81d760058a0c54af.jpg

Im anschließenden Dialog wird mit der Pipette (Mausklick auf die Pipette) das zu verfolgende Objekt (Rad_2) angeklickt
Bild11.thumb.jpg.43f148c49e3b66b827081ec48b8f76f7.jpg

Nun muss noch die vorhin erstellte Vertex-Gruppe des Rad_2 ausgewählt werden. (Nicht erschrecken, dass das Gestänge zunächst „aus der Bahn“ rutscht, da es zunächst auf den Mittelpunkt des Rades spring – deshalb haben wir die Vertex-Gruppe erstellt, die das Gestänge wieder an die richtige Position bringt)
Bild12.thumb.jpg.716890eed5933c427b883d03363ab643.jpg

Nun funktioniert das in Blender, wie es auch maxwei an anderer Stelle beschrieben hat. Bis Blender 2.79 (also mit DirectX-Export) würde das so auch im 3D-MBS funktionieren. Leider reicht das für Blender ab Version 2.8 (also mit glTF-Export) nicht. Deshalb muss die Animation des Gestänges nun in eine „ordentliche“ Keyframe-Animation umgewandelt werden:

Die Animation des Gestänges muss hierzu „gebacken“ werden. Wichtig dabei die Häkchen in den markierten Feldern, damit alle anderen Abhängigkeiten des Gestänges entfernt werden
Bild13.thumb.jpg.7e1ed3e51190f24091ac3c2f08f881c3.jpg

Zum Schluss muss nun noch eine *.anim-Datei erstellt werden, welche aus der Animation eine automatische Rad/Gestänge-Bewegung macht, sobald das Fahrzeug fährt. Dazu muss eine *.anim-Datei erstellt werden, die denselben Namen hat, wie deine *glTF-Datei.

In meinem Beispiel heißen die Dateien also
Rad_Gestaenge.glb
Rad_Gestaenge.anim

in dieser Rad_Gestaenge.anim befindet sich nur diese eine Zeile

_AnimWheel;0;24;NoAutoPlay;Loop

Die Bezeichnung "_AnimWheel" legt fest, dass sich die betreffenden Objekte entsprechend Anfahren, Fahren oder Anhalten des Fahrzeugs bewegen. Daher reicht die

_AnimWheel;0;24

völlig aus.

So funktioniert das nun auch im 3D-MBS

Gruß
Reinhard

Edited by Reinhard
Link to post
Share on other sites

Hallo Reinhard,
obwohl ich jetzt nicht im Detail gelesen habe, bin ich trotzdem sehr froh, dass solch ein Beitrag nun existiert. Das wäre für mich eine (vom derzeitigen Wissensstand her) unüberwindbare Hürde gewesen. Nun, da die Infos da sind, zieht's die Hemmschwelle ein Stück runter. Danke dafür.

Gruß
  Andy

Link to post
Share on other sites

Guten Abend,

zu dem Beitrag habe ich noch 3 Anmerkungen:

1. vielen Dank für die Likes und Kommentare! @HWB für die SketchUp-Animation bin ich nicht der richtige Ansprechpartner, da ich ausschließlich mit Blender arbeite.

2. Ich versuche bei "meinen" Modellen immer so "sauber" wie möglich zu arbeiten. Das beinhaltet auch, Unnötiges zu entfernen/löschen. Da mit dem "Backen" der Gestänge-Animation (oben im letzten Bild) die Abhängigkeiten des Gestänges von der Vertex-Group beim Rad_2 entfernt wurden (das Gestänge hat nun seine eigene Animation), kann also die Vertex-Group und die Vertices im Rad_2 gelöscht werden
Bild14.thumb.jpg.d28b261b829f7f6cc6573bc47785efd8.jpg

3. An anderer Stelle wurde zurecht beschrieben, dass Gestänge auf beiden Seiten der Lok (zumindest bei Dampfloks muss das so sein) unterschiedliche Positionen haben.
Bild15.thumb.jpg.1c6992a09ba2bf0de37d3cb5aad1a661.jpg

In diesem sowie in diesem Beitrag wurde erläutert, warum das für das 3D-MBS möglichst eine Viertel-Drehung sein sein sollte.

Dies erreicht man leicht, indem man alle Modelle dupliziert und dann jeweils eine Seite der Modelle entfernt. Man hat nun Räder und Gestänge für die linke Seite sowie Räder und Gestänge für die rechte Seite
Bild16.thumb.jpg.3d8929685edc8984f204471623e53d5c.jpg

Nun muss die Animation der einen Seite noch um eine Viertel-Drehung (in unserem Beispiel 6 Frames) verschoben werden.

Wenn es gewünscht ist, kann ich das erläutern, aber im Moment würde es den Rahmen dieses Threads, oder genauer: die Absicht dieses Threads überschreiten.

Gruß
Reinhard

Link to post
Share on other sites

Hallo Hermann,

Am 3.7.2020 um 17:19 schrieb HWB:

hierzu würde mich interessieren

Gestänge-Animation mit Sketchup

es hat nun ein bisschen gebraucht, bis ich Dir hier antworten kann. Denn meine Aussage von hier war bisherher nur "Theorie". Ich wollte sie deshalb erst einmal "anwenden", bevor ich Dir hier schreibe.

Ich konnte die Theorie nun bestätigen:

1765680894_TreibradstzemitKuppelstange.thumb.jpg.9265be6b7cf7f8d446b75e9c69b3872a.jpg

Ich habe zwei Speichenradsätze einer Dampflok gebastelt und diese beidseitig mit einer Kuppelstange verbunden.

Ankerpunkte.thumb.jpg.1e1ed01de54ba8d18b668121d0a70f94.jpg

In Sketchup wurde jedes Rad zu einer Gruppe zusammengefasst (Rad0L, Rad0R, Rad1L und Rad1R) und jeweils mit einem "_AP"-Punkt (Ankerpunkt, hellblaues Quadrat) in der Achsmitte versehen, mit dem der "Nulllunkt" jeder Radgrppe und damit der Drehpunkt für die Raddrehung festgelegt wird. Die Kuppelstange auf beiden Seiten der Radsätze ist ebenfalls jeweils zu einer Gruppe zusammengefasst (StangeL und StangeR) unt enthält ebenfalls einen "_AP"-Punkt, um den Drehpunkt in jener Radgruppe, in der die Kuppelstange enthalten ist (hier ist die Gruppe StangeR Teil der Gruppe Rad1R), festzulegen.

Hiermit lässt sich dann die Animation der Räder und der Kuppelstangen in der nach dem Export des Sketchup-Modells in eine x-Datei dort (von Hand) hinzuzufügenden AnimatiionSet-Definition wie folgt spezifizieren:

AnimWheel.thumb.jpg.7d6cb4cad1358da2f9d73476031c7199.jpg

Die beiden im obigen Bild dargestellten Spalten befinden sich in der AnimantionSet-Definition untereinander und sind nur der Übersicht halber nebeneinander angeordnet. Die komplette Definition besteht aus 6 Animationen (für 4 Räder und 2 Kuppelstangen), wobei jede eine komplette 360°-Drehung (aufgeteilt in jeweils 2 180°-Drehungen) realisiert. Die Nummern ganz links besagen, dass jede Animation aus 361 Einzelzuständen besteht (000-360), zwischen welchen 360 1°-Übergänge (1°-Drehschritte) ausgeführt werden. Da es sich hierbei um eine "gleichmäßige" Bewegung handelt, brauchen die Zustände 001-179 und 181-359 nicht spezifiziert zu werden (das Modellbahn-Studio führt zwischen den spezifizierten Zuständen automatisch eine "gleichmäßige" Drehung durch). Obwohl die Drehung auch über den 180°-Zustand hinaus gleichmäßig ist, muss dieser trotzdem spezifiziert werden, damit die Drehrichtung eindeutig vorgegeben werden kann. Die Anzahl der spezifizierten Zustände (hier mit den Nummern 0, 180 und 360) wird mit der "3" oberhalb der Liste der Zustände angegeben (man hätte hier als ZUstands-Nummern auch 0, 1 und 2 verwenden können, ich wollte aber zur Veranschaulichung hier die Zustandswinkel anzeigen lassen).

Hinter der "4" in jeder Zustandszeile repräsentieren die 4 nachfolgenden Werte in der hier angegebenen Reihenfolge den Cosinus-Wert des halben Drehwinkels sowie den Sinus-Wert des halben Drehwinkels bei einer Drehung um die x-Achse, die z-Achse und die y-Achse. Im vorliegenden Besipiel ist die Rollbewegung in der x-Achse ausgerichtet, weshalb die Drehungen der Räder und der Kuppestangen jeweils um eine Achse in y-Richtung erfolgen. Deshalb werden in der obigen AnimatuonSet-Definition die Sinus-Werte in der letzten Spalte hinterlegt.

Da die Kuppelstange jeweils in die Gruppe eines Rades integriert ist, macht die Kuppelstange automatisch die Drehung des Rades mit. Deshalb muss die Kuppelstange selbst eine gegenläufige Drehung ausführen, damit die vom Rad "geerbte" Drehung kompensiert wird. In der obigen AnimationSet-Defiition erkennt man dies daran, dass die Sinus-Werte in der letzten Spalte für die Stangen entgegengesetzte Vorzeichen besitzen.Durch die Koppelung dieser 2 Drehbewegungen für die Kuppekstange erspart man sich eine sonst notwendige Verschiebungs-Animation der Kuppelstange auf einer Kreisbahn, die man nicht mit nur 3 Animationszuständen beschreiben könnte.

Betrachtet man das Bild des SKP-Modells genau (2. Bild von oben), erkennt man, dass die Gegengewichte und die Kuppelstangen auf beiden Seiten identisch ausgerichtet sind. Den Drehversatz einer Seite um 120° erreiche ich nun dadurch, dass ich in der AnimationSet-Definition für eine Seite (im obigen Bild in der Spalte rechts) alle Winkel-Angaben umd 60° versetzt habe. So ist es möglich, den Versatz der "Unwucht" nachträglich zu ändern, ohne das Sketchup-Modell selbst modifizieren zu müssen. Beim Vorbild existiert der Winkelversatz von 120° zwischen den beiden Seiten genau dann, wenn es sich um eine 3-Zylinder-Lok handelt. Dann bewegt sich der Kolben des 3. Zylinders im 240°-Versatz, sodass die Kolbenbewegungen aller 3 Zylinder gleichmäßig verteilt sind und damit die durch die Horizontalkräfte der Kolbenbewegungen bewirkten Ruckel-Bewegungen weitgehend kompensiert werden.

Diese doch sehr übersichtliche AnimationSet-Definition ist allerdings nur möglich, weil alle hier beschrieben Animationen gleichmäßige Bewegungen beschreiben. Dies trifft beispielsweise auf Stangen-Elloks und Stangen-Dieselloks zu, bei denen der Antrieb der mit den Kuppenstangen verbundenen Treibachsen über eine Blindwelle oder ein Zahnradgetriebe erfolgt. Bei Dampfloks, bei denen der Antrieb über einen Kolbenhub erfolgt, durchführt die Treibstange keine gleichmäige Bewegung. Da müssen dann die Einzelzustände wirklich alle spezifiziert werden, weil sonst die Treibstangen in der Animation nicht den "Befesigungspunkten" folgen würden.

Im obigen Beispiel wurde die AnimationSet-Definition insgesamt mit "_AnimWheel" gekennzeichnet. Dies hat zur Folge, dass das Modellbahn-Studio keine anim-Datei benötigt, um die Animation mit der Fortbewegungsgeschwindigkeit des Fahrzeugs korrelierend ablaufen zu lassen. Damit werden aber alle in dieser AnimationSet-Definition enthaltenen Animationen an die Fortbewegungsgeschwindigkeit angepasst. Soll das Modell auch Animationen enthalten, die nicht von der Fortbewegungsgeschwindigkeit anhängig sein sollen, muss die AnimaionSet-Definituon selbst eine andere Bezeichnung erhalten. Dann wird aber zusätzlich eine anim-Datei benötigt, in der jene Animation, welche auf die Fortbewegungsgeschwindigkeit synchronisiert werden soll, die Bezeichung "_AnimWheel" erhält.

Treibradsätze mit Kuppelstange.zip

Zum Abschluss stelle ich hier noch das hier beschriebene Beipiel zweier Treibradsätze mit verbindenden Kuppelstangen als mbe-Modell ein. Dann kann jeder sich den Bewegungsablauf selbst auf seiner Anlage anschauen.

Fazit:
Gestänge-Animationen lassen sich auch bei Sketchup-Modellen realisieren - allerdings erst nachträglich nach dem Export des SKP-Modells in eine x-Datei. Solange die Animationsbewegungen gleichmäßig sind, können "Zwischenzustände" wegglassen werden, was die AnimationSet-Definition erheblich vereinfacht. Bei unregelmäßigen Bewegungen müssen die "Zwischenzustände" allerdings explizit angegeben sein.

Viele Grüße
BahnLand

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...