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.
Kommentare 3
Neu erstellte Kommentare unterliegen der Moderation und werden erst sichtbar, wenn sie durch einen Moderator geprüft und freigeschaltet wurden.
Neu erstellte Kommentare unterliegen der Moderation und werden erst sichtbar, wenn sie durch einen Moderator geprüft und freigeschaltet wurden.
TrainSimContent
Ne ich habe keine andere Lösung dafür, wollte nur darauf hinweisen was bei de Verfahren an Polys mitlaufen die man nicht sieht.
TobiasM
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?
TrainSimContent
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.