Pleuelstangen animieren

Willkommen in der Transport Fever Community

Wir begrüßen euch in der Fan-Community zu den Spielen Transport Fever und Train Fever, den Wirtschaftssimulatoren von Urban Games. Die Community steht euch kostenlos zur Verfügung damit ihr euch über das Spiel austauschen und informieren könnt. Wir pflegen hier einen freundlichen und sachlichen Umgang untereinander und unser Team steht euch in allen Fragen gerne beiseite.

 

Die Registrierung und Nutzung ist selbstverständlich kostenlos.

 

Wir wünschen euch viel Spaß und hoffen auf rege Beteiligung.

Das Team der Transport-Fever Community


  • Wie man Pleuelstangen richtig animiert.

    Vorbereitung


    Als erstes müsst ihr die verschiedenfarbigen Teile in diesem Bild erstellen und platzieren:
    14704-TrainFeverRodAnimation-jpg
    - 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

    Code
    function data() return {
    animations ={ },


    Dann ersetze es mit

    Code
    local vec2 = require "vec2"
    local vehicleutil = require "vehicleutil"
    
    
    function data() return {
    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

    Code
    function data() return {
    animations ={ },


    Dann ersetze es mit

    Code
    local vec2 = require "vec2"
    local vehicleutil = require "vehicleutil"
    
    
    function data() return {
    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

    Code
    function data() return {
    animations ={ },


    Dann ersetze es mit

    Code
    local vec2 = require "vec2"
    local vehicleutil = require "vehicleutil"
    
    
    function data() return {
    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:

    Code
    events = {
                    drive = {
                        [1] = {
                            forward = true,
                            name = "drive",
                        }
    
                    },
                },


    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!

Teilen