Kapitel 8

PolyMaster Special

An dieser Stelle geht mein herzlicher Dank an Thomas Pilder, der die folgenden Ausführungen erst möglich gemacht hat !



8.1. Grundlagen:

Als "Alpha-Transparenz" bezeichne ich Flächen, die keine 100%ige Transparenz (Durchsichtigkeit) haben. Ein Beispiel dafür sind farbig getönte Windschutz- und Seitenfenster von Autos, Lokomotiven und Flugzeugen, bis hin zum althergebrachten "Milchglas" der Eingangstür eines Wohn- und Geschäftshauses.

Der Ausdruck "Alpha-Transparenz" rührt her vom sogenannten "Alphakanal" einer Texturdatei.

Eine Windows-Bitmap (eine standardisierte Pixelgrafik) kann man in vielen verschiedenen Dateiformaten unkomprimiert und verlustfrei sowie komprimiert und verlustbehaftet speichern. Diese Grafikdateien speichern eine Farbtiefe von bis zu 24 Bit (16.777.215 Farben) problemlos. Außer einigen speziell auf die Grafikprogramme zugeschnittenen Dateiformaten wie z.B. *.psd für den Adobe Photoshop oder *.psp für den Jasc Paint Shop Pro, die Alphakanäle und zusätzliche Layer (Ebenen) speichern können, gibt es meines Wissens nur noch ein einziges Dateiformat, welches zusätzlich zu den 24 Bit breiten Bildinformationen einen 8 Bit breiten (256 Graustufen-) Alphakanal speichern kann:

Das TrueVision Targa - Format (*.tga).

TGA-Dateien können einen Informationsgehalt von 32 Bit speichern !

Der Alphakanal steuert also die Intensität von transparenten und semitransparenten Bildbereichen, und der TSM wendet ihn bei Parts und Polygonen an, die den Alph*- und Trans*-Materialien zugeordnet sind.

Bei der Konvertierung in den TS, also bei der Erzeugung der Shape-Datei *.s, macht der TSM jedoch gravierende Fehler, die sich u.a. in den verschwindenden Streckenobjekten hinter semitransparenten Fensterscheiben bemerkbar machen (siehe Kapitel 7.9.).

Nun gibt glücklicherweise einen begabten Programmierer und TSM-Konstrukteur, der sich diesem Problem angenommen und es geschafft hat, die TSM-Bugs wenigstens aus dem Endprodukt zu entfernen: Die manuelle Nachbearbeitung der Shape-Datei macht's möglich !

Um die nachträgliche Änderung des Shapes möglichst einfach zu gestalten und jedem TSM-Entwickler zugänglich zu machen, hat Herr Thomas Pilder ein Programm geschrieben und zum kostenlosen Download bereitgestellt: Den PolyMaster.

Den PolyMaster gibt es in zwei verschiedenen Versionen, der normalen und den PolyMasterPlus, beide zu diesem Zeitpunkt in der Versionsnummer 2.10 vom 06.Juni 2004.
Näheres über die Unterschiede zwischen den Versionen lesen Sie bitte auf der Homepage nach.

Hinweise:

- Die manuelle Nachbearbeitung, insbesondere die weitere Verbreitung einer fremden Shape-Datei ist ohne die Zustimmung des Urhebers verboten !
- Die Benutzung des PolyMaster erfolgt auf eigene Gefahr, der Autor haftet nicht für Schäden an den damit geänderten Dateien !
- Ich empfehle ausdrücklich, die dem Programm beiliegende Word-Datei zu lesen !

Nachdem Sie den PolyMaster heruntergeladen haben, entpacken Sie einfach alle Dateien des Zip-Archivs in einen Ordner Ihrer Wahl.
Nach dem Programmstart erscheint folgendes Bild:
 

 

8.2. Beseitigung des Alphatransparenz-Fehlers:

Da unsere Shape-Datei "Tutoriallok.s" komprimiert ist und deshalb vom PolyMaster nicht gelesen werden kann, müssen wir sie zuerst dekomprimieren.
Wir klicken also auf den Button Compress/Decompress .s ....


.... und suchen im folgenden Dialog unsere Shape-Datei
"Tutoriallok.s" aus dem Ordner "...\Trainset\Tutoriallok" heraus:

Der PolyMaster verwendet nun das mit dem Train Simulator mitgelieferte Tool
"...\Train Simulator\UTILS\FFEDIT\ffeditc_unicode.exe" in der Windows-Kommandozeile, um die Shape-Datei zu dekomprimieren. Nach Ablauf der Stapelverarbeitung drücken Sie bitte eine beliebige Taste, um den Kommandozeilen-Interpreter zu schließen.


Erst jetzt können wir die Shape-Datei zur Manipulation öffnen:


In der großen Tabelle links erscheinen die "intimsten" Geheimnisse unseres Modells, die Elemente.
Deutlich zu sehen ist, welchem Elternpart sie angehören, aus welchem Material sie bestehen, mit welcher Textur sie belegt sind sowie die jeweilige Anzahl der Flächen (Faces) und welchem LOD die Elemente angehören. Alle Elemente gehören zum LOD 1, der wiederum bei einer Entfernung von 2000m sichtbar wird.

LOD bedeutet entweder soviel wie "Level Of Detail" (dt.: Detailstufe) oder "Level Of Distance" (dt.: Entfernungsstufe), hier scheiden sich die Geister.
Es gibt sicherlich andere TS-Entwickler, die ein LOD besser erklären können als ich, deshalb lasse ich es hiermit vorerst dabei bewenden.

Das erste Element besteht aus allen zusammengefassten Parts, die dem Material SolidNorm zugeordnet sind, wie z.B. Main, die Holme und deren Holmseiten sowie die Bögen.
Die Elemente 2 und 3 dürften hier alle Parts sein, die zum Innenraum der Führerstände gehören: AlphNorm-
Bei den letzten drei Elementen (AlphNorm+) handelt es sich um die Front- und Seitenteile der Führerraum-Außenseiten.

Ganz unten im Programmfenster lesen wir den Pfad- und Dateinamen unseres Shapes und aus wieviel Zeilen die *.s-Datei besteht. 


Wir müssen nun alle Elemente, die einem Alph*-Material zugeordnet sind, einem neuen sog. Subobjekt zuordnen. Das neue Subobjekt muss als "sortiert" gekennzeichnet werden !
Dazu tragen wir bei den Elementen 2 bis 5 in der Spalte L 1 eine zwei ein. Wir können beobachten, dass das neue Subobjekt in der kleinen Tabelle Subobjekte als neue Zeile mit der Nummer 2 erscheint. In dieser kleinen Tabelle markieren wir das zweite Subobjekt in der Spalte L 1 mit einem kleinen "x".


Nachdem wir das alles gemacht haben, betätigen wir nacheinander die Buttons LOD's/Subobjekte erzeugen, speichern die S-Datei unter dem gleichen Namen
"Tutoriallok.s" wieder ab (überschreiben !) und komprimieren das Modell, indem wir nochmals auf Compress/Decompress .s klicken.

Hinweis:

Eine Sicherungskopie des Shapes vor der Arbeit mit dem PolyMaster anzulegen, wird natürlich dringend empfohlen !
Dies ist in unserem Falle aber nicht notwendig, weil erstens der PolyMaster selbst eine Sicherungskopie anlegt und wir natürlich jederzeit und so oft wir wollen mit dem TSM ein neues Shape erzeugen können !

 

         


Erneut läuft die Stapelverarbeitung ab, welche wir mit einem Tastendruck beenden:


Wir machen eine ausgiebige Probefahrt mit der Lok und testen nach Möglichkeit die verschiedenen Detailstufen, Bildschirmauflösungen und Farbtiefen des TS aus.
Auf dem folgenden Bildausschnitt (alle TS-Optionen eingeschaltet, alle Schieberegler ganz rechts, Auflösung 1600 x 1200 x 32) ist nun das Haus beim Blick durch die Fenster zu sehen.
Die Modifikation mit dem PolyMaster war also erfolgreich:


 


8.3. Optimieren der Subobjekte:

Wir erinnern uns an den weiter oben gezeigten Screenshot, der die Erstellung des neuen Subobjekts anzeigt. Hier ein Bildausschnitt davon:

Das erste Subobjekt besteht aus 913 Vertices, das zweite aber auch, obwohl wir die Elemente mit den Alphatexturen eindeutig diesem zweiten Subobjekt zugewiesen haben.
Nun, dies ist eine Eigenart des PolyMaster. Um das zu ändern, müsste ThoPil schon eine ganze Menge an kostbarer Zeit in die Weiterentwicklung des Programms investieren. Das wäre zu diesem Zeitpunkt noch irrelevant.

Wir behelfen uns deshalb auf eine andere Weise, indem wir einen neuen Part erstellen, diesem das Material "AlphNorm" (ohne Plus und Minus) zuweisen und ihn mit "Main" verlinken.
An diesen neuen Part linken wir alle Parts, die Alphatexturen enthalten und bisher mit "Main" verknüpft waren.
Wir fügen also in die Part-Hierarchie eine dritte Ebene ein:

Der neue Part "Main_Alpha" wird lediglich aus einem Polygon bestehen (2 Faces bzw. 2 Dreiecken) und für den User unsichtbar sein. Wir erstellen ihn aus einer einfachen Box, indem wir die überflüssigen Polygone und Vertices löschen. Und das wollen wir jetzt machen.
Starten wir also den TSM und laden das Projekt
"Tutoriallok_04.dst". Zuerst sichern wir unsere Arbeit, denn wir speichern jetzt das Projekt mit File - Save As... unter dem Dateinamen "Tutoriallok_05.dst" ab:


Wir erstellen also mit Part - Add - Box... einen neuen Würfel mit einem Meter Seitenlänge, setzen die Origin Position in das Part-Zentrum und legen die Y-Position der Box auf 2.5m fest:


In der gezoomten Expanded View der Seitenansicht sollte es dann so aussehen:


Wir schalten in den Poly Mode und löschen mit und der Taste [Entf] alle Polygone, die wir nicht benötigen.
Das wären alle Seitenflächen des Würfels und das obere Poly. Das Bodenpolygon wollen wir behalten. Und so sieht's aus:


Jetzt aktivieren wir den Point Mode und stellen "verblüfft" fest, dass in unserem neuen Würfel noch einige Vertices vorhanden sind, die nicht mehr benötigt werden, da wir ja alle angrenzenden Polygone gelöscht haben.

Mit dem Menübefehl Part - Remove Orphaned Points - Current Part löschen wir auch diese überflüssigen Punkte (engl.: orphaned = überflüssig; engl.: to remove = entfernen).


Wir bekommen eine Meldung angezeigt, dass vier Punkte eliminiert wurden:

Genau wie die Funktion Snap To Grid ist dieser Befehl mit Vorsicht anzuwenden, allzu schnell kann bei unüberlegter Handlungsweise die gesamte Objektstruktur zerstört werden. Es hat sich als sehr hilfreich erwiesen, vor der Anwendung das Projekt zu speichern !

Wir gehen zurück in den Part Mode .
Dann wählen Part - Center Axis - To Object, um den Pivotpunkt auf den Part zu zentrieren:
 


Mit den Part Texture Assignments ([F4]) mappen wir die Bottom-Eigenschaft des Parts auf Schwarz in der Datei
"Tutoriallok_01.tga".


Im Dialog Part Properties (Taste [F2]) linken wir unseren neuen Part "Main_Alpha" an "Main" und weisen ihm das Material "AlphNorm" zu:


Jetzt verschaffen wir uns zunächst eine Übersicht über die bisher erstellten Parts, indem wir den Menübefehl Part - Create Part File Merge List... ausführen. Damit erzeugen wir eine einfache Textdatei. Ferner werden alle Parts automatisch als
*.dsp im Projektverzeichnis gespeichert.


Bitte wählen als Dateinamen
"MergeList1.txt" (engl.: to merge = zusammenführen, zusammenfügen) und klicken Sie auf Speichern.


Wir minimieren den TSM (nicht schließen !) und öffnen die Textdatei mit einem Doppelklick in dem auf Ihrem System voreingestellten Editor. Es werden uns alle Parts in deren Erstellungsreihenfolge angezeigt, ganz im Gegensatz zur Part List [F3], die die Parts in alphabetischer Reihenfolge anzeigt.
Ich habe in der folgenden Grafik alle Parts mit einem roten Rahmen markiert, denen Alpha-Materialien zugewiesen sind:


Alle diese Parts müssen wir jetzt an den Part "Main_Alpha" linken. Dazu wählen wir nacheinander mit oder mit [N] die Parts aus und stellen jeweils mit [F2] im Listenfeld Part Parent von Main auf Main_Alpha um.

Bitte gehen Sie hierbei sehr sorgfältig vor und überprüfen Sie ggf. mehrfach die Verlinkung aller Parts.
Wenn wir bei Main anfangen, dann wäre Cab_x_hinten der erste Part, der umgestellt werden muss:

Wenn wir damit fertig sind, exportieren wir das Modell mit der Taste [C] in den Train Simulator und speichern das Projekt.
Die beiden Processing Options für die Konvertierung der Texturen brauchen nicht angewählt werden.

Sollte Ihnen bei der Konvertierung folgende Fehlermeldung angezeigt werden, so fehlt irgendwo eine Verlinkung. Dann bestätigen Sie den Dialog mit Nein und überprüfen bitte nochmals mit [F2] alle Part Parents !

Ich übersetze mal kurz diese Fehlermeldung:

"Objektprüfung gab einen Fehler zurück:
Alle Parts bis auf einen müssen einen Elternpart haben !
Fortfahren ?"

Mit diesem einen Part ist natürlich "Main" gemeint. Sollte das Modell erwartungsgemäß erfolgreich und ohne Fehlermeldung erstellt worden sein, so können wir den TSM beenden und den PolyMaster oder den PolyMasterPlus starten.

Wir dekomprimieren die Datei "Tutoriallok.s" und öffnen sie:

Überrascht ?

Die Elemente-Liste ist um viele Einträge angewachsen, die Tabelle der Subobjekte zeigt aber nur noch eine Summe von 917 Vertices an !
Vormals waren es zweimal 913 Vertices, hier haben also gut 50 Prozent eingespart, was unserem Rechenknecht und damit der Performance im Train Simulator natürlich zugute kommt !

913 Vertices + vier Vertices (unser neuer Part "Main_Alpha") = 917 Vertices.

Bitte versehen Sie nun erneut alle Elemente, die ein "AlphNorm" im Namen tragen in der Spalte L1 mit einer zwei und in der kleinen Tabelle das zweite Subobjekt mit einem kleinen "x".

388 Vertices entfallen dabei auf das erste Subobjekt, nämlich "Main" und alle Parts mit Solid-Materialien. 529 Vertices verbleiben für das Subobjekt Nummer 2, das sind alle Parts mit Alpha-Material. Zusammen ergibt das 917 Punkte:

Dann betätigen Sie nacheinander die Buttons

- LOD's/Subojekte erzeugen

- Speichern

- Compress/Decompress .s

- Weg hier!


Das war's vorerst mit dem PolyMaster Special.

Am Ende des Tutorials werden wir aber die Lok nochmal mit diesem Tool bearbeiten und dabei vielleicht weitere Tricks kennenlernen. Nun helfen wir der schwebenden Lok auf die Beine und bauen die Drehgestelle, die Räder und die Achsen.