Hier gehts zu den Videos des Modding Leitfadens. Diese sind nur als Ergäzung zum schriftlichen Leitfaden zu sehen.
Tutoriallok - Ergänzung zum Modding Leitfaden
Diskussionen zu diesem Artikel bitte in diesem Thema führen: Diskussion zum Moddingleitfaden
1 Einleitung
In Foren liest man immer wieder die Frage “Wie erstelle ich meinen eigenen Mod?”. Meistens werden solche Fragen nicht besonders ausführlich beantwortet. Dies liegt aber nicht an unfreundlichen Moddern, sondern vielmehr an der Frage selbst. Wie soll man auch antworten?
Die Frage einfach ignorieren – kommt irgendwie unhöflich rüber. Eine ausführliche Antwort schreiben? Kein Problem, wenn man gerade mehrere Wochen Urlaub hat und nicht weiß wohin mit der ganzen Zeit. Aber dies trifft wohl nur selten zu. Bleiben also knappe, ausweichende Antworten. So wird immer wieder empfohlen sich erstmal mit den Programmen vertraut zu machen und danach gefälligst konkrete, leicht zu beantwortende Fragen zu stellen. Bitte nicht falsch verstehen, dies soll kein Vorwurf an Modder sein, ich würde genauso reagieren bzw. erst gar nicht antworten.
Um aber Anfängern trotzdem einen leichteren Einstieg ins Thema zu ermöglichen, habe ich mich entschlossen diesen Artikel – wahrscheinlich wird er dann doch relativ lang – zu schreiben. Denn irgendwie hab ich das Gefühl, dass die “junge Generation” nicht mehr die Motivation hat sich selbstständig ins Thema einzuarbeiten, aber auf der anderen Seite viele aktive Modder eine unglaubliche Bereicherung für ein Spiel sind. Somit hier der Versuch für alle Interessierte eine kleine Hilfestellung zu bieten. Das ganze wird keine ausführliche Schritt für Schritt-Anleitung, dafür ist das Thema einfach zu umfangreich. Aber ich möchte wenigstens versuchen, zu helfen. Wenn es dann um einzelne Details geht, findet man im Internet sehr umfangreiche Videotutorials oder kann auch einfach im Forum nachfragen.
Allgemein kann man sicher sagen, dass es nicht einen Weg gibt. Es existiert eben kein Programm bei dem man oben ein Bild des Vorbilds hineinsteckt und unten ein fertiger Mod herauskommt. Wahrscheinlich hat jeder Modder seine ganz eigene Arbeitsweise entwickelt. Es handelt sich hier also nur um eine von vielen Möglichkeiten zum eigenen Mod zu kommen.
Benötigte Programme
Modellierung: z.B. Blender (http://www.blender.org/). Es ist aber auch jede andere 3D-Software möglich. So verwende ich zum Beispiel die CAD Anwendung SolidWorks.
Mapping: Hier nutze ich auch Blender (http://www.blender.org/), aber auch Programme wie Maya sind möglich.
Export als TrainFever-Datei: Das Blenderaddon zum Import/Export von TrainFever Objekten von Merk ist hier sehr hilfreich (Blender Import/Export Addon). Es gibt aber im Downloadbereich noch weitere Exporttools
Texturen: Gimp (http://www.gimp.org/), Photoshop (http://www.photoshop.com/), Paint.net (http://www.getpaint.net/index.html) oder Paint Shop Pro (http://www.paintshoppro.com)
2 Recherche
Dieser Punkt wird wohl oft vernachlässigt. Aber bevor es richtig los geht, sollte man schon wissen, was genau man machen möchte. So bietet es sich an nicht nur nach Fotos zu suchen, sondern auch Texte über das gewünschte Fahrzeug zu lesen. So erfährt man oft wichtige Details zu Umbauten oder verschiedenen Varianten.
Daneben helfen natürlich vor allem maßstäbliche Zeichnungen, im Optimalfall mit exakten Maßen. Bei Bildern sind vor allem Aufnahmen ohne perspektivische Verzerrung wertvoll. Also Aufnahmen genau von der Seite/Vorne/Hinten.
Für den Beginn empfiehlt es sich ein einfaches Fahrzeug zu nehmen. Also eine Elektro- oder Diesellok mit vielen glatten Flächen, am Besten noch schön Kasten-förmig. Also ein rollender Schuhkarton. Das klingt jetzt vielleicht blöd, da der TEE als mein erster Mod, jetzt auch nicht die einfachste Form hat, aber man sollte sich nicht zu viel vornehmen.
3 Modellierung
Nachdem nun klar ist, um welches Fahrzeug es geht, kann man richtig anfangen. Hier kann ich natürlich nicht ausführlich auf die einzelnen Schritte beim Modellieren eingehen. Wer noch gar keine Erfahrung hat sollte sich sicher einige Tutorials auf Youtube suchen. Der Kanal “geblendert” hat mir dabei geholfen. Natürlich kann man auch einfach anfangen und schauen, wie weit man kommt.
Beim Modellieren geht es darum ein Gitternetz (auch genannt Mesh) des Fahrzeugs zu erzeugen
Etwas grundsätzliches zu den Modellen. Jedes bewegte Teil benötigt ein eigenes Mesh. Somit braucht man neben dem eigentlichen Fahrzeug noch die animierten Türen (falls erwünscht) , die Achsen, Drehgestelle und das Gestänge von Dampfloks ( Kolben, Kurbel, Pleuelstange). Da sich diese Teile logischerweise relativ zueinander bewegen müssen, muss man sie natürlich auch unabhängig voneinander modellieren und darf sie nicht “verschmelzen”. Ich modelliere alle Bauteile unabhängig voneinander und füge diese erst später in Blender zusammen.
Man kann sich nicht nur Arbeit, sparen, sondern auch viele Polygone, wenn man Details als eigenes Mesh modelliert. So ist bei mir ein Puffer oder die gute alte Reichsbahnlaterne immer ein eigenes Mesh. Gleiches gilt auch für Griffstangen, Dampfleitungen und anderen Kleinkram. Der große Vorteil ist, dass man diese Objekte dann leicht immer wieder verwenden kann. Wer möchte schon bei jeder Lok einen neuen Puffer konstruieren?
Wenn man sich als überlegt hat, welche Meshs man benötigt, müssen diese ja noch erstellt werden.
Beim Modellieren gibt es natürlich unterschiedlichste Vorgehensweisen. So gestalte ich für meinen Teil immer ein Volumenmodell, das ich aus einzelnen einfachen Körpern (Zylinder, Quader, … ) zusammensetze. Im folgenden wird diese Methode daher auch als „Volumenmodellierung" bezeichnet werden. Diese Bauart stammt sicher auch aus meinem Alltag als Ingenieur. An dieser Stelle mal ein kleines Beispiel aus meinem Projekt, der bay. AV.
[Blocked Image: https://ftp.train-fever.net/Bilder/moddingleitfaden/3_1_teilschritte.jpg]
Abbildung 3.1: Teilschritte beim Modellieren
Man kann sehr gut erkennen, dass in jedem Schritt einfache 3D Körper hinzufügt bzw. abgezogen werden. So fängt man mit dem Kessel als einfachen Zylinder an und arbeitet sich danach am Rahmen weiter entlang. Im Kern besteht dieser dann auch nur aus einigen wenigen Quadern, von denen man wieder kleinere Quader raus schneidet. Ein ähnliches Vorgehen ist grundsätzlich auch in Blender möglich. Dort erstellt man erst eine einzelne Fläche und extrudiert diese dann. Schon hat man einen einfachen Quader. Durch das extrudieren einer Fläche in einen bereits bestehenden Körper kann man Schnitte erzeugen, also Material wieder entfernen.
Ein weiteres Beispiel vom TEE zeigt, dass mit dieser Methode auch sehr schnell kompliziertere Formen erstellt werden können. Konkret geht es um die Gestaltung der gewölbten Motorhaube des Triebkopfes – also quasi DEM Erkennungsmerkmal des Fahrzeugs.
[Blocked Image: https://ftp.train-fever.net/Bilder/moddingleitfaden/3_2_motorhaube.jpg]
Abbildung 3.2: Modellierung einer Motorhaube
Ausgangspunkt ist wieder ein Quader. Von diesem wird dann einfach Material weggeschnitten. Da die Motorhaube keine Kreisförmigen Rundungen aufweist, wird hier freihändig ein Spline (steige Kurve, die durch mehrere vorgegebene Punkte führt) gezeichnet, an dessen Kante nachher entlang geschnitten wird. Um dies zu erleichtern ist ein Bild eingeblendet, an dem die Kontur kontrolliert werden kann. Im nächsten Schritt wird das Gleiche nochmal getan, nun allerdings in eine andere Raumrichtung. So führt der Schnitt nun von oben nach unten. Abschließend werden noch die entstandenen Kanten gerundet und schon hat man innerhalb kürzester Zeit eine formschöne Motorhaube. Gut, an dieser Stelle sollte wohl noch ergänzt werden, dass die gezeichneten Splines, auf denen die Schnitte basieren mehrfach geändert wurden, bis das Ergebnis zufriedenstellend war. Somit dauert das modellieren solcher Flächen dann doch etwas länger.
An dieser Stelle soll nochmals erwähnt werden, dass mittels Volumenmodellierung sehr schnell ganze Fahrzeuge entstehen können und in der Regel ein sauberes Modell entsteht. Allerdings gibt es auch Grenzen. Moderne Eisenbahnfahrzeuge besitzen eben immer öfters besonders markante Formen. Daher setzen viele Modder auf die im Folgenden als „Oberflächenmodellierung“ bezeichnete Methode. Dabei werden, wie der Name schon sagt sogenannte Freiformflächen erzeugt. Diese lassen sich in der Regel nicht durch einfache mathematische regeln beschreiben, sondern können beliebige Formen annehmen.
Am Beispiel des Desiro Classic soll das ganze verdeutlicht werden. (Der Versuch das Fahrzeug mittels Volumenmodellierung zu erstellen, ist zuvor gescheitert) Ausgangspunkt sind mehrere Linienzüge. Diese wurden anhand von eingebetteten Zeichnungen erstellt. In Abbildung 3.3 kann man gut das Resultat erkennen. Mehrere frei im Raum liegende Splines erzeugen eine Art Gitterstruktur. Die Zwischenräume werden anschließend mit einzelnen Flächen gefüllt. Zum Abschluss kann noch bestimmt werden, welche Bereiche geglättet werden, und wo Kanten beibehalten werden sollen.
Wie schon bei der Volumenmodellierung ist auch diese Methode in praktisch jedem anderen Programm möglich. So können auch in Blender Linienzüge gezeichnet werden und im Raum beliebig positioniert werden. Die Zwischenräume können dann auf unterschiedliche Art gefüllt werden. Wer sich für diese Vorgehensweise interessiert findet auf Youtube viele Tutorials zur PKW Modellierung.
transportfever.net/wsc/attachment/82094/
Abbildung 3.3: Oberflächenmodellierung
Wie schon oben gezeigt, kann es hilfreich sein, eine Zeichnung vom Original ins Modellierungsprogramm zu landen, um die Proportionen oder die Gestaltung einzelner Formelemente zu überprüfen. Nachfolgend ist dies nochmals gut zu erkennen.
[Blocked Image: https://ftp.train-fever.net/Bilder/moddingleitfaden/3_3_zeichnung.jpg]
Abbildung3.4: Verwendung einer Zeichnung zur Kontrolle
Gut zu sehen ist, dass die Form des Modells noch etwas von der Vorgabe der Zeichnung abweicht. Hier ist also noch etwas Detailarbeit nötig.
Natürlich muss man sich immer fragen, wie viele Details man wirklich modelliert und was man nur über Texturen darstellt. Dabei sollte man immer bedenken aus welcher Entfernung man das Fahrzeug später im Spiel sieht.
Damit verbunden kommt natürlich früher oder später die Frage nach den Polygonen (einzelne, ebene Fläche, meist dreieckig) auf. So wurde beim Trans Europ Express zum Beispiel auf relativ viele Polygone gesetzt, um die Rundungen gut darstellen zu können. Im Nachhinein muss allerdings festgestellt werden, dass weniger mehr gewesen wäre, da viele Polygone auch immer viel Aufwand bedeuten (zum Beispiel beim Mappen – später mehr dazu). Logischerweise fressen Rundungen immer besonders viele Polygone. Am folgendem Bild ist dies gut zu erkennen.
[Blocked Image: https://ftp.train-fever.net/Bilder/moddingleitfaden/3_4_gitternetz.jpg]
Abbildung 3.5: Unterschiedliche Vernetzung.
Hier sieht man einen Ausschnitt der Motorhaube des TEE. Bei der linken Variante wird die Rundung aus relativ wenigen Polygonen zusammengesetzt. Der ganze Triebkopf, ohne Drehgestelle und Achsen besitzt hier rund 10000 Polygone. Bei der mittleren Variante sind es dann schon 25 000 und die linke Version hat ganze 100 000 Polygone. Auch wenn bei der letzten Variante die Rundungen optimal abgebildet werden, so wäre der Leistungshunger unnötig hoch. Schon die mittlere Variante ist mehr als ausreichend. Im Regelfall dürfte die linke Version aber den Vorzug erhalten. Hier soll keine exakte Polygongrenze angegeben werden, da jedes Modell anders ist, aber man darf eben nicht zu Extremen neigen.
Bei meiner Vorgehensweise wird das Polygonnetz erst beim Export des Modells erstellt und auch erst dort die Genauigkeit angegeben. Nutzt man ein anderes Vorgehen, muss man sich über die Polygone evtl. schon früher Gedanken machen
Als weiteres Beispiel nutze ich hier wieder die bay. AV. Für den Kessel dieser Dampflok wurden zum Beispiel 40 Polygone genutzt, um die Mantelfläche zu gestalten. Somit besteht der Umfang des Kessels aus 20 einzelnen Linien – verwendet man weniger wird es hässlich und es entstehen unschöne Formen. Die Lok – ohne Achsen und Tender – hat am Ende unter 5 000 Polygone. Trotz dieser auf den ersten Blick geringen Zahl, wirken alle Renderbilder (siehe unten) trotzdem stimmig.
Auch soll hier nicht verschwiegen werden, dass man durch weitere Optimierungen diese Zahlen noch deutlich senken kann. Ich selbst bin bei Polygonen immer ehr etwas großzügiger.
[Blocked Image: https://ftp.train-fever.net/Bilder/moddingleitfaden/3_5_polygone.jpg]
Abbildung 3.6: Polygonnetz einer Dampflok in Blender
Jeder kann wohl verstehen, dass ein sechseckiger Schornstein nicht so toll aussieht. Auch wenn ein Bauteil mit relativ wenigen Polygonen auf den ersten Blick noch etwas eckig/kantig wirkt, so kann man durch nachträgliches “smothing” noch einiges herausholen.
[Blocked Image: https://ftp.train-fever.net/Bilder/moddingleitfaden/3_6_smoothing.jpg]
Abbildung 3.7: Nutzung von „smoothing-Optionen“
Hier sieht man, dass sowohl der Kessel als auch der Zylinder nach dem Import in Blender noch sehr eckig wirken. Dies liegt aber nicht daran, dass zu wenig Polygone genutzt wurden. Man müsste deren Anzahl schon massiv erhöhen, um solche Kanten völlig zu vermeiden. Viel leichter ist es daher einen passenden Filter zu nutzen. In der rechten Seite des Bildes kann man das Ergebnis betrachten. Die Kanten sind verschwunden und es ist ein stimmiges Modell entstanden. Zur genaueren Anwendung dieser Glättungsmöglichkeiten werde ich später noch mehr schreiben. Hier ging es mir erstmal um das Aufzeigen der grundsätzlichen Problematik.
Aber zurück zur Frage nach den Polygone. Es gibt natürlich kein Limit nach oben – nur die irgendwann einbrechende Performance. Es ist sicher gut sich regelmäßig zu fragen, wie sinnvoll manche Details sind. So ist eine Griffstange oder ein Geländer im Regelfall rund. Aber vielleicht reicht ja im Modell auch ein viereckiger Querschnitt. Den Unterschied wird man im Spiel wohl höchstens erahnen können. Den optimalen Kompromiss muss wohl jeder für sich selbst finden.
Abschließend noch ein Beispiel eines Schlauchs (wieder vom TEE)
[Blocked Image: https://ftp.train-fever.net/Bilder/moddingleitfaden/3_7_geometrie.jpg]
Abbildung 3.8: Vereinfachte Geometrie
Damit dieser Schlauch nicht zu viele Polygone bekommt ist er von Beginn an eckig modelliert. Es sind hier also noch keine Polygone erzeugt worden. Aber beim späteren Vernetzen werden deutlich weniger genutzt werden. Vor allem bei kleinen Details sind solche Vereinfachungen eine sinnvolle Möglichkeit ein optisch ansprechendes Modell mit einer guten Performance zu kombinieren.
Für alle, die direkt in Blender modellieren wollen ist folgendes Thema sicherlich von Interesse: Dokumentierter Bau eines Busses.
Dort wird Schritt für Schritt gezeigt, wie man in Blender modelliert und auch auf viele Besonderheiten eingegangen.
4 Vorbereiten in Blender
Hat man von allen Einzelteilen ein Mesh (Gittermodell) geht es weiter in Blender. Für den Export bzw. Import in Blender nutze ich das Dateiformat .stl. Wenn man direkt in Blender modelliert, muss man sich darüber natürlich keine Gedanken machen
Danach geht es an die Positionierung bzw. Skalierung des Modells. Hierzu importiere ich (Blenderaddon von Merk) immer ein Fahrzeug aus TrainFever und eine von mir erstellte Achse und skaliere diese so lange bis die Spurweite übereinstimmt. Auf diese Art habe ich für die Umrechnung von Dateien, die mit SolidWorks erstellt wurden und in Blender importiert werden, den Skalierungsfaktor von 0,001 ermittelt. Dieser erklärt sich durch die unterschiedlichen Einheiten. Während meine CAD Software in Millimeter rechnet, verwendet Blender bzw. TrainFever Meter . Bei Verwendung von anderen Programmen kann dieser natürlich ganz anders ausfallen. Anschließend kann man die importierten TrainFever Fahrzeuge/Achsen wieder löschen.
Nun muss man die eigenen Meshs ausrichten. Die x-Achse zeigt immer in Fahrtrichtung. Die y-Achse gibt die Breite an und die z-Achse die Höhe. Somit stellt die xy-Ebene die Oberkante des Gleises dar.
Neben der Position der einzelnen Teile zueinander spielen auch deren Ursprünge eine große Rolle.
Bei Achsen ist darauf zu achten, dass deren y-Achse exakt der gewünschten Drehachse entspricht – sonst eiern eure Räder später im Spiel. Bei den Drehgestellen ist dann die z-Achse im Ursprung entscheidend. Diese gibt nämlich den Verbindungspunkt zwischen Drehgestell und Lokkasten an. Weitere Informationen zu den Drehgestellen finden sich auch hier im Lexikon.
Auch beim Gestänge von Dampfloks ist auf diese Dinge zu achten. Wie im Lexikonartikel von „Das Matze“ zu lesen ist, ist es sinnvoll, wenn alle beweglichen Elemente den gleichen Ursprung haben. Das vereinfacht das spätere „auslesen“ der benötigten Koordinaten.
Hat man alle Meshs entsprechend ausgerichtet und positioniert, empfiehlt es sich die Skalierung und Rotation auf 0 zu setzen (Object->Apply->Rotation). Dadurch vereinfacht man die spätere Integration in TrainFever und garantiert, dass sich die Achsen wirklich um die richtige Raumachse drehen.
Neben der Ausrichtung sollte man von Beginn an auch auf die Hierarchie im Featuremanager achten. Auch hier bietet es sich an, sich erstmal ein Originalfahrzeug anzuschauen. Merk geht in einem Lexikonartikel zu seinem Importer/Exporter etwas genauer auf das Thema ein. Hier nur die kurze Zusammenfassung, wieder am Beispiel des TEE.
Model
--Lod
----Mesh der eigentlichen Lok
----Group (Drehgestell1)
------Mesh (Drehgestell)
------Mesh (erste Achse)
------Mesh (zweite Achse)
--Engine (bei der aktuellen Version des Plugins nicht mehr nötig, dort ist dieser Eintrag bereits im "Model" enthalten)
[Blocked Image: https://ftp.train-fever.net/Bilder/moddingleitfaden/4_1_modellstruktur.jpg]
Abbildung 4.1: Aufbau bzw. Hierarchie eines Modells
Diese Grundstruktur ist nötig, damit später beim Export alles funktioniert.
Die benötigten Groups und das eigentliche Modell können, wie bereits erwähnt mit dem Importer/Exporter von Merk erzeugt werden. (Shortcut shift+A -> „create TrainFever Object“)
Die Hierarchie erzeugt man durch das Hinzufügen von Eltern/Kind Beziehungen (strg+P).
Groups sind immer dann erforderlich, wenn man ein Fahrzeug mit Drehgestellen erstellt oder dieses aus mehreren Teilen (Lok und Tender) besteht. Auch hier sollte darauf geachtet werden, dass die Ursprünge an sinnvollen Orten liegen. Zum Beispiel in der Mitte des Drehgestells oder der Mitte des Tenders.
LOD steht für level of detail. In TrainFever ist es möglich für unterschiedliche Entfernungen, verschiedene Modelle zu nutzen. Dadurch soll Leistung gespart werden, da Details nur aus entsprechender Nähe angezeigt werden. Wenn man will – und Lust hat – kann man dies auch bei Mods machen. Ihr könnt beliebig viel LODs erstellen und später festlegen, ab welcher Entfernung, welches Modell genutzt wird. Der Nachteil liegt auf der Hand: Ihr habt deutlich mehr Arbeit, da ihr euer Modell mehrfach erstellen müsst. Natürlich könnt ihr darauf auch verzichten. In dem Fall sollte man aber darauf achten, das Modell nicht zu detailliert zu gestalten. Besitzer von schwächeren PCs werden es euch sicher danken.
Hier erweist es sich dann wieder als sinnvoll, wenn kleinere Objekte eigene Meshs sind. So können diese einfach ausgeblendet werden. Hierbei ist es möglich direkt in Blender die einzelnen Lods zu erstellen, oder das ganze erst später bei der Integration in TrainFever umzusetzen.
5 UV Mapping
Damit ist die Arbeit am 3D Modell praktisch abgeschlossen. Es fehlt „nur noch“ eine passende Textur. Schließlich soll das Fahrzeug ja nicht weiß bleiben. Grundlage hierfür ist die sogenannte UV-Map. Diese definiert welcher Bereich auf eurem Modell mit welchem Texturausschnitt verziert wird.
Um eine solche UV-Map zu erstellen, muss die Oberfläche in die Ebene abgewickelt werden. Es ist wohl offensichtlich, dass dies bei einfachen, kastenförmigen Körpern relativ einfach ist, mit zunehmender Komplexität des Modells jedoch einiges an Arbeit bedeutet. Für dieses Abwickeln gibt es in Blender eine automatische Variante, welche aber wohl nur bei ganz einfachen Objekten zu brauchbaren Ergebnissen führt. Daher muss man selbst festlegen an welchen Stellen die Haut des Modells aufgeschnitten wird. Hierzu wählt man die entsprechenden Kanten bzw. Linien aus und wählt danach die Option „Mark Seam“. Zu beachten ist dabei natürlich, dass die entstehenden, zusammenhängenden Flächen immer in die Ebene abwickelbar sein sollten. Das ganze lässt sich gut beim TEE sehen, hier sind jeweils die Seiten, der Boden, sowie die Motorhaube eigene Flächen.
[Blocked Image: https://ftp.train-fever.net/Bilder/moddingleitfaden/5_1_schnittkanten.jpg]
Abbildung 5.1: Setzen von Schnitten
Die gesetzten Schnitte werden durch die roten Linien dargestellt. Details wie die Lüftungsschlitze sind nochmals einzeln frei geschnitten. Auch für die Motorhaube wurden nochmal zusätzliche Schnitte gesetzt. Es bedarf sicher etwas Übung, bis man den optimalen Verlauf der Schnitte „sieht“ und somit ein gutes Ergebnis erzielt. Das Vorgehen soll hier an einigen weiteren Beispielen erläutert werden.
[Blocked Image: https://ftp.train-fever.net/Bilder/moddingleitfaden/5_2_schnittkanten_lampe.jpg]
Abbildung 5.2: Schnittsetzung an einer Stirnlampe
Diesmal geht es um die Stirnlampe des TEE. Es ist wohl offensichtlich, dass die Motorhaube inklusive des Scheinwerfers nicht ohne größere Verzerrungen in die Ebene abwickelbar ist. Daher wird als erstes die Zylinderfläche vom Rest getrennt. Anschließend kann die Mantelfläche in Längsrichtung aufgetrennt werden. Dadurch ist ein Fläche entstanden, die problemlos in eine Ebene passt, ohne die Oberfläche zu verzerren. Auf die gleiche Weise kann man auch die innen liegende, deutlich kleinere Mantelfläche aufschneiden. Dies ist aber hier nicht getan. Die logische Konsequenz ist, dass diese Fläche nicht verzerrungsfrei abgewickelt wird. Da die entsprechende Oberfläche aber einfarbig werden soll, ist dies weniger tragisch. Am Tankdeckel des TEE können solche Schnittstrategien nochmals nachvollzogen werden:
[Blocked Image: https://ftp.train-fever.net/Bilder/moddingleitfaden/5_3_schnittkanten_tank.jpg]
Abbildung 5.3: Schnittsetzung an einem Tankdeckel
Auch hier ist mit einem ersten quadratischen Schnitt der Ausschnitt vom Rest des Mesh getrennt. Der Mantel des Tankdeckel ist oben durch einen kreisförmigen Schnitt losgelöst. Dadurch wird dieser bei der Abwickelung wieder verzerrt (genau wie der innere Teil, der oben besprochenen Stirnlampe), während die kreisförmige Deckfläche separat abgewickelt wird. Die zwei zusätzlichen Schnitte an den Kanten sorgen dafür, dass die verbleibende Fläche auch in eine Ebene gedrückt werden kann.
Auch hier erkennt man wieder, dass man durchaus Kompromisse eingehen kann. So sollte man sich schon vorher darüber Gedanken machen, welche Oberflächen einfarbig bleiben (in diesem Fall sind Verzerrungen völlig egal) und welche eventuell eine aufwändige Gestaltung erhalten. Bei meinem Tankdeckel habe ich übrigens deutlich später die Entscheidung getroffen sämtliche Flächen einfarbig zu lassen. Somit wäre nur der quadratische Freischnitt wirklich nötig gewesen. Aber man weiß ja nie, was mit einem Update oder Repaint noch so alles geändert wird. Vielleicht ist man dann später mal froh, die entsprechenden Flächen ordentlich gemapt zu haben oder ärgert sich darüber, dass man ausgerechnet bei der Mantelfläche Zeit gespart hat.
Alternativ kann man auch alle Schnitte automatisch setzen lassen, was einem natürlich im ersten Moment viel Zeit spart. Dazu nutzt man den „Edge Split Modifier“: Dieser wird auf ein Objekt bzw. Mesh angewendet. Standardmäßig trennt er Kanten auf, an denen die Flächen einen Winkel von über 30° bilden. Dies kann man natürlich in den Optionen noch einstellen. Zu beachten ist hierbei, dass ein solcher Filter nicht rückgängig gemacht werden kann. Also vorher unbedingt abspeichern. Der größte Nachteil bei diesem Vorgehen ist sicherlich, dass durch die automatische Auftrennung viele kleine, einzelne Flächen entstehen. Wenn man nochmals den schon oben vorgestellten Tankdeckel her nimmt, so würden bei dieser Variante zusätzliche Schnitte entstehen. Die seitlichen Wände der Aussparung wären dann einzelne Teile und würden nicht mehr am zentralen Mittelteil hängen.
Sind alle Schnitte gesetzt - unabhängig von der gewählten Methode - ,kann man das ganze Modell auswählen und „unwrapen“ (Shortcut u). Blendet man nun die UV-Map ein, so sieht man das Resultat. Alle Flächen wurden, mehr oder weniger willkürlich in einem Quadrat angeordnet. Dieses stellt die spätere Textur da.
Hier muss man sich auch schon Gedanken über deren Format machen. Möchte man diese quadratisch lassen, kann man direkt weiter arbeiten. Wenn aber ein Seitenverhältniss von 1:2 gewünscht ist (zum Beispiel bei relativ langen Wagen) muss schon jetzt ein Bild mit der gewünschten Auflösung importiert bzw. geöffnet werden.
Es ist sicherlich sinnvoll die Flächen noch ordentlich zu ordnen, damit man später noch weiß, was wozu gehört (Rotieren: Shortcut r; Skalieren: Shortcut s; Bewegen: Shortcut g). Hier fällt nochmals der Unterschied der oben genannten Methoden ins Gewicht. Hat man die Schnitte automatisch gesetzt, entstehen in der Regel viele, sehr ähnliche kleine Rechtecke. Diese exakt zuordnen zu können ist dann eine sehr zeitintensive Angelegenheit. Somit haben beide Möglichkeiten ihre Vor- und Nachteile. Auch sollte man möglichst wenig Platz auf der UV-Map verschwenden. Denn jeder Pixel der Textur, der nicht durch die UV-Map genutzt wird, kostet Rechenleistung ohne einen sichtbaren Nutzen zu haben. Dies ist natürlich ein gewisser Gegensatz zu der gewünschte übersichtlichen Anordnung der einzelnen Flächen. Auch hier gilt wieder das einfache Motto: Jeder Modder muss wohl einen eigenen Kompromiss finden, den er vertreten kann.
Im folgendem sieht man das Ergebnis, wieder am Beispiel der Stirnlampe und des Tankdeckels.
[Blocked Image: https://ftp.train-fever.net/Bilder/moddingleitfaden/5_4_abwicklung1.jpg]
Abbildung 5.4: Abgewickelte Stirnlampe (links) und Tankdeckel (rechts)
Eine weitere Besonderheit kann man hier bei der Skalierung sehen. Da die innere Kreisfläche der Lampe später eine Scheinwerfertextur erhalten soll und diese etwas detaillierter ist, wurde die Größe entsprechend angepasst. So empfiehlt es sich immer, Flächen auf denen später hochauflösende Texturen zu sehen sein sollen, deutlich größer zu gestalten. Auf der anderen Seite, können einfarbige Flächen theoretisch unendlich klein sein. Bei dem mittleren Ring handelt es sich um die innere Mantelfläche, welche später einfarbig silbern wird.
Sinnvoll ist es sicherlich die wichtigsten Elemente immer in einem gemeinsamen Schritt zu skalieren, da sonst unterschiedliche Maßstäbe entstehen. Beim TEE gibt es zum Beispiel auf allen Seitenflächen Unmengen an Nieten. Damit man auf der Textur immer die gleiche Nietengröße nutzen kann, müssen natürlich die entsprechenden Teile der UV-Map einheitlich skaliert werden.
Als abschließendes Beispiel noch die Seitenfläche des TEE. Gut erkennbar sind die Öffnungen für den Tankdeckel und die Lüftungsschlitze, welche separat abgewickelt wurden.
[Blocked Image: https://ftp.train-fever.net/Bilder/moddingleitfaden/5_5_abwicklung2.jpg]
Abbildung 5.5: Abgewickelte Seitenfläche des TEE.
Noch einige Worte zu den schon so oft genannten Verzerrungen. Grundsätzlich sollten diese vermieden werden, da sie das Erstellen passender Texturen praktisch unmöglich machen. Einzige Ausnahme sind dabei absolut einfarbig Flächen. Um alle Flächen wirklich verzerrungsfrei zu bekommen, muss man manchmal etwas mit der Schnittführung spielen und mehrere Varianten probieren. Hierzu kann man auch auf der UV-Map den Großteil aller Punkte fixieren (Anpinnen: shortcut p)und bei den verbliebenen Elementen unterschiedlich gesetzte Schnitte ausprobieren. So kam es bei mir schon häufiger vor, dass Blender Flächen die eigentlich eben waren nicht korrekt abgewickelt hat. Als letzte Möglichkeit, um solche Probleme zu lösen, besteht die Möglichkeit einzelne Punkte auf der UV Map zu verschieben. Natürlich sollte dies immer die letzte Option sein, da dies ein ganz schönes Gefummel werden kann.
Die Verzerrungen der einzelnen Polygone kann man sich auch mittels einer Option im Seitenmenü (Shortcut: n → Hacken im Feld „Stretch“ setzen) farblich anzeigen lassen. Es soll nicht unerwähnt bleiben, dass manche Flächen sich nicht völlig ohne Verzerrungen abwickeln lassen. Hierzu zählen naturgemäß alle kugelförmigen bzw. kugelähnliche Objekte. Ein perfektes Beispiel hierfür ist die Motorhaube des TEE. In solchen Fällen, sollte man darauf achten, auf diesen Flächen keine Texte oder Logos anzubringen. Ist die Textur nur farbig, bzw. leicht strukturiert, stellen solche kleineren Verzerrungen kein Problem dar. Um auf die Motorhaube des TEE zurück zu kommen: Das charakteristische Logo auf dergekrümmten Motorhaube ist modeliert – somit gehe ich hier allen möglichen Texturproblemen von Anfang an aus den Weg. Weiterhin wurde die Motorhaube in mehrere, etwas kleinere Flächen zerlegt. Dadurch konnten Verzerrungen noch weiter minimiert werden.
Ist die UV-Map für alle Objekte fertig, kann diese exportiert werden (UV → Export UV Layout). Damit sind die Vorarbeiten für die Textur abgeschlossen.
Zum Abschluss dieses Kapitels noch ein zusammenfassendes Bild:
[Blocked Image: https://ftp.train-fever.net/Bilder/moddingleitfaden/5_6_zusammenfassung.jpg]
Abbildung 5.6: Arbeitsschritte in Blender.
Hier kann man nochmal alle nötigen Arbeitsschritte auf einem Bild sehen. Links das importierte 3D Modell, welches bereits richtig im Raum positioniert und skaliert wurde. Am rechten Bildschirmrand sieht man die passende Fahrzeughierarchie, inklusive der Materialzuordnung, auf welche ich später nochmals etwas genauer eingehen werde. Auch wurden bereits die nötigen Schnitte für die UV-Map gesetzt, was aufgrund der Farbgebung wohl nicht wirklich zu erkennen ist. Die eigentliche UV-Map – die sicherlich nicht optimal ist - sieht man dann in der rechten Bildhälfte. Hier wurde bereits eine Textur importiert, womit auch der nächste Schritt bereits angedeutet ist: Das Erstellen einer Textur. Dies wird dann im nächsten Kapitel erläutert, bevor es nochmals zurück zu Blender geht.
Abschließend sei noch eine Besonderheit angesprochen: Was die Polygonanzahl angeht kann man alle oben gezeigten Bilder wohl in die Kategorie „Vorbild Typ B- So wie man es nicht machen sollte“ stecken. Hier gibt es noch einen deutlichen Optimierungsbedarf. Wie bereits im Kapitel Modellierung angesprochen kann man sich auch viel Arbeit ersparen, wenn Objekte wie beispielsweise die Griffstange nicht mit dem Grundkörper verschmolzen sind. Das spart Polygone und erleichtert das Erstellen der UV-Map.
Als nächstes geht es an die Materialdefinitionen. Hier kann man zum Beispiel wieder ein bestehendes Modell nehmen, dessen Material raus suchen und den eigenen Meshs zuweisen. Oder man erstellt schnell ein eigenes Material. Am wichtigsten hier ist sicherlich die Namensgebung. Alles andere kann später noch extra angegeben werden. Jedem Material wird später eine eigene Textur zugeordnet. Zu Beginn ist es sicherlich sinnvoll allen Objekten das gleiche Material und damit auch die gleiche Textur zu geben. Natürlich kann man auch mehrere Texturen verwenden, aber darauf werde ich hier nicht näher eingehen. Für fortgeschrittene Modder gibt es hier aber viele Möglichkeiten.
Als Ausnahme möchte ich hier noch die bay. AV erwähnen. Bei dieser haben alle Meshs die zur eigentlichen Lok gehören ein Material und der Tender und seine Räder ein weiteres Material inklusive eigener Textur und eigener UV-Map.
6 Texturerstellung
Jetzt geht es zur Bildbearbeitung. Ich nutze hier das kostenlose aber trotzdem sehr umfangreiche Programm Gimp. Natürlich kann man die Textur aber auch mit jedem anderen Bildbearbeitungsprogramm erstellen. (Einige schwören zum Beispiel auf Photoshop)
Die erste spannende Frage ist dabei natürlich die Texturgröße. TrainFever verwendet hauptsächlich Bilder der Größe 1024x1024. Je nachdem wie detailliert man ein Modell gestalten möchte kann dies aber auch zu wenig sein. Vor allem bei längeren Fahrzeugen sieht man auch oft Texturen mit den Abmessungen 2048x2048. Dieses Format habe ich zum Beispiel auch für den TEE genutzt. Mehr Pixel sind wohl in den meisten Fällen nicht nötig bzw. kosten auch zu viel Leistung. Solltet ihr euch nicht sicher sein, könnt ihr natürlich auch erstmal eine Textur mit 2048x2048 erstellen und diese später immer noch runter skalieren. Eine Textur nachträglich zu vergrößern ist hingegen nur wenig sinnvoll.
Nachdem man nun ein neues Bild mit den gewünschten Abmessungen erstellt hat, sollte man als Erstes die vorher aus Blender exportierte UV-Map einfügen. Dies macht man am Besten als eigene Ebene, damit man sie später gut ausblenden kann.
Nun muss man im Prinzip nur die einzelnen Flächen füllen. Als erstes ist es wohl sinnvoll die Grundfarben des Zuges zu gestalten. Am Beispiel des TEE soll dies verdeutlicht werden.
Hier wurde zu Beginn die komplette Textur rot eingefärbt. Hier stellt sich natürlich die Frage nach dem genauen Farbton – es gibt schließlich unzählige Rottöne. Man kann natürlich nach den genormten RAL Farben suchen. Für die meisten aktuellen Fahrzeuge findet man da sicher Angaben. Anschließend kann man diese RAL Farben direkt im Bildbearbeitungsprogramm auswählen (evtl. braucht man hierfür ein Plugin) oder man sucht sich ein entsprechendes Farbmuster. Eine Alternative hierzu ist es, sich die Farben direkt aus entsprechenden Originalfotos zu übernehmen. Dies brachte beim TEE ein sehr stimmiges Ergebnis. Damit wären wir auch wieder bei unserem Beispiel. Nach der Einfärbung der Textur habe ich dann die anders farbigen Streifen hinzugefügt. Das Fahrgestell wurde entsprechend dunkel gehalten, das Dach bekam eine bläuliche Farbgebung. Damit steht bereits das wichtigste. Die entstanden Textur lässt sich natürlich am Besten beurteilen, wenn man sie direkt auf dem Modell
sieht, oder noch besser direkt im Spiel. Im Bildbearbeitungsprogramm fehlt ja schließlich der räumliche Zusammenhang. Daher an dieser Stelle ein kurzer Exkurs, wie man die Textur in Blender einfügt.
Die Textur sollte im unkomprimierten TGA Format exportiert werden. Anschließend kann in Blender jedem Material bzw. Mesh eine Textur hinzugefügt werden. Hierzu einfach im Reiter „Material“ bzw. „Texture“ die Option „Image Texture“ verwenden und den Pfad zu der gewünschten TGA Datei angeben. Um den späteren Export zu erleichtern sollte eine Textur immer den Namen „map_color_reflect“ erhalten. Danach kann man sich ein erstes, farbiges Renderbild ausgeben lassen und seine Arbeit begutachten. Meistens fallen einem auf den ersten Blick Unstimmigkeiten auf – so geht es jedenfalls mir. Im weiteren Verlauf wechselt man dann immer wieder zwischen Bildbearbeitung und Blender hin und her und verfeinert dabei Schrittweise die Textur. (Diese muss in Blender immer wieder neu eingelesen werden).
Also zurück zur Texturerstellung und dem TEE. Zur Gestaltung der grundsätzlichen Farbverläufe empfiehlt sich die Nutzung von Ebenenmasken. Konkret bedeutet das, dass zu Beginn mehrere Ebenen erstellt werden, welche alle vollflächig mit einer Farbe gefüllt werden. Mit Farbe ist hier auch eine eingefärbte, leicht strukturierte Fläche gemeint.
Für den TEE wird also eine rote, eine beige, eine blaugraue, eine silberne und eine schwarze Farbebene gebraucht. Anschließend erhalten diese jeweils eine Ebenenmaske. Hierbei handelt es sich um ein Schwarzweißbild, welches die Deckkraft angibt. So wird die Maske der silbernen Ebene in unserem Beispiel fast überall schwarz werden (volle Transparenz) und nur an den Stellen der entsprechenden Zierstreifen weiß.In Abbildung 6.1 kann erkennt man nochmals den Aufbau aus Ebenen und Masken.
transportfever.net/wsc/attachment/82098/
Abbildung 6.1: Ebenenmaske
Links sieht man immer die eigentliche Farbebene und rechts die dazugehörige Maske. Der nutzen dieser Methode ist, dass Farbverläufe schnell modifiziert werden können. Vor allem bei strukturierten Flächen ist dies ein großer Vorteil.
Womit wir schon beim Thema Struktur wären. Eine einfarbige Fläche wirkt ja immer etwa langweilig. Vor allem bei älteren Fahrzeugen, ist ja die Oberfläche nicht ganz glatt und zum Teil ungleichmäßig. Aber auch bei modernen Zügen finden sich häufig Kratzer oder Ähnliches wieder. In diesen Fällen sollten für die Grundfarben auch entsprechende Strukturen genutzt werden. Auch hier kann das Internet oder das eigene Fotoarchiv große Dienste leisten. Hat man eine passende Struktur gefunden, so ist diese meistens nicht groß genug, um eine ganze Textur zu bedecken. Um unschöne Übergänge zu vermeiden, kann die Ausgangsstruktur gespiegelt werden oder man verwendet direkt „gekachelte“ Vorlagen – diese können beliebig oft aneinander gesetzt werden . Abbildung 6.2 zeigt einige Beispiele. Links oben sieht man die gesamte strukturierte Fläche. Die Musterbildung ist typisch für gekachelte Texturen. Links unten befindet sich die gleiche strukturierte Fläche, allerdings in einer Nahaufnahme und bereits passend eingefärbt. Auf der rechten Seite ein weitere Möglichkeit einer strukturierten Oberfläche.
transportfever.net/wsc/attachment/82099/
Abbildung 6.2 Beispiele für strukturierte Flächen
Es ist deutlich zu erkennen, dass die gesamte Textur links oben jeweils aus vielen immer wieder gespiegelten Elementen zusammengesetzt sind. Was bei Betrachtung der gesamten Fläche störend wirkt, fällt beim fertigen Modell garnicht auf, da immer nur ein Ausschnitt genutzt wird und ja noch eine Vielzahl von weiteren Details auf die Textur kommen.
Somit sind wir auch schon beim nächsten Thema, der Detaillierung. An dieser Stelle möchte ich nochmals kurz auf die Ebenen verweisen. Man nutzt – ähnlich wie für die Grundfarben - für eigentlich alle Details am Besten extra Ebenen. Dadurch werden auf der untersten Ebenen nur die bereits erstellten einfarbigen, strukturierten Flächen und Streifen enthalten sein. Somit sind Änderungen relativ einfach möglich. Vor allem wenn man den Zug später im Spiel sieht und ihn mit andern Fahrzeugen vergleicht (bzw. Bilder hier im Forum veröffentlicht) merkt man oft, dass mache Farbtöne irgendwie doch zu dunkel oder hell sind. Dann ist es sehr praktisch wenn man dies mit wenigen Klicks anpassen kann. Man sollte also alle folgenden Details auf anderen Ebenen gestalten bzw. auslagern.
Beim konkreten ausgestalten der Textur gibt es natürlich unzählige Möglichkeiten. Anhand einiger Beispiele, möchte ich hier einen groben Überblick geben, wie man vorgehen kann. Die „Profis“ kennen natürlich noch eine Vielzahl an zusätzlichen Tricks.
Als erstes schauen wir uns mal die Türen und Fenster des TEE an.
[Blocked Image: https://ftp.train-fever.net/Bilder/moddingleitfaden/6_1_tuer.jpg]
Abbildung 6.3: Tür des TEE
Um diese an den richtigen Stellen zu platzieren habe ich eine Zeichnung in die Textur importiert, welche eine eigene Ebene ist und später gelöscht bzw. ausgeblendet werden kann. Als Erstes werden mit einem schwarzen Pinsel die Umrisse der Tür nach gefahren, anschließend die des Fensters. Die Fensterfläche wird entsprechend mit einem Blauton gefüllt (wieder eine eigene Farbebene mit entsprechender Ebenenmaske). Bei den Glasflächen gibt es eine weitere Besonderheit, da diese ja später spiegeln sollen. Dies wird in TrainFever über den Alphakanal gesteuert. Je stärker die Transparenz, desto stärker fallen später die Spiegelungen aus. Für die Fenster wird in der Regel eine 100% Transparenz genutzt. Um dabei nicht mit den ganzen Ebenenmasken durcheinander zu kommen, kann man dies auch erst an der am Ende bereits fertig exportierten Textur anpassen.
Ein weiteres Detail ist der Türgriff. Auch dieser wurde mit wenigen Klicks erstellt. Zuerst wurde eine rechteckige Fläche mit einem Grauton gefüllt. Dabei wurde die Deckkraft aber auf rund 50% gesetzt, so dass der Farbverlauf des Hintergrundes noch sichtbar ist. Es entsteht der Eindruck, als sei die Fläche einfach nur etwas dunkler. Mit zwei silbernen Strichen wurde dann der eigentlich Türgriff gezeichnet. Anfangs war der Türgriff eine eigene Ebene, um ihn leicht Verschieben zu können,später wurde er aus Gründen der Übersichtlichkeit und der vereinfachten Handhabung mit der Türebene vereint. Die Türebene ist, außer beim Türgriff, den schwarzen Begrenzungslinien und dem Fenster vollständig transparent, damit man den Hintergrund hindurch sieht und dessen Farben leicht änderbar bleiben.
Auf den ersten Blick mag dieser Türgriff nicht besonders schön auszusehen. Aber man sollte hier immer bedenken aus welcher Entfernung man das Fahrzeug später sieht. Auch hier muss jeder für sich entscheiden wie detailliert er sein Modell ausgestaltet.
Die Fenster wurden grundsätzlich ähnlich gestaltet. Für einen ganzen Wagen benötigt man natürlich viele Fenster, die meistens gleich aussehen. Wenn man dann noch mehrere ähnliche Wagen gestaltet – so wie beim TEE – wäre es natürlich umständlich alle Fenster einzeln zu zeichnen. Es liegt da fast schon auf der Hand, ein Fenster einzeln zu zeichnen und dieses entsprechend oft zu kopieren. Wenn man vorher noch eine entsprechende Hilfslinie einblendet/generiert kann man die einzelnen Fenster an dieser ausrichten und somit dafür sorgen, dass nachher alle auf der gleichen Höhe liegen.
Eine andere Möglichkeit Texturdetails zu erzeugen ist die Verwendung von Fotos. Gut sehen kann man dies anhand einer Lüfteröffnung des TEE.
[Blocked Image: https://ftp.train-fever.net/Bilder/moddingleitfaden/6_2_luefter.jpg]
Abbildung 6.4: Lüfteröffnung
Grundlage ist natürlich ein entsprechend gut aufgelöstes Foto des Originals. Hier schneidet man dann den entsprechenden Ausschnitt heraus und korrigiert die Perspektive (Es sei denn das entsprechende Bild ist schon exakt von der Seite angefertigt). Danach wird der Ausschnitt als neue Ebene in die Textur integriert und entsprechend skaliert. Im Fall des Lüftergitters kann man sich natürlich gut vorstellen, dass die Farbgebung noch nicht mit dem Hintergrund übereinstimmt. Eine einfache Methode dies zu korrigieren ist das Modifizieren der Helligkeit bzw. des Kontrastes. Mit diesem Vorgehen kann man sehr schnell Farbtöne anpassen, wenn die Abweichung nicht zu groß ist.
Auch die unzähligen Nieten des TEE, die man auf dem obigen Bild bereits sieht, sind ähnlich gestaltet. Ein Ausschnitt aus einem Foto genommen, zugeschnitten, perspektivisch entzerrt, als Ebene importiert, passend skaliert und an die gewünschte Stelle geschoben. Diese Nietenreihe wurde dann einfach immer und immer wieder kopiert und an die passenden Stellen verschoben.
Eine Besonderheit stellt noch die Motorhaube dar. Auf dieser befinden sich auch Nietenreihen. Da die Haube aber gewölbt ist, sind diese Reihen nicht gerade. Bevor hier die eigentlichen Nieten eingefügt wurden, wurde eine Linie gezeichnet. Mittels Kontrolle in Blender wurden diese Linien so lange modifiziert, bis sie den Verlauf der Nähte entsprachen. Nun wurden kurze Nietenreihen als Ebene importiert und durch Verschieben und Rotieren direkt über der gezeichneten Linie platziert.
Nachfolgend kann man das Ergebnis auf der Textur sehen.
[Blocked Image: https://ftp.train-fever.net/Bilder/moddingleitfaden/6_3_nieten.jpg]
Abbildung 6.5: Gestalten von Nietenreihen auf einer gekrümmten Fläche
Ob man ein Modell überwiegend aus gemalten Texturschnipseln aufbaut oder Fotos verwendet ist immer Geschmacks bzw. Glaubenssache. Auch soll hier auf die Möglichkeit hingewiesen werden komplette Seitenflächen von Loks durch ein einziges Foto zu texturieren. Natürlich geht das nur, wenn entsprechendes Bildmaterial zur Verfügung steht – spätestens bei älteren Dampfloks, wird man hier seine Probleme bekommen.
Eine weitere Möglichkeit ist die Verwendung von fertigen Texturen für einzelne Elemente (zum Beispiel Holzbretter, Kohle, ...). Hierfür gibt es in den weiten des Internets unterschiedlichste Anbieter. Mal werden die Texturen kostenlos zur freien Verwendung zur Verfügung gestellt, mal wird man zur Kasse gebeten. Natürlich hilft hier auch ein eigenes Bildarchiv weiter.
Abschließend soll hier noch der Trick mit dem Dreck erwähnt werden. Oft hat man als Modder das Problem, dass die fertige Textur zu sauber und langweilig aussieht. Vor allem wenn es sich im Wesentliche um eine einfarbige Fläche handelt. Als erstes kann man hier versuchen, eine Struktur zu erzeugen. Problematisch dabei ist aber, dass es bei moderneren Fahrzeugen ja oft, tatsächlich glatte einfarbige Flächen gibt. Hier hilft es immer etwas Dreck ins Spiel zu bringen. Am Besten
probiert man einige verschieden Pinsel aus und experimentiert mit verschiedenen Deckkräften. So kann man zum Beispiel erst in dunkelbraun Striche vertikale Striche auf der Textur anbringen und diese anschließend etwas Verwischen. Das ganze liefert dann schöne „Drecknasen“.
Verdeutlichen möchte ich dies mal wieder am TEE: Hier habe ich sehr lange am Dach des Triebkopfes gesessen.
[Blocked Image: https://ftp.train-fever.net/Bilder/moddingleitfaden/6_4_dach.jpg]
Abbildung 6.6: Dach des TEE
Und obwohl ich vieles Ausprobiert habe, war ich mit keiner Lösung glücklich. Egal, ob es Nietenreihen, zusätzliche Nähte oder einfach eine strukturierte Oberfläche war, alles wirkte künstlich. Die Lösung war dann das Hinzufügen von Ruß bzw. Dreck. Innerhalb kürzester Zeit entstand so ein ansehnliches Dach. Wie viel Dreck man hinzufügt ist natürlich immer Geschmackssache, nicht jeder möchte heruntergekommene Modelle auf seiner Strecke haben – aber ein bisschen kann eigentlich nie schaden. Auch wenn das ganze sehr dezent ausgeführt ist und der Betrachter es auf den ersten Blick garnicht bewusst bemerkt, so ist der Effekt meistens massiv. Und Dreck gibt es bei der Bahn genug. Neben dem Ruß bei Dieselloks kann man auch an aufspritzenden Dreck am Fahrwerk, Flugrost. Kratzer, rostende Nähte usw. denken.
Eine weitere Möglichkeit, eure Textur deutlich aufzuwerten ist die Nutzung von Ambient Occlusion. Im Kern geht es darum, dass Schatten, welche an Objektkanten entstehen bereits beim modden berechnet werden und in die Textur integriert werden. Hierfür gehen wir nochmals kurz zurück in Blender. Im Reiter Szene kann diese Funktion aktiviert werden. Hierbei sollte man man darauf achten, die „samples“ auf ca. 20 zu stellen, da sonst die Qualität nicht stimmt.
Im Reiter Render kann dann mittels der Funktion „bake“ das ganze entsprechend der UV-Map als Bild festgehalten werden. Dieses dann exportieren, als Ebene in eure Textur importieren und den Ebenenmodus auf Überlagern oder Multiplizieren einstellen.
Abbildung 6.7 zeigt abschließend nochmal das schrittweise Erstellen einer Textur.
transportfever.net/wsc/attachment/82103/
Abbildung 6.7: Aufbau einer Textur
Grundsätzlich sollte man für die Textur genug Zeit einplanen. So etwas dauert einfach. So brauche ich für die Textur immer deutlich länger als für das eigentliche 3D Modell. Wenn eure Textur soweit fertig ist braucht ihr noch eine passende
Normalmap. Diese fügt eurem Fahrzeug Tiefe hinzu, wo keine vorhanden ist. Dadurch wirken Fensterrahmen und andere Objekte deutlich plastischer. Eine solche Map kann man natürlich von Hand erstellen oder man nutzt ein Plugin ( Gimp Plugin ). Hier kann man aus einem Graustufenbild (Textur entfärben) eine passende Map erzeugen. Bereits mit den Voreinstellungen des Plugins können gute Ergebnisse erzeugt werden. Eine entsprechende Normalmap könnte zum Beispiel folgendermaßen aussehen. Hierbei handelt es sich wieder um die oben besprochene Tür.
[Blocked Image: https://ftp.train-fever.net/Bilder/moddingleitfaden/6_5_normal.jpg]
Abbildung 6.8: Ausschnitt einer Normalmap
Das nachfolgende Beispiel soll die Funktion einer Normalmap verdeutlichen. Dazu wurde erst ein Schriftzug auf die Textur gezeichnet, danach eine passende Nomalmap generiert und abschließend die Schrift wieder entfernt. Das ganze dient hier lediglich demonstrativen Zwecken. Im Spiel scheint es dann so, als hätte die Fläche tatsächlich eine entsprechende Vertiefung. Nur zur Erinnerung: Die Textur ist absolut einfarbig, trotzdem scheint der Umriss der Schrift vorhanden zu sein.
[Blocked Image: https://ftp.train-fever.net/Bilder/moddingleitfaden/6_6_normal_effekt.jpg]
Abbildung 6.9: Auswirkungen einer Normalmap.
Beim Generieren der Normalmap werden immer Farbkanten bzw. Helligkeitsunterschiede genutzt, um die Struktur zu erzeugen. Bei Fenstern und ähnlichem funktioniert dies sehr gut. Ähnliches gilt für die oben beschriebenen Türgriffe und Nieten. Allerdings gibt es auch kritische Stellen, wie zum Beispiel Schriften oder Lackierungen. Diese sind ja in der Regel nicht erhaben, würden aber in der Normalmap als solche generiert werden. In diesem Fall muss man also per Hand diese Unstimmigkeiten wieder ausbessern. Gut sehen kann man dies an der Normalmap der Tür. Diese hat ja ein entsprechendes Zuglaufschild gehabt. Dieses wurde auch bei der Generierung der Normalmap berücksichtigt und anschließend manuell entfernt. Damit sind nun die Arbeiten an der Textur soweit abgeschlossen. Nun kann man damit anfangen, das Modell in TrainFever zu integrieren.
7 Integration in TrainFever
Als erstes geht es zurück in das Programm Blender. Bevor das Modell exportiert wird, braucht es nämlich noch den letzten Feinschliff. Konkret sollten jetzt alle Flächen geglättet werden, um unschöne Kanten zu reduzieren. Man kann dafür einzelne Polygone auswählen und dann die Option „Smooth“ wählen. Es ist wohl jedem klar, dass dies eine sehr mühsame und zeitintensive Methode ist. Deutlich einfacher geht das ganze über den „Edge Split Modifier“. Dieser trennt Kanten, die einen bestimmten Winkel überschreiten (voreingestellt sind 30°, womit bereits sehr gute Ergebnisse erzielt werden können) auf. Anschließend wendet man auf das gesamte Mesh die Option „Smooth“ an. Zu beachten ist, dass sich ein einmal angewendeter Filter nicht mehr rückgängig machen lässt. Man kann jetzt natürlich sagen, dass dieser Schritt schon viel früher durchgeführt werden sollte, aber wie bereits im Kapitel UV-Map erläutert erschwert dieses Auftrennen der Kanten unter Umständen das Mapping enorm. Daher empfiehlt es sich diesen Schritt erst später durchzuführen.
An dieser Stelle nochmals ein Wort zu mehrfach genutzten Objekten verlieren. Natürlich kann man ein Objekt mehrfach importieren. Viel einfacher ist es aber bestehende Objekte zu duplizieren (Shortcut alt+d). Hierbei wird dann auch gleich das Material und das Mapping mit übernommen, genauso wie bereits vorhandene Glättungsmaßnahmen. Nach dem Duplizieren eines ganzen Objektes kann man in der Regel keine Modifier mehr auf dieses anwenden.
Um bei der Bearbeitungsreihenfolge nicht durcheinander zu kommen, werfen wir nochmal einen Blick auf einen möglichen Ablauf einzelen Meshs in Blender Importieren bzw. direkt modellieren.
1. Objekte skalieren, rotieren und positionieren.
2. Speichern
3. „Edge Split Modifier“ anwenden
4. Meshs glätten
5. evtl. Objekte duplizieren
6.Ergebnisse prüfen
7.Gespeicherten Zwischenstand laden
8. UV Map erstellen
9. Schritt 4-6 wiederholen
Dies mag etwas umständlich wirken, hat sich aber als praktikable Variante herausgestellt. Damit sind alle relevanten Arbeiten am Modell abgeschlossen und der Export kann beginnen. Dazu wählt man das Modell aus und geht auf „Export TrainFever Object“. Nun werden eine Reihe von Optionen angeboten. Für detaillierte Informationen empfehle ich den entsprechenden Lexikonartikel.
Es empfiehlt sich beim ersten Export alle Optionen auszuwählen. Je nach Aufbau des Modells in Blender kann es nötig sein die Optionen für das Erzeugen des UI Bildes sowie die fürs Material zu deaktivieren, da es sonst zu Fehlermeldungen kommt. Sind alle Dateien erfolgreich exportiert worden, müssen diese noch überarbeitet/angepasst werden.
Viele Einstellungen die im Folgendem in den Dateien von Hand eingearbeitet werden, können auch schon direkt in Blender festgelegt werden. Dazu einfach die Eigenschaften der jeweiligen Objekte bearbeiten. Wie immer ist die Wahl des konkreten Vorgehens Geschmackssache. Als erstes geht es an die .mdl Datei. Diese befindet sich unter models/model/vehicle/TYP (TYP steht hierbei für die Art eures Mods. Also „train“ für eine Lok, „waggon“ für einen Wagen usw.) und gibt die grundlegenden Eigenschaften eures Mods an. Zum bearbeiten dieser und der folgenden Dateien reicht der normale Windows Editor völlig aus. Allgemein ist es sicher sinnvoll die jeweiligen Dateien immer mit bereits bestehenden Dateien von ähnlichen Originalfahrzeugen zu vergleichen. Beim Bearbeiten dieser ist auf eine korrekte Syntax zu achten, also jede Klammer die geöffnet wird muss auch wieder geschlossen werden und jedes einzelne Zeichen ist wichtig. Bereits ein falsches Komma kann einen Absturz verursachen.
Aber zurück zur .mdl Datei. In der oberen Hälfte steht als erstes die Information zu den Abmessungen des Fahrzeuges (boundingInfo) darauf folgt eine Übersicht der verwendeten Meshs und Groups. Zudem ist deren Position, Skalierung und Rotation hier festgelegt. Da das Modell ja bereits in Blender angepasst wurde, sind hier normalerweise keine Änderungen mehr notwendig. Beim TEE sieht das ganze wie folgt aus:
function data()
return {
boundingInfo = {
bbMax = {
10.38415, 1.50419, 4.03346,
},
bbMin = {
-8.85, -1.58113, -0.01016,
},
},
collider = {
params = {
},
type = "MESH",
},
lods = {
{
animations = {
},
children = {
{
id = "vehicle/train/VT11_5/VT11_5_lod_0_body.msh",
transf = {
0.00097, 0.0, 0.0, 0.0, 0.0, 0.00097, 0.0, 0.0, 0.0, 0.0, 0.00097, 0.0, 0.3, -0.03997, 0.0, 1.0,
},
type = "MESH",
}, {
id = "vehicle/train/VT11_5_lod_0_bogie.grp",
transf = {
1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 6.0, 0.0, 0.0, 1.0,
},
type = "GROUP",
}, {
id = "vehicle/train/VT11_5_lod_0_bogie2.grp",
transf = {
1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -6.25, 0.0, 0.0, 1.0,
},
type = "GROUP",
},
},
events = {
},
matConfigs = {
{
0, 0, 0,
},
},
static = false,
visibleFrom = 0,
visibleTo = 2500,
},
},
Display More
Im unteren Teil der Datei geht es dann um die technischen Daten. Dazu zählt der Name des Fahrzeugs („name“), die Fahrzeugbeschreibung („description“), die Höchstgeschwindigkeit („topSpeed“) , das Gewicht („weight“) und die Motordaten („engines“) mit den Unterkategorien für die Antriebsart („type“), die Leistung („power“), und die Zugkraft („tractiveEffort“). Anschließend findet sich ein Eintrag zu den Achsen des Zuges („configs“ bzw. „axles“). Hier müssen alle Räder bzw. Achsen angegeben werden, die sich später bei der Fahrt drehen sollen. Außerdem sind diese Einträge für das Fahrverhalten durch Kurven zwingend erforderlich. Beim TEE ist zu bedenken, dass der Zug am vorderen Drehgestell über größere Räder als am hinteren Drehgestell verfügt. Somit gibt es zwei verschieden Achsen. Diese werden jeweils doppelt verwendet. Bei einem vierachsigen Wagen wäre nur ein Eintrag nötig, da alle Achsen ja identisch sind.
Danach muss noch auf die entsprechenden Sounddateien („soundSet“) verwiesen werden. Hier kann man natürlich auch auf bestehende Dateien zurückgreifen. Im Falle des TEE habe ich eigene Sounds verwendet. Jetzt fehlen noch die Wert für die Fahrzeugart („transportVehicle“), die Verfügbarkeit im Spiel („availability“), die Kosten („cost“), dieLebensdauer („lifespan“), die Betriebskosten („runningCosts“) und die genutzten Raucheffekte („particleSystem“). Bei letzteren empfiehlt es sich wieder, Werte von bereits existierenden Fahrzeugen zu übernehmen und diese dann nach den eigenen Vorstellungen anzupassen. Die benötigten Positionsdaten können in Blender abgelesen werden. Am Beispiel des TEE kann dies nachvollzogen werden:
metadata = {
description = {
name = _("TEE"),
description = _(
"Trans Europ Express")
},
railVehicle = {
topSpeed = 160.0,
weight = 43.0,
engines = {
{ type = "DIESEL", power = 810.0, tractiveEffort = 280.0 }
},
configs = {
{
axles = {
"vehicle/train/VT11_5/VT11_5_lod_0_w1.msh",
"vehicle/train/VT11_5/VT11_5_lod_0_w2.msh",
}
},
},
soundSet = { name = "vt11_5" }
},
transportVehicle = {
carrier = "RAIL",
multipleUnitOnly = true
},
availability = {
yearFrom = 1957,
yearTo = 1990,
},
cost = {
price = 1000000,
},
maintenance = {
lifespan = 50,
runningCosts = 400000,
},
particleSystem = {
emitters = {
{
position = { 5200., .0, 4200.1 },
velocity = { .0, .0, 4.0 },
color = { .3, .1, .1 },
frequency = 50,
lifeTime = 1.0,
size01 = { .5, 4.0 },
child = 1
},
}
}
},
Display More
Die geänderten Datei kann dann gespeichert werden. Hier der wichtige Hinweis: Sollte euer Beschreibungstext Umlaute enthalten, bitte unbedingt bei der Codierung „UTF-8“ auswählen. Als nächstes sollte man sich die entsprechenden Group Dateien anschauen. Diese sind natürlich nur vorhanden, wenn ihr in Blender auch „Groups“ erzeugt habt (zum Beispiel für Drehgestelle oder bei einer Dampflok mit Tender). In diesen Dateien wird die Zusammenstellung der einzelnen Groups festgelegt. Der Aufbau ist mit den .mdl Dateien vergleichbar. Jedes Mesh hat einen Eintrag mit den jeweiligen Koordinaten, der Skalierung und der Rotation. Wie bei der .mdl Datei, gilt auch hier: Normalerweise sind keine Anpassungen nötig. Wie schon oben erwähnt gibt es eine Ausnahme für doppelt verwendete Objekte. Bei einem Drehgestell wären das zum Beispiel die beiden Achsen. Beim importieren in Blender bekommt die zweite Achse meistens ein .001 an den Namen angehängt, es entstehen also beim Export zwei identische Achsen mit unterschiedlichen Namen. Erzeugt man diese Objekte durch Duplizieren – wie oben beschrieben - ist dies nicht der Fall und es sind keine Änderungen nötig. Andernfalls gilt folgendes. Es empfiehlt sich, in der .grp Datei bei der zweiten Achse die nachgestellte .001 zu löschen (alles andere muss erhalten bleiben). Somit wird in der Datei zweimal auf die gleiche Achse verwiesen. Hier kann man natürlich auch eine bereits bestehende Achse aus Trainfever eintragen, wenn man keine eigene erstellt hat. Die gewünschte Position muss man dann aus Blender auslesen.
Wenn die Änderungen gespeichert sind, geht es mit den Mesh Dateien weiter. Im entsprechenden Unterordner gibt es die BLOB Dateien, welche die jeweilige Geometrie enthalten (Polygone und UV Map) und daher nicht weiter bearbeitet werden müssen/können. Daneben gibt es für jedes Objekt noch eine MSH-Datei (erkennbar an der fehlenden .msh Endung) in der weitere Informationen abgelegt sind. Hier sollte man als erstes den Eintrag für das entsprechende Material („materials“) überprüfen, ansonsten kann hier eigentlich garnicht soviel schief gehen. Folgend mal die entsprechende Datei für den TEE
function data()
return {
animations = {
},
matConfigs = {
{
0,
},
},
subMeshes = {
{
indices = {
normal = {
count = 308016,
offset = 1474732,
},
position = {
count = 308016,
offset = 858700,
},
tangent = {
count = 308016,
offset = 1782748,
},
uv0 = {
count = 308016,
offset = 1166716,
},
},
materials = {
"vehicle/train/train_VT11_5.mtl",
},
},
},
vertexAttr = {
normal = {
count = 188172,
numComp = 3,
offset = 278624,
},
position = {
count = 155088,
numComp = 3,
offset = 0,
},
tangent = {
count = 391904,
numComp = 4,
offset = 466796,
},
uv0 = {
count = 123536,
numComp = 2,
offset = 155088,
},
},
}
end
Display More
Somit geht es dann auch gleich weiter zu den Materialdateien (.mtl). In diesen wird auf die entsprechenden Texturen verwiesen. Sollte man diese Dateien beim exportieren nicht erzeugt haben, kann man einfach eine bereits bestehende Datei kopieren und entsprechend umbenennen. In diesem Fall muss man natürlich den Namen/Pfad der .mtl Datei in den jeweiligen .msh Dateien ergänzen. (siehe oben) Innerhalb der .mtl Datei gibt es dann eigentlich nur die Pfade für die entsprechenden Texturen zu bearbeiten. Also sowohl für die eigentliche Textur(„map_color_reflect), als auch für die Normalmap(map_normal). Die übrigen Daten müssen im Normalfall nicht geändert werden. Zur Verdeutlichung auch hier wieder die .mtl Datei des TEE.
function data()
return {
params = {
fade_out_range = {
fadeOutEndDist = 20000,
fadeOutStartDist = 10000,
},
map_color_reflect = {
compressionAllowed = true,
fileName = "models/vehicle/train/br601_1.tga",
magFilter = "LINEAR",
minFilter = "LINEAR_MIPMAP_LINEAR",
mipmapAlphaScale = 0,
type = "TWOD",
wrapS = "REPEAT",
wrapT = "REPEAT",
},
map_env = {
compressionAllowed = true,
fileName = "c.tga",
magFilter = "LINEAR",
minFilter = "LINEAR",
mipmapAlphaScale = 0,
type = "CUBE_MAP",
wrapS = "REPEAT",
wrapT = "REPEAT",
},
map_normal = {
compressionAllowed = false,
fileName = "models/vehicle/train/br601_1_n.tga",
magFilter = "LINEAR",
minFilter = "LINEAR_MIPMAP_LINEAR",
mipmapAlphaScale = 0,
type = "TWOD",
wrapS = "REPEAT",
wrapT = "REPEAT",
},
polygon_offset = {
factor = 0,
units = 0,
},
props = {
coeffs = {
1, 1, 0.25, 20,
},
},
two_sided = {
twoSided = false,
},
},
type = "REFLECTIVE_NRML_MAP",
}
end
Display More
Sind alle Dateien bearbeitet, können die model und texture Ordner in den res Ordner von Trainever verschoben werden. Denkt daran auch eure bereits in Blender importierten Texturen in den entsprechenden Ordner zu schieben. Sollte beim Export kein UI Bild Erzeugt worden sein, muss man dies jetzt noch hinzufügen. Dafür kann man zum Beispiel in Blender einen Screenshot erstellen und diesen entsprechend anpassen. Übrigens ist dieses Vorschaubild nicht zwingend erforderlich – man kann es also auch erst ganz zum Schluss anfertigen.
Damit ist euer Mod nun eigentlich bereits fertig. Nun kommt die nervige Phase des Testens. Also Spiel starten und auf den Absturz warten. Dieser kann entweder beim Laden eines Spielstandes, dem Anklicken des Depots, dem Versuch das Fahrzeug zu kaufen, oder beim Zuweisen einer Linie auftreten. Handelt es sich bei dem Problem um einen Tippfehler in einer der bearbeiteten Dateien gibt es meistens auch eine hilfreiche Fehlermeldung. Ansonsten kann man nur immer wieder empfehlen die Dateien des eigenen Fahrzeugs mit denen aus dem Hauptspiel zu vergleichen. Auf diese Weise kann man eigentlich alle Fehler finden.
Abschließend möchte ich noch auf einige Besonderheiten eingehen. Wenn man das Gestänge einer Dampflok animieren möchte, braucht man entsprechende Einträge in der .mdl Datei, sowie in den jeweiligen Meshdateien. Einen ausführlichen Artikel zu dieser Problematik findet man im Lexikon
Möchte man einen ganzen Zug gestalten, der als ganze Einheit im Kaufmenü verügbar sein soll, braucht man eine entsprechende .config Datei im „multiple Unit“ Verzeichniss. Diese gibt neben den Beschreibungstexten, die Reihenfolge der Lok/Wagen an. Der Aufbau der Datei ist denkbar einfach und kann nachfolgend am Beispiel des TEE nachvollzogen werden.