Random Skin Funktion erstellen

  • Dieser Wiki Eintrag soll erklären, wie man in einen eigenen Wagen eine Random Skin Funktion einbauen kann. Also eine Funktion, die ermöglicht dass jeder im Spiel gesetzte Wagen anders aus sieht.
    Dieser Eintrag wird darauf eingehen, wie man das 3D Modell vorbereiten muss und wird ein Lua Script erklären, durch welches die Funktion möglich gemacht werden kann. Er wird aber nicht die Grundlagen des Wagenbaus ausbreiten. Der Leser sollte also mit den Grundlagen des Wagenbaus für Railworks vertraut sein.

    1 1. Einleitung

    1.1 2. Vorausetzungen des 3D Modells

    1.1.1 3. Das Script


    1. Einleitung


    Dieser Wiki Eintrag soll erklären, wie man in einen eigenen Wagen eine Random Skin Funktion einbauen kann. Also eine Funktion, die ermöglicht dass jeder im Spiel gesetzte Wagen anders aus sieht.
    Dieser Eintrag wird darauf eingehen, wie man das 3D Modell vorbereiten muss und wird ein Lua Script erklären, durch welches die Funktion möglich gemacht werden kann. Er wird aber nicht die Grundlagen des Wagenbaus ausbreiten. Der Leser sollte also mit den Grundlagen des Wagenbaus für Railworks vertraut sein.


    2.Voraussetzungen des 3D Modells


    Das Prinzip der hier beschriebenen Random Skin Möglichkeit ist, dass ein Node des 3D Modells (z.B. der komplette Wagenkasten) mehrmals an genau der gleichen Stelle im 3D Modell vorhanden ist, und das Script nur ein der Nodes sichtbar macht, während die anderen unsichtbar sind.


    Also wenn man zum Beispiel zwei verschiedene Möglichkeiten eines Dach für einen Wagen haben will, dupliziert man das Node des Dach also 2 mal und texturiert diese im 3D Programm jeweils unterschiedlich.


    Nun exportiert man das 3D Modell mit allen Dachmöglichkeiten und erstellt ganz normal den Wagenblueprint im Blueprint Editor.


    3.Das Script


    Würden wir den Wagen jetzt schon ohne Script exportieren würde das Modell natürlich im Simulator blöd aussehen, da die verschiedenen Dächer alle aufeinanderliegen und flackern würden. Also benötigen wir noch ein Script, welches nur eines Dächer sichtbar macht. Dieses Script könnte so aussehen:



    --Variable wird erstellt für den Zufallsgenerator
    Skin = 0



    function Initialise()
    Call("BeginUpdate")


    --Die Variable bekommt beim Initalisieren des Fahrzeugs einen zufälligen Wert(Hier im Bereich von 1 bis 4) zugewiesen.
    Skin = math.random(1,4)


    end


    function Update(time)


    --Nun deaktivieren wir erstmal alle Teile des 3D Modells, die zufällig dargestellt werden sollen.
    Call("*:ActivateNode", "DACH1", 0)
    Call("*:ActivateNode", "DACH2", 0)
    Call("*:ActivateNode", "DACH3", 0)


    --Anschliessend fragen wir den Wert der Variable ab und stellen je nach Wert ein Teil wieder sichtbar.


    if Skin == 1 then


    --Wenn Skin Variable den Wert 1 hat, wird die Node "Skin1" wieder sichtbar gestellt.


    Call("*:ActivateNode", "Skin1", 1)


    end


    --Das gleiche machen wir jetzt für die anderen möglichen Werte der Variable...


    if Skin == 2 then


    Call("*:ActivateNode", "Skin2", 1)


    end


    if Skin == 3 then


    Call("*:ActivateNode", "Skin3",1 )


    end


    if Skin == 4 then


    Call("*:ActivateNode", "Skin1", 1)


    end


    end



    Jetzt müssen wir im Blueprint Editor das Script nur noch als Scriptcomponent des Wagens angeben und schon wird bei jedem gesetzten Wagen im Simulator ein zufälliges Dach dargestellt.

Teilen

Kommentare 3

  • Ne ich habe keine andere Lösung dafür, wollte nur darauf hinweisen was bei de Verfahren an Polys mitlaufen die man nicht sieht.

  • Das ist aber der einzige Weg sowas umzusetzen, den ich bis jetzt gefunden habe... Hast du eine bessere Idee, wie man sowas lösen kann?

  • Tolle Sache wenn der Exporter nicht auch die ganzen Polys der verschiedenen Objekte mit exportieren würde.
    Somit sind diese im Spiel unsichtbar aber trotzdem da.