Pleuelstangen animieren

  • Wie man Pleuelstangen richtig animiert.
    Vorbereitung

    Als erstes müsst ihr die verschiedenfarbigen Teile in diesem Bild erstellen und platzieren:

    - Ein Rad (Blau)
    - Einen Kolben (Rot)
    - Eine Pleuelstange (Grün)
    - Eine Verbindungsstange(Gelb)

    Man benötigt nicht alle Teile um die Animation darzustellen. Wenn man zB. eine Rangierlokomotive mit lediglich einer Pleuelstange erstellt, braucht man die restlichen Teile nicht erstellen.

    Jedes Teil sollte auf die andere Seite der Lokomotive gespiegelt werden, so dass man nur ein Mesh von jedem Teil benötigt, auch wenn in echt die Pleuelstangen aus mechanischen Gründen auf verschiedenen Höhen/Positionen sind.

    Man kann für jedes Teil einen anderen Origin (Ursprungspunkt im Modellierungsprogramm) haben, doch dann muss man in der group Datei jedes Teil neu positionieren. Also lasst es uns einfach halten und alles wie im Bild oben dargestellt anwenden.



    Den Kolben animieren
    Öffne die .msh Datei des Kolbens und suche am Anfang nach

    Quellcode

    1. function data() return {
    2. animations ={ },


    Dann ersetze es mit

    Quellcode

    1. local vec2 = require "vec2"
    2. local vehicleutil = require "vehicleutil"
    3. function data() return {
    4. animations = { drive = vehicleutil.makePistonAnim(vec2.new(X1, Y1), vec2.new(X2, Y2), vec2.new(X3, Y3)) },


    Ersetze X1 und Y1 mit der Position von WheelCenter in Meter.
    Ersetze X2 und Y2 mit der Position von WheelPos0 in Meter.
    Ersetze X3 und Y3 mit der Position von PistonPos0 in Meter.

    In meinem Fall lauten die Werte:
    X1 = 0
    Y1 = 0.682405
    X2 = 0
    Y2 = 0.47
    X3 = 2.26
    Y3 = 0.9

    Nimmt die genauesten Werte, die ihr bekommt! Andernfalls werden die Animationen der Stangen nicht mit denen der Räder übereinstimmen.



    Die Pleuelstange animieren

    Öffne die .msh Datei der Pleuelstange und suche am Anfang nach

    Quellcode

    1. function data() return {
    2. animations ={ },


    Dann ersetze es mit

    Quellcode

    1. local vec2 = require "vec2"
    2. local vehicleutil = require "vehicleutil"
    3. function data() return {
    4. animations = { drive = vehicleutil.makeCouplingRodAnim(vec2.new(X1, Y1), vec2.new(X2.Y2)) },


    Ersetze X1 und Y1 mit der Position von WheelCenter in Meter.
    Ersetze X2 und Y2 mit der Position von WheelPos0 in Meter.

    In meinem Fall lauten die Werte:
    X1 = 0
    Y1 = 0.682405
    X2 = 0
    Y2 = 0.47

    Nimmt die genauesten Werte, die ihr bekommt! Andernfalls werden die Animationen der Stangen nicht mit denen der Räder übereinstimmen.



    Die Verbindungsstange animieren

    Öffne die .msh Datei der Verbindungsstange und suche am Anfang nach

    Quellcode

    1. function data() return {
    2. animations ={ },


    Dann ersetze es mit

    Quellcode

    1. local vec2 = require "vec2"
    2. local vehicleutil = require "vehicleutil"
    3. function data() return {
    4. animations = { drive = vehicleutil.makeConnectingRodAnim(vec2.new(X1, Y1), vec2.new(X2, Y2), vec2.new(X3, Y3)) },


    Ersetze X1 und Y1 mit der Position von WheelCenter in Meter.
    Ersetze X2 und Y2 mit der Position von WheelPos0 in Meter.
    Ersetze X3 und Y3 mit der Position von PistonPos0 in Meter.

    In meinem Fall lauten die Werte:
    X1 = 0
    Y1 = 0.682405
    X2 = 0
    Y2 = 0.47
    X3 = 2.26
    Y3 = 0.9

    Nimmt die genauesten Werte, die ihr bekommt! Andernfalls werden die Animationen der Stangen nicht mit denen der Räder übereinstimmen.



    Animationen aktivieren

    Nun müssen wir noch dem Spiel sagen, dass es die Animationen bei der Fahrt ausführen soll. Dazu schreiben wir in jede GRP/MDL Datei, in der sich eines dieser drei animierten Meshes befindet nach dem "children" Block folgendes:

    Quellcode

    1. events = {
    2. drive = {
    3. [1] = {
    4. forward = true,
    5. name = "drive",
    6. }
    7. },
    8. },

    Die Zahl 1 steht dabei für das Mesh, der "children" Liste , welches animiert werden soll. Haben wir also eine "children" Liste bestehend aus der Lok, drei Rädern, dem Kolben, der Pleuelstange und der Verbindungsstange, dann müssen Einträge mit den Nummern 5, 6 und 7 hinzugefügt werden. Dies wiederholen wir für alle LODs und für alle GRPs in denen sich ein animiertes Mesh befindet. Besitzen wir in der MDL zwei GRP Einträge, einen für die Lok, einen für den Tender, benötigen wir einen Eintrag im "events" Block für die Gruppe Nummer 1.

    Wichtig: Auch, wenn die Räder ebenfalls während der Fahrt animiert werden, dürfen diese (sofern sie als "Axle" eingetragen wurden) keinen "events" Eintrag besitzen, sonst stürzt das Spiel ab.



    Das wars!
    Sobald ihr den Rest der Lokomotive importiert habt, solltet ihr hübsch animierte Pleuelstangen im Spiel vorfinden.

    Falls ihr zu diesem Thema Hilfe benötigt, hinterlasst einen Kommentar!

    3.209 mal gelesen

Kommentare 13

  • Franzl -

    kann man die verbindungsstange auch anders als waagrecht laufen lassen? sprich wenn der kolben nicht 90° sondern 60° gedreht ist? siehe auch osterthun.com/2.Static~MiMe/Aussland/97803H-Lv.jpg

    • DasMatze -

      Die Verbindungsstange wäre nicht das Problem, da diese ja sowieso angewinkelt ist. Der Kolben hingegen ... ich denke nicht, dass das funktioniert.

  • BritishTrains -

    Kann es sein, dass die Überschriften von Kuppel- und Pleuelstange durcheinander geraten sind?

  • bvermo -

    Ich möchte gern eine Beschreibung der Berechnung von Positionen haben, damit man auch ein lok mit Heusinger-Steuerung modellieren kann.

  • DerFreddy7 -

    Das istsupper für alle Modder ;) top

  • mediziner -

    Sehr guter Eintrag!

  • Maeg -

    DIe Koordinatenwerte sind tatsächliche Abmessungen der Original-Lok oder wie hast du die ermittelt?

    • DasMatze -

      Die Koordinaten beziehen sich auf das überliegende Objekt (also entweder die MDL Datei oder die GRP Datei). Wenn deine Dampflok sich in einer Gruppe (GRP) befindet (so wie auch der Tender) und das Rad beispielsweise bei -3 und +5 platziert ist, dann ist der Wert für WheelCenter auch -3 und +5. Am besten exportiert man alles außer den Rädern an derselben Stelle (wie oben beschrieben), sodass alles denselben Ursprung hat und dementsprechend die Werte dieselben sind, wie im Modellierungsprogramm.

    • Maeg -

      Achso, nur damit ich es richtig verstehe, das sind quasi die Koordinaten wie sie sich aus dem Modell und der relativen Position der Modellkomponenten zueinander ergeben.

    • DasMatze -

      Richtig.

    • Maeg -

      Alles klar, vielen Dank!

  • Grimes -

    Vielen Dank das wird mir bei meinem nächsten Projekt SEHR helfen ich sage nur BR01 ;)

  • Kulturbanause -

    Sehr geil! Solche Einträge sind Gold wert!