Mod erstellen: Leitfaden für Anfänger (Transport Fever [2])

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


Sie betrachten gerade eine ältere Version des Eintrags. Klicken Sie hier, um zur aktuellen Version zu gelangen.

  • Ich möchte hier einen Überblick geben, um künftigen Moddern die Basics zu erklären und eine Vorstellung zu geben, was für ein Fahrzeugmod benötigt wird.
    Hey, [color=#00FF00]dieser Leitfaden wird aktuell erstellt und häufig aktualisiert. Bilder und weitere Kapitel werden dauerhaft editiert. Anmerkungen, fehlende Punkte und Hinweise jedoch gerne per Pn. [/color] bevor ich mit dem Modding angefangen habe, wünschte ich mir eigentlich nur meine Lieblingsfahrzeuge. Ich hatte keine Ahnung vom Modding, wie Mods funktionieren und wie man sie erstellt. Ich möchte hier einen Überblick geben, um künftigen Moddern die Basics zu erklären und eine Vorstellung zu geben, was für ein Fahrzeugmod benötigt wird. Hier geht es jetzt erstmal nur um Fahrzeuge - Bahnhöfe und platzierbare Assets unterscheiden sich jedoch nur in den letzten Schritten (Skript). Allgemeine Infos zum Aufbau der verschiedenen Mod Typen gibt es auch im [url='https://www.transportfever.com/wiki/doku.php?id=modding:developerinfo:reference'] offiziellen Wiki [/url] Hier ein sehr guter Leitfaden als Ergänzung von Seamon: [url]https://www.transportfever.net/index.php/Attachment/88401-Einen-ersten-Mod-erstellen-2-pdf/[/url] Ein etwas älterer Moddingleitfaden mit Videomaterial ist hier [url]https://www.transportfever.net/lexikon/index.php/Entry/115-Moddingleitfaden/[/url] Hier gibt es ebenfalls Videos von Zargom: [url]https://www.transportfever.net/index.php/Thread/7249-Moddingtutorials-f%C3%BCr-TPF-Vidcasts-Livestreams/[/url] Vorab noch eine Information zum Zeitaufwand. Für eine Tram brauche ich einige Wochen, an meinem ersten Triebwagen habe ich über ein halbes Jahr gearbeitet. Transport Fever Mods sind recht komplex und keine Sache von zwei Stunden. Es bedarf hier einiges an Motivation, Wille und Zielstrebigkeit. Das eigene Modell dann (auch bei anderen) fahren zu sehen, ist jedoch eine tolle Bestätigung für die reingesteckte Arbeit. [size=12][/size] [b][u][size=12]Struktur und Inhalt eines Mods[/size][/u][/b] Generell kann man sich viel von vorhandenen Mods abschauen. Die Struktur ist immer gleich. Man hat ein 3D Modell, welches mithilfe von CAD-Programmen, wie zum Beispiel Blender, modelliert wird. Dieses benötigt eine Textur, also Farben, Aufschriften etc. Bei der Textur handelt es sich um ein ganz normales Bild, welches man in Bildbearbeitungsprogrammen wie z.B. GIMP erstellt. Damit das Spiel weiß, welche stelle vom Bild auf welche Stelle des Modells gehört, "mappt" man das Modell mithilfe einer UV Map. Mit dieser wird Modell und Textur vereint. Das ganze sieht dann zum Beispiel so aus. Das orangene sind die Flächen meines Modells, welche ich auf die Textur drauflege. Nun legt man für einzelne Bereiche spezielle Materialien fest. Diese sagen Transport Fever, welche Eigenschaften die Oberfläche haben soll. Fenster sind transparent und benötigen ein anderes Material, als z.B. die Wände, oder die leuchtenden Scheinwerfer. Mit Materialien stellt man neben Effekten wie Leuchtkraft (für Scheinwerfer) auch die korrekte Darstellung von Transparenz sicher. Dieses Modell wird jetzt mit einem speziellen Exporter in für Transport Fever lesbare Dateien konvertiert. Das sind die .msh und die .msh.blob Dateien. Die .msh Dateien können mit einem einfachen Texteditor (z.B. Notepad++) verändert werden. Die Dateien basieren auf der Programmiersprache Lua und sind leicht verständlich und editierbar. Dort kann man beispielsweise das Material verändern oder Türanimationen einfügen. In den msh.blob. Dateien ist unser Modell mit UV Map integriert, sie bestehen aus kryptischen Zeichenfolgen und können uns egal sein. Jedes Objekt (z.B. Sitze, Außenhülle, Räder) wird einzeln exportiert, bekommt seine eigene .msh und .msh.blob Datei. Diese Objektdateien werden nun weiter sortiert und im Skript zusammengebaut. Hier gibt es dann Unterschiede zwischen Tram, Triebwagen, oder Bahnhof. Wir schauen uns jetzt erstmal nur die normalen Wagons und Triebwagen an. [color=#A9A9A9]- Multiple Unit für Triebwagen(.lua)[/color] --- Model (.mdl) ----- Group (.grp) ------- Mesh (.msh/.msh.blob) Das Mesh/Objekt kennen wir schon. Diese Meshs werden nun in Gruppen eingeteilt. Diese Gruppe gibt an, wo der Kontakt mit der Schiene im Spiel sein wird. Bei einem Triebwagen nutzt man meist eine Group, welche die Meshs des Frontwagens beinhaltet, sowie eine für die Meshs des Mittelwagens, welche wir dann beliebig oft wiederholen oder spiegeln können. Man muss also nur zwei Wagons modellieren, um einen beliebig langen Triebwagen zu bekommen. Jede Gruppe z.B. "Wagon 1" besitzt dann noch zwei weitere Untergruppen "Drehgestell 1" und "Drehgestell 2", welche den eigentlichen Kontakt mit der Schiene festlegen, da wir unseren Wagon ja beweglich auf den Drehgestellen haben wollen. Manchmal bieten sich als Alternativen, vor allem bei Trams und Bussen, [url='https://www.transportfever.net/lexikon/index.php/Entry/52-fakeBogies/%E2%80%8B'] Fake Bogies [/url] (fake Drehgestelle) an. Wir betrachten hier jedoch die normalen Drehgestelle. Meist erstellt man mehrere Exemplare der selben Group, welche verschieden detailreiche Meshs enthalten. Sobald man mit der Kamera weiter weg geht, wird die zweite Group (das zweite Lod = Level of detail) eingeblendet, in der dann sehr detailreiche Meshs wie z.B. Haltestangen und Inneneinrichtung nicht mehr vorkommen. Dafür dürfen die einzelnen Objekte im CAD Programm nicht verschmolzen werden, sondern müssen nach dem Export als eigenes Mesh vorhanden sein (eigene .msh/.msh.blob Datei). In der .mdl werden dann die verschiedenen Lods/Groups verlinkt und weitere Einstellungen wie Preis, Gewicht, Kapazität, oder Ladegeschwindigkeit getroffen. Bei Triebwägen kann man dann in der Multiple Unit .lua (Lua ist die Programmiersprache) mehrere .mdl zusammenfügen, sodass man mit zwei Wagons (zwei .mdl) einen beliebig langen Zug bauen kann. Des Weiteren gibt es Ordner, wo unsere Materialien liegen, in denen wir die Textur verlinken. Für die gibt es dann nochmal extra Ordner, genauso wie für z.B. Soundeffekte. Neben unserer normalen Textur gibt es nämlich noch weitere, beispielsweise für Spiegelungen, Schmutz, oder Einfärbbarkeit. Da man in Transport Fever möglichst ressourcensparend modelliert und nicht jede Niete einzeln modelliert, gibt es auch extra eine Textur (Normalmap), mit der der Zug noch etwas plastischer wirkt, ohne extra modellieren zu müssen. Dazu später mehr. Jedes Stückchen hat also seinen eigenen Ordner, wird über Dateien verlinkt und dann wie ein Puzzle zusammengebaut. Das erlaubt eine gute Anpassbarkeit und immer die gleiche Struktur, egal ob Triebwagen, Lokomotive, oder Tram. Mal fällt etwas weg, mal kommt etwas dazu. [b][u]Das Modell[/u][/b] Für die Modellierung und die UV Map, sowie den Export verwende ich Blender, da es kostenlos und sehr umfangreich ist. Mit Version 2.8 wurde das Interface stark überarbeitet, wodurch es nun weniger Shortcutlastig und weniger verschachtelt ist. Die meisten (Internet- und Video) Tutorials werden daher nicht ganz korrekt sein. Ich verwende hier ebenfalls das alte Blender 2.79. Einige verwenden zur Modellierung auch Sketchup, da es übersichtlicher und einfacher zu bedienen ist. Bei Funktionen und vor allem Rundungen ist es jedoch begrenzt. Für UV Map und Export muss es dann auch nach Blender exportiert werden. Ich persönlich empfehle Blender, da man hier alles beisammen hat. Die Einstiegshürde ist hier zwar höher, jedoch macht sich das meiner Meinung nach bezahlt. Bei der eigentlichen Modellierung schaut man sich am Besten die grundlegenden Funktionen in normalen Blender Tutorials an. Es gilt learning by doing. Jeder hat hier seine eigene Vorgehensweise, Funktionen und Strategie. Das eigentliche Modellieren hier zu erklären würde den Umfang sprengen. [url='https://veb-verkehr.de/site/assets/files/1066/ee922.pdf']Hier gibt es Infos zum Blendern selbst [/url] Wichtig ist jedoch die gute Ausgangslage. Man benötigt genaue Maße, am besten mit technischen Zeichnungen und verzerrungsfreien Bildern. Technische Zeichnungen findet man häufig auf der Herstellerseite, in Büchern, bei anderen Moddern ([url]https://docs.google.com/spreadsheets/d/1uJqxYfiH0SEjNQhaSn_GY0Kun4ELYfkL_fGcBtL-a2c/edit[/url] hier oder einfach fragen), oder auch auf Anfrage bei den Herstellern. Youtube Videos helfen auch um Details zu erkennen. Zeichnungen kann man in Blender als Hintergrund einfügen und so die Form vergleichen. Ich beginne meist mit einem Quader, den ich auf die richtigen Maße einstelle. Ich erweitere Flächen mit E, füge Schnittlinien mit Strg + R hinzu, schiebe diese etwas hin und her, runde die Kanten mit Strg + B ab und bastel so mein Modell aus verschiedenen Quadern und Flächen zusammen. Die Wände sollte man doppelt machen, damit man die Innenverkleidung andersfarbig machen kann und nicht die Außentextur auch innen hat (z.B. blau). Dazu nehme ich die fertige Außenwand, kopiere sie (Shift + D) und skaliere sie etwas kleiner. Das ist nun meine Innenwand. Man kann auch mit einer Fläche anfangen, diese mit E etwas dicker machen (ca. 0.02 cm) und dann abrunden. Dann spart man sich das Skalieren, weil sie bereits dabei ist, muss jedoch darauf achten, dass man außen und innen gleich bearbeitet. BILDER Bei symmetrischen Teilen kann man auch nur eine Hälfte modellieren und dann mit dem Mirror Modifier spiegeln. Türen muss man ausschneiden, damit sie später animiert werden können. Ich verwende hier den Modifier Boolean. Fenster kann man später aufmalen, müssen also nicht ausgeschnitten werden. Wenn man eine Innenkamera verwenden möchte, sollte man die Fenster innen entfernen (nur einseitige Fenster) Das Ziel ist möglichst wenige Dreiecke (Tris) zu verwenden, aber gerade so viele, dass das Objekt noch schön und charakteristisch aussieht. Je mehr Dreiecke man verwendet, desto mehr Ressourcen wird das Fahrzeug brauchen. Richtwerte für eine Tram oder einen Wagon eines Triebwagens sind 10 bis 20 Tausend Dreiecke. Wenn es das Doppelte ist, ist das auch kein Weltuntergang. Fünfach sollte man jedoch vermeiden. Man kann später Details auch ausblenden, wenn man mit der Kamera weiter weg geht (Lods - Levels of detail), sodass die vielen Tris nicht ins Gewicht fallen. Bei der Performance kann man auch darauf achten, wenige einzelne Objekte zu verwenden(nicht jeden Sitz als ein Objekt), da sonst mehr Positionsberechnungen durchgeführt werden müssen. Abrunden kann man auch ohne mehr Dreiecke zu verwenden, nämlich mit dem Shading (verwendet Schattierung). Damit das jetzt aber nicht jede Kante weggesmootht wird, stelle ich beim Edge Split Modifier z.B. 40 Grad ein. Diesen wende ich aber nicht an (sonst trennt er die Kanten, wodurch die Schattierung nicht mehr korrekt ist)! Man sollte darauf achten, dass bereits in Blender die Schattierung keine komischen Flecken, Flackern, oder Kanten aufweist (die Flächen müssen verbunden sein). Ansonsten mal Strg + N (Richtung der Normals - Außen/Innen), Mesh - Vertices - Remove Doubles, oder Mesh - Clean up - Delete loose versuchen. Wenn nichts hilft manuell die getrennten Punkte auswählen und mit W - Merge zusammenfügen. Wie bereits angesprochen, sollte man darauf achten, nicht zu viel zusammen zu fassen, damit man einzelne Objekte in verschiedenen Lods ausblenden kann. Für das Wendezugfeature ist es zudem wichtig, alle wendezugfähigen Objekte (Scheinwerfer rot, Scheinwerfer weiß, Zugzielanzeige Hauptbahnhof, Zugzielanzeige Ostbahnhof) als extra Objekt zu definieren. Sie werden dann automatisch vom Spiel ein- oder ausgeblendet. Mit Transport Fever 2 werden wahrscheinlich Blink- und Bremslichter nach dem gleichen Prinzip funktionieren. [b][u]Die UV Map[/u][/b] Wenn unser Modell soweit fertig ist, benötigen wir die UV Map und unsere Textur. Jedes Objekt bekommt mit seinen Flächen nun einen Platz auf der Textur zugewiesen. In Blender öffnet man am Besten ein zweites Fenster. Auf einer Seite hat man das Objekt, auf der anderen Seite die UV Map (UV Image Editor). Die Funktion heißt “Unwrap” (U im Edit Mode) und bietet verschiedene Arten, die Flächen aufzuteilen. Hier muss man einfach ausprobieren und je nach Fall entscheiden, welche der Funktionen die beste Aufteilung bieten. Man kann auch nur bestimmte Flächen des Objekts auswählen und Fläche für Fläche unwrappen. Wichtig ist, dass die Fläche möglichst wenig verzerrt ist, da man sonst nicht sauber texturieren kann. Bei runden Objekten muss man meist in mehrere Teilflächen splitten. BILD Man sollte darauf achten, die einzelnen Flächen nicht bündig/zu nah aneinander zu legen, da es sonst später zu Pixelmatsch kommt und nicht mehr klar getrennt werden kann, welche Farbe zu welcher Fläche gehört. Der Platz auf der Textur sollte zudem möglichst komplett ausgenutzt werden. Je größer die UV Map (und je höher die Auflösung der Textur), desto detaillierter kann man später texturieren. Flächen (Wagon, Türen, …) auf denen man später Beschriftungen, Piktogramme oder Details anbringen möchte, sollten daher größer gemappt werden, als zum Beispiel die graue Innenraumverkleidung. Beim mappen kann man variieren von “jede graue Innenverkleidung extra mappen und texturieren” bis “alles graue auf einen fleck klatschen” → Zitat erfahrener Modder “Noooooo” :D Je genauer man mappt, desto mehr kann man im Nachhinein bei Repaints verändern. Wenn man alles übereinander auf eine einfarbige Fläche legt, kann man dort keine Spiegelungen, Einfärbungen, Schmutz, oder nachträgliche Veränderungen vornehmen, die über einen Farbwechsel hinausgehen. Bei der Reihenfolge gibt es verschiedene Herangehensweisen. [list=1][*]Man kann alle Objekte temporär zusammenfassen (Strg + J), die UV Map für alles erstellen, exportieren und dann die gesamte Textur auf Basis der UV Map machen. Vorteil ist hier, dass man den Platz auf der Textur optimal ausnutzen kann. Am Ende muss man jedoch die Objekte wieder trennen (P im Edit Mode) [*]Man erstellt die UV Map für ein Objekt, texturiert nur dieses eine und wiederholt das für jedes Objekt. Ich arbeite nach diesem Verfahren, switche dabei häufig zwischen Textur und Blender, und kann dadurch leichter Korrekturen an Textur, sowie UV Map (Größe, Details) vornehmen. Hier muss man aber vorher die Größe abschätzen, damit am Ende alles draufpasst und keine Lücken bleiben. Für die äußeren Texturen verwende ich etwa die Hälfte bis zwei Drittel der Textur. [/list] Exportieren kann man die UV Map im Edit Mode über Uvs - Export UV Layout. [b][u]Die Textur[/u][/b] Für die Textur taugt so gut wie jedes beliebige Zeichenprogramm, welches über Paint hinausgeht. Ich verwende das kostenlose GIMP (2.8 - nicht das neue), viele kommen damit jedoch nicht zurecht. Einige benutzen auch PaintShop, Substance Painter, Photoshop, oder Paint.net. Das verwendete Programm sollte verschiedene Ebenen unterstützen, mir reichen meistens 5 Stück. Andere texturieren mit 100 verschiedenen Ebenen. Letzten Endes muss die Farbe drauf. Ebenen können helfen, das ganze variabel und nachträglich änderbar zu machen. Wenn man alles auf einer Ebene macht, kann man für andere Mods wenig wiederverwerten. Eine wichtige Entscheidung ist die Auflösung der Textur. Je höher die Auflösung, desto detaillierter kann man texturieren. Vor allem bei Rundungen begrenzen die Pixel die Qualität. Auch hier muss man einen Mittelweg zwischen ausreichender Qualität und verbrauchter Leistung finden. So klein wie möglich, so groß wie nötig. 1024x1024 oder 2048x2048 Pixel sind gängig. Ich verwende so gut wie immer 2048 und komme damit gut klar. Die Textur speichert man bei GIMP als Gimp Datei, da dort alle Ebenen vorhanden bleiben. Hier kann man später leicht Änderungen vornehmen. Für Transport Fever exportieren wir - dabei wird alles sichtbare in eine Ebene zusammengefasst. Als Format am Besten .tga verwenden (Den Haken bei RLE Kompression wegmachen!). Später werden wir dann auf DDS wechseln. Um zu schauen, ob die Textur soweit passt, können wir sie in Blender im UV Map Bereich hinzufügen. Dort sehen wir die Textur dann direkt auf dem Modell. [b][u]Materialien, Einstellungen und Export[/u][/b] Das wichtigste steht nun. Jetzt kommt der Export. Für das Exportieren wird das Blender Addon von Merk benötigt. Es funktioniert noch nicht mit dem neuen Blender 2.8. Animationen lassen sich ebenfalls nicht exportieren, diese in Blender bereits zu erstellen ist unnötig. Wir erstellen sie später im Skript manuell. Anleitung: [url]https://www.transportfever.net/lexikon/index.php/Entry/38-Blender-Import-Export-Addon/[/url] Download: [url]https://www.transportfever.net/index.php/Thread/7876-Blender-Import-Export-Addon-aktuell-Version-0-5-3-Alphatest/?postID=169526#post169526[/url] Sobald es installiert ist, müssen wir noch einige Vorkehrungen treffen. Ansonsten bekommen wir Fehlermeldungen. Man kann in Blender bereits alle Materialien einstellen, Texturen verlinken und Einstellungen treffen. Da mir meistens viele Sachen noch fehlen und manche Funktionen nicht gehen (Animationsexport) und ich erstmal nur die Dateien haben möchte, exportiere ich erstmal nur Dummys und stelle den ganzen Rest später ein. Nur die Materialanzahl und Benennung sollte ich mir vorher überlegen, da das spätere Ändern umständlich ist (man kann auch später neu exportieren). Ich verwende meist je ein Material für die äußere Wand, die äußere transparente Wand (Fenster), den Innenraum (nichts transparent da Fenster weggeschnitten) und für die Scheinwerfer (leuchtend). Zum Export: [list=1][*]Das Modell darf nur Dreiecke und keine N-Gone enthalten. Dazu wenden wir überall den Modifier Triangulate an. [*]Wir erstellen ein Model, eine Group für jeden Wagon und setzen sie in den Nullpunkt. Pro Drehgestell erstellen wir nun ebenfalls eine Group. Der Ursprung der Drehgestellgroup muss in der Mitte des Drehgestells (es rotiert um die Z-Achse) liegen. Dabei hilft Shift + S und “Set Origin”. [*]Die Drehgestellgruppe wird als Parent der Drehgestellmeshs definiert (Meshs auswählen, dann Gruppe, dann Strg + P). Die Wagongruppe ist Parent der Wagonsmeshs sowie der Drehgestellgruppe. Das Model ist Parent von einer Wagongruppe. Für zwei Wagons haben wir zwei Model. [*]Damit sich das Rad korrekt dreht, muss der Ursprung auf der Y-Achse (Rotationsachse) der Räder liegen. Für die Räder wird in den Einstellungen die Box “Axle” angewählt (könnte man auch später hinzufügen). Für alle anderen Meshs (nicht Drehgestell und Räder) sollte der Ursprung auf dem Nullpunkt liegen. Dazu übernehme ich Position (evtl. Rotation und Skalierung) mit Strg + A. [*]Jedes Mesh braucht ein Material zugewiesen. Im Reiter Material erstellt man ein neues, benennt es, erstellt im Reiter daneben eine neue Textur und verlinkt als Image unsere erstellte Textur. Bei den Materialeinstellungen muss zudem für das Standardmaterial “Reflective” unsere Textur für map_color_reflect angegeben werden. [*]Wir wählen Wagonmodel1 aus, Wagongroup1, alles was dadrunter ist (Meshs, Drehgestellgroup und dessen Meshs) und exportieren. Bei den Exporteinstellungen kann man einen Unterordner angeben (z.B. den Namen des Zuges) und damit wir nicht das zweite Model gleichzeitig exportieren wählen wir nur NGons und nicht Unselected. [*]Später machen wir das mit dem zweiten Wagon und dem zweiten Model. Zur Vereinfachung benutzen wir erstmal nur eins. [*]Fertig exportiert. Im Pfad befindet sich nun der Ordner res, in dem unsere Dateien liegen. [/list] [b][u]Das Skripting[/u][/b] Wir schauen uns jetzt mal die einzelnen Dateien an. Wir öffnen die .msh Dateien (models - mesh - vehicle - train - evtl. unterordner) mit einem Texteditor (z.B. Notepad++) und finden dort einen Verweis zu unserem Material. Hier ist es hilfreich, wenn man sie vorher in Blender schon richtig zugeordnet und benannt hat. Dann müssen wir nichts ändern. Später werden wir hier auch Türanimationen einfügen. Als nächstes schauen wir uns die Groups an (models - group - vehicle - train - evtl. unterordner). Auch diese öffnen wir mit dem Editor. Dort vergewissern wir uns, dass die Pfade zu unseren Meshs korrekt sind. In den Wagongroups sind dann auch die Drehgestellgroups vorhanden und verlinkt. Die vielen Nullen und Einsen bestimmen die Ausrichtung der Modelle. Man könnte sie hier mit der Transformationsmatrix [url]https://www.transportfever.net/lexikon/index.php/Entry/83-Transformationsmatrix/[/url] noch ändern. Ich empfehle jedoch Änderungen direkt in Blender vorzunehmen und dann neu zu exportieren, sodass in Blender immer alles auf dem aktuellsten Stand bleibt. Wenn das passt öffnen wir unser Model (models - model - vehicle - train). Dort prüfen wir, ob der Pfad zu unserer Wagongroup korrekt ist. Außerdem können wir hier bereits Werte in der metadata einfügen. Dazu gehören zum Beispiel Verfügbarkeit, angezeigter Name und Beschreibung, Kapazität, Geschwindigkeit, Lebensdauer, oder Gewicht. Am Besten kopiert man diesen Teil von einem anderen Mod und ersetzt die Werte. -1 bedeutet automatische Berechnung und wird für Kaufpreis und Wartungskosten eingetragen. Wenn wir in Blender die Räder noch nicht mit “Axle” markiert haben, müssen wir manuell den Pfad zu unseren Radmeshs hinzufügen. Später fügen wir hier auch extras wie Passagiere, Wendezugfähigkeit, Kamerapositionen, oder Sounddatei ein. [b][u]Materialien konfigurieren[/u][/b] Als nächstes kümmern wir uns um die Materialien. [url=https://www.transportfever.net/lexikon/index.php/Entry/99-Materialien/]Hier eine Liste und ihre Eigenschaften.[/url] Die Materialdateien befinden sich bei material - vehicle - train. Möchte man sie in einen Unterordner tun, muss darauf geachtet werden, dass in jeder .msh Datei der richtige Pfad zum Material steht. Für das Material Wagontransparent verwende ich PHYS_TRANSPARENT_NRML_MAP_CBLEND_DIRT , für Wagon und Innenraum (keine Transparenz) PHYSICAL_NRML_MAP_CBLEND_DIRT und für Emissive (leuchtend) EMISSIVE. Zusatzinfo für EMISSIVE: Es hat sich herausgestellt, dass für rote, leuchtende Scheinwerfer am Besten eine extra Textur verwendet wird, die nicht im .tga/DDS Format, sondern in .hdr (Photoshop) Format ist. Zudem funktioniert EMISSIVE nicht hinter transparenten Flächen. Alternativ kann man mit einem nicht leuchtenden Typ und den Materialkoeffizienten eine leuchtende Zugzielanzeige oder rote Scheinwerfer erzeugen. [url]https://www.transportfever.net/lexikon/index.php/Entry/145-Material-Koeffizienten/[/url] Je nach Materialtyp hat die Datei nun andere Inhalte. Am Besten kopiert man diese von anderen Mods und ersetzt nur den Pfad zur Textur. Das ist nämlich das Wichtigste. map_albedo (_opacity bei transparenz) ist unsere normale Textur, für die wir den Pfad angeben (befindet sich bei textures - models - vehicle - train - evtl. unterordner; der Pfad wird ohne textures angegeben). Es gibt nun noch weitere benötigte Texturen. Das sind Glossmap/mga (metal gloss ao), Dirtmap/cbr (cblend dirt rust) und die Normalmap. Die Glossmap gibt an, wie stark welche Stelle spiegeln soll (Metalleffekt, Reflektion und Ambient Occlusion = Schattierungen). Auf der Dirtmap legt man fest, an welchen Stellen wie viel Rost und Schmutz auftaucht und welche Stellen sich mit der Einfärbefunktion einfärben lassen. Mit der Normalmap können wir Stellen plastisch wirken lassen, die eigentlich eben sind. Da wir ressourcensparend modelliert haben, kann man damit kleine Unebenheiten künstlich erzeugen. Diese Texturen kann man entweder jetzt erstellen, oder einen Platzhalter verwenden. Dann hat man für einen ersten Test noch keine Spiegelungen oder Schmutz. Die Platzhaltertexturen einfach zu den anderen Texturen legen, den Pfad verlinken und dieses Kapitel überspringen. [b][u]Weitere Texturen erstellen[/u][/b] Nun müssen wir die oben angesprochenen weiteren Texturen erstellen. Hierfür gibt es einige nützliche Lexikoneinträge. [url]https://www.transportfever.net/lexikon/index.php/Entry/173-Texturen-und-die-Kan%C3%A4le/[/url] [url]https://www.transportfever.net/lexikon/index.php/Entry/229-Glossmap-und-Texturen-ein-zweiter-Versuch/[/url] Für jemanden, der keine Erfahrung in der Bildbearbeitung hat, sind diese jedoch teilweise zu kompliziert. Ich arbeite selbst etwas schlampig und nicht professionell, daher erkläre ich es hier auf meine sehr simple Weise. Jede Farbe besteht aus den Bestandteilen Rot, Grün und Blau. Das sind die Kanäle. Jede Farbe bestimmt, wie stark eine Eigenschaft ausgeprägt ist. Laut dem Artikel ist in der Glossmap (metal gloss ao) Rot für den schimmernden Metalleffekt zuständig. Ich öffne meine Farbeinstellung und stelle den Regler bei Rot zwischen 0 und 255 ein. Wie stark der Wert sein muss, muss man ausprobieren. Für moderne Hochglanzfahrzeuge braucht man meist garkein Metall (maximal Wert 30). Dafür benötigt man dort stärkere Spiegelungen/Umgebungsreflektionen. Dafür ist Grün zuständig. Ich möchte eine starke Spiegelung und verwende zum Beispiel 210. Blau gibt Ambient Occlusion an. Damit kann man Schattierungen auf der Textur erzeugen. Bei modernen Fahrzeugen ohne große Einkerbungen benötigt man dies nicht. Dort wählt man dann einfach 255 für die volle Farbkraft. Bei älteren Fahrzeugen kann die AO Map mehr Realismus und mehr Plastizität erreichen. Wie man sie erstellt steht zum Beispiel in Seamons Leitfaden [url]https://www.transportfever.net/index.php/Attachment/88401-Einen-ersten-Mod-erstellen-2-pdf/[/url] Je nach Bereich mische ich mir somit meine Farbe zusammen. Einige Farbcodes als Beispiel: Hochglanzwände/Fenster (man kann noch mehr grün geben) 15d7db, Innenraum/Sitze/nicht stark reflektierende Dinge (keine Reflektion, kein Metalleffekt) 0000ff, Mittelding für Fensterrahmen z.B. 0065e7 Bei der Dirtmap (cblend dirt rust) ist Rot für die Einfärbbarkeit zuständig. Ich nehme hier erstmal 255 (keine Einfärbung). Dann nehme ich die normale Textur in die zweite Ebene, wähle umfärbbare Bereiche aus und ändere sie in der Dirtmap von Rot 255 auf Rot 0 (schwarz). Diese Bereiche wird man dann einfärben können. Nun kommt Schmutz (Grün) und Rost (Blau). Schmutz erstelle ich mit dem Sprühwerkzeug. Dafür habe ich mir eine Schmutzebene gemacht, die ich immer wieder verwenden kann. Die Farbe ist dabei Rot 255 (erstmal nicht einfärbbar), Grün 162 (mittlerer Schmutz) und Blau 0 (Kein Rost) → Farbcode ffa200. Blau wähle ich 0, weil ich bei modernen Fahrzeugen kaum Rost habe und dieser vernachlässigbar ist. Ich persönlich brauche auch keinen Schmutz in der Nähe von Rädern, Auspuff oder an Kanten. Für mich ist es wichtig, dass das ganze Fahrzeug dunkel, dreckig und fleckig wird. Daher recht simpel eine Textur die ich immer wieder verwenden kann. Diese Schmutzebene wird nun über die rot/schwarz Ebene gelegt. Jetzt wäre das Problem, dass die einfärbbaren Bereiche zwar einfärbbar wären, der Schmutz jedoch mit Rot 255 es nicht ist. Wir haben dadurch orange auf Schwarz und damit haben die Flächen, auf denen Schmutz liegt, bei Rot nicht mehr 0. Wir wählen also auch in der Schmutzebene die einfärbbaren Flächen auf und vertauschen die Farbe (orange ffa200) durch die Farbe ohne Rotton (Rot auf 0 drehen, dann haben wir 00a200). Nun noch die Normalmap. Das ist die lila Map, die künstliche Erhebungen hinzufügt. Auch da könnte man es professioneller machen mit Schwarz/Weiß Textur (→ [url='https://www.transportfever.net/lexikon/index.php/Entry/245-NormalMaps-erstellen/']NormalMaps erstellen[/url] ), ich mache es mir einfach, nehme meine normale Textur, verwende das GIMP Normalmap Plugin (im Internet runterladen) und wende es an. Ein paar Korrekturen nehme ich noch vor (Kontrast erhöhen/verringern für stärkeren/leichteren Effekt; X und Y vertauschen für Einkerbung statt Hervorhebung bzw. andersrum) und fertig. [b][u]DDS Texturen[/u][/b] Das bisher verwendete .tga Format ist in Ordnung, für Transport Fever lesbar und funktioniert auch. Bei DDS hat man jedoch den Vorteil, dass die Textur nochmal komprimiert wird und dadurch Leistung spart. Teilweise entsteht etwas Pixelmatsch, da hier mehrere Pixel zusammengefasst werden. Meistens merkt man dies jedoch nicht. [url='https://www.transportfever.net/lexikon/index.php/Entry/159-DDS-Texturen/']DDS-Texturen[/url] Für Gimp gibt es ein DDS Plugin, welches man installiert. Beim Export sollte man hier alle Ebenen zusammenfügen oder unnötige löschen, da sonst das Plugin durcheinander kommt. Wenn man wirklich nur noch eine (sichtbare) Ebene hat, muss man diese vertikal spiegeln. Nun exportiert man sie mit der Dateiendung .dds und wählt je nach Textur folgende Einstellungen. Für die normale Textur (besitzt Transparenz) DXT5 sowie “generate mipmaps” Für die mga/Glossmap, sowie für cdr/Dirtmap DXT1 sowie “generate mipmaps” Für die Normalmap 3DC sowie “generate mipmaps” Die Texturen ersetzen nun die alten tga Texturen bzw. die Platzhaltertexturen. In den Materialien muss nun der Pfad mit der korrekten Dateiendung .dds korrigiert werden. Das Modell, UV Map, sowie Texturen sind jetzt fertig. Grundlegende Einstellungen haben wir im Skript bereits getroffen. Bevor wir zusätzliche Features wie Animationen, Lods, Wendezugfähigkeit, oder Passagiere hinzufügen, sollte man das bisherige testen. [b][u]Die ersten Tests: Model Viewer und Transport Fever[/u][/b] Beim Ändern von Dateien muss die Welt in Transport Fever immer neugeladen werden, um die Änderungen zu übernehmen. Das ganze geht auch etwas schneller über den Model Viewer. [url]https://www.transportfever.com/wiki/doku.php?id=modding:developerinfo:tools[/url] Im Model Viewer kann man direkt Screenshots aufnehmen, die später ingame angezeigt werden. Der Vehicle Stage Mod fügt dabei die Schiene direkt hinzu. Der Model Viewer kommt in C:\Program Files (x86)\Steam\steamapps\common\Transport Fever Damit der Viewer und Transport Fever unseren Mod erkennt, müssen wir noch einige Kleinigkeiten hinzufügen. Der res Ordner kommt in einen Ordner, der nach folgendem Schema benannt wird: Name_Modname_1 . In meinem Fall (Steamname marc345) marc345_C2Inspiro_1. Neben dem res Ordner, muss dort noch eine mod.lua Datei rein. Diese stellt allgemeine Informationen wie Mod Name, Mod Beschreibung, oder Autor bereit. Dazu wieder eine bereits vorhandene kopieren und durch die eigenen Informationen ersetzen. Unseren Mod platzieren wir jetzt in C:\Program Files (x86)\Steam\steamapps\common\Transport Fever\mods In Transport Fever kann man den Mod nun ganz normal aktivieren und im Depot kaufen. Im Model Viewer auf ” …” klicken und dann ist er dort ebenfalls sichtbar. Man kann nun ein Model auswählen und anzeigen lassen. Dort findet man auch Einstellungen für Schmutz, Farbeinfärbung, oder Passagiere. Hier sieht man die Farben, Spiegelungen und vorherigen Arbeitsschritte, wie sie im Spiel aussehen. Sollte es Unstimmigkeiten geben, kann man diese nun korrigieren. Sollte das Spiel oder der Viewer abstürzen, sollte man sich die Fehlermeldung im Viewer (hat mehr Fehlermeldungen) oder in der stdout.txt anschauen. Sollten sie unklar sein, am Besten nachfragen. Wenn nun alles passt, können wir noch die restlichen Funktionen hinzufügen. ToDo: Lods noch einstellen multiple unit lua Hilfreiche Links [url]https://www.transportfever.net/lexikon/index.php/Entry/94-Sound-Set/[/url] [url]https://www.transportfever.net/lexikon/index.php/Entry/245-NormalMaps-erstellen/[/url] [url]https://www.transportfever.net/lexikon/index.php/Entry/71-T%C3%BCren-animieren/[/url] [url]https://www.transportfever.net/lexikon/index.php/Entry/162-Steam-Workshop-Modifikation-ver%C3%B6ffentlichen/[/url] [url]https://www.transportfever.net/lexikon/index.php/Entry/255-Passagiere-und-Besatzungsmitglieder-in-Fahrzeugen/[/url]

Teilen

Kommentare

  • Wie macht man denn das Licht im Fahrgastraum an bei Personen Zügen?

    • Nix besonderes. Einfach ein emissive Material.

      Da muss sich ja nix bewegen, wechseln oder sonst was.

  • Thanks for that entry!

    In point 14, are you referring to that article? Sound Set


    Thanks a lot for the commented sound config.

  • Portierung altes Forum


    Swesim - 8. Januar 2020


    This seems like a good place to start, will there be an English version as well

    Marcolino26 - 8. Januar 2020

    Use deepl. That‘s what I would do to translate it lol.

    Beware it‘s TPF 1 not 2. There has been changes in exporting and file structure.


    Daniel-DB-Regio - 22. Oktober 2019

    Klasse Anleitung. Hab aber eine Frage:

    Wie kann man ein FZ-Mod in ein Gleis-asset umwandeln?

    Hans213 - 16. September 2019

    Hallo Marco.

    Ich denke das bei Unwrap man zuerst für alle Objekte zur gleichen Zeit Strg + a (Ctrl+a) für das auf x=1, y=1, z=1 Skalieren merken muss. Weil sonst die Unwraps verzerrt sind. Ich hab lange nach die Ursache gesucht


    Marcolino26 - 16. September 2019

    Normal wird das beim unwrappen nicht benötigt. Was meinst du mit verzeichnet?

    DH-106 - 16. September 2019

    Das stimmt - wenn man vor dem Abwickeln nicht "Apply Rotation and Scale" über das Teil laufen läßt, wird die Abwicklung oft verzerrt.

    Marcolino26 - 16. September 2019

    Achso ok, ist mir nie aufgefallen. Schreibe das mit rein, danke [Blockierte Grafik: https://alt.train-fever.net/wcf/images/smilies/smile.png]

    Hans213 - 16. September 2019

    verzerrt


    Die Aspect Ratio (Höhe/Breite) stimmt sonst nicht immer



    Hans213 - 25. August 2019

    Super Anleitung, Danke dafür.

    Etwas kleines was mir aufgefallen ist: den Modifier Triangulate brauch ich aber nicht anzuwenden für ein export mit dem Import/Export Tool. Das hat als großen Vorteil das die Original Dateien nicht alle nach unhandlichen Dreiecken umgesetzt werden.

    Marcolino26 - 25. August 2019 +1

    Nicht? Dachte man muss ihn anwenden.

    Es hieß mal man muss garnix anwenden, aber in der Praxis meinte ich man musste es dann doch.

    Kann auch sein, dass ich ihn angewendet habe, weil ich dann noch unschöne Sachen wegmachen konnte, die dadurch entstanden sind.

    Kommt alles mit rein, vielen Dank für deinen Kommentar!

    Edit: Habs ausprobiert. Ja ohne anwenden geht. Wenn aber unschöne Kanten entstehen muss man anwenden, um die zu beheben.

    DH-106 - 25. August 2019

    Das Spiel verträgt keine >4eckigen Flächen. Nur diese muß man zerlegen - man kann sie aber auch durchaus in Vier- und Dreiecke zerlegen und muß sie nicht beinhart alle zu Dreiecken zerhacken. Eine von vielen guten Methoden ist, beim Export die illegalen Polygone automatisch markieren zu lassen und dann nur die zu triangulieren; das ist im Blender und mit Merks Addon eine Sache von ein paar Minuten.


    Vielen Dank für die Anleitung, die hätte ich SEHR gut gebrauchen können, als ich angefangen habe [Blockierte Grafik: https://alt.train-fever.net/wcf/images/smilies/smile.png]

    Marcolino26 - 25. August 2019

    Aha interessant, man lernt nie aus. Edit: Ausprobiert, stimmt [Blockierte Grafik: https://alt.train-fever.net/wcf/images/smilies/biggrin.png]

    Beim Exportieren kommt bei mir aber bei mehr als 4 Ecken trotzdem die Fehlermeldung, dass noch N Gone vorhanden sind, egal ob ich den Button "Ngons" beim Exporter wähle, oder nicht.

    Wie kann man dann nur die zerhacken, die mehr als 4 Ecken haben?


    Als ich es gelernt habe, habe ich immer mit freds Leitfaden und Videos gearbeitet. Die waren schon gut, aber unvollständig, nicht aktuell und teilweise noch zu kompliziert [Blockierte Grafik: https://alt.train-fever.net/wcf/images/smilies/biggrin.png]

    DH-106 - 25. August 2019

    Wenn du ein .msh exportierst, wähle vorher alle Flächen/Ecken/Punkte ab. Der Plugin markiert dann alle illegalen Vierecke gelb, und über die fährst du dann mit Mesh-Faces-Triangulate Faces drüber. Danach sollte das .msh nur noch aus Drei- und Vierecken bestehen.

    Marcolino26 - 25. August 2019

    Ohooo mega, danke [Blockierte Grafik: https://alt.train-fever.net/wcf/images/smilies/biggrin.png] *gleich hinzufügen*

    Ich wusste dass er die Fehlermeldung bringt, jedoch nicht, dass er dann auch gleich die betroffenen Flächen markiert.


    Der Plan ist auch ihn in Englisch zu übersetzen (zu lassen - DeepL und nachkorrigieren). Dafür muss er aber erstmal fertig werden. Daher warte ich noch, bis mehr Feedback kommt.

    DarkMo
    - 12. September 2019 +1 Richtig, Grafikkarten können nur (noch) Tris. Das Exporttool wandelt automatisch Quads in Tris, nur ngons gehen nicht. Also alles mit 5 und mehr Kanten sollten umgewandelt werden. Dazu muss man auch nicht per se alles triangulieren. Mesh auswählen und in den Editmode wechseln. Alles deselektieren. Unten auf Select -> Select All By Trait -> Select Faces by Sides. Nun habt ihr in der Linken Seitenleiste unten ein kleines Menü. Bei Number of Vertices gebt ihr 5 ein - ne Käse, lasst die 4 und darunter macht ihr aus Equal To ein Greater Than. Fertsch. Nun könnt ihr nur die ngons mit Strg+T triangulieren. Oder Ihr nutzt diese Ansicht einfach, um manuell nachzuarbeiten. Wie schon erwähnt, ist das automatische Triangulieren manchmal doof. Gerade bei Rundungen. Wenn es dann ne Delle statt ne Beule generiert ist das suboptimal. Da muss man dann halt manuell die andere Diagonale nutzen. Wenn alle Stricke reisen die Fläche löschen und immer 3er Gruppen Vertices auswählen und mit F daraus ne Fläche erstellen

    MaikC - 23. August 2019 +2

    Hab jetzt nicht ganz alles nur mal überflogen, schöne Anleitung.

    Der Satz ist allerdings nicht (mehr) korrekt: -->Zudem funktioniert EMISSIVE nicht hinter transparenten Flächen.

    Das funktioniert ohne Probleme, siehe Lexikon

    transportfever.net/lexikon/ind…260-Emissive-hinter-Glas/


    Marcolino26 - 23. August 2019 +1

    Nope. Habs ausprobiert. Sobald man etwas weiter weg geht verschwindet Text. Nach wenigen Metern sieht man ihn nicht mehr. Die Lösung ist leider nur begrenzt nutzbar. Habs dort auch in die Kommentare geschrieben.

    Für Leuchten geht das, für ZZA nicht - ich schreibs mit rein.