Da mir über längere Zeit keine Fehler gemeldet wurden, hebe ich die Vollmatrix V2 aus der OpenBeta-Phase. Entsprechend meinem Versprechen folgt nun eine Anleitung, wie ihr die Vollmatrix in ein beliebiges Fahrzeug einbauen könnt.
0. Vorbereitung:
Bevor das Script eingebaut werden kann, möchte ich zunächst erläutern, wie die Vollmatrix funktioniert. Grundsätzlich folgt die Vollmatrix dem EVA-Prinzip aus der Informatik:
* Eingabe: Die Eingabe erfolgt über drei IBIS-Variablen. Ob diese tatsächlich von einem IBIS, von einem FSD (Fahrscheindrucker) oder reinen Matrix-Steuergerät beschrieben werden, ist dem Script egal. Als Eingabevariablen werden verwendet:
- IBIS_LinieKurs enthält die Liniennummer (ohne Kursnummer, auch wenn der Variablenname etwas anderes vermuten lässt; ich hab mir den nicht ausgesucht).
- IBIS_Linie_Suffix enthält die Kursnummer, die im M&R-IBIS mit der Liniennummer eingegeben wird. Hierüber werden die Linienverzierungen (Prä- und Suffixe oder ein Liniennummerersatz) gesteuert.
- IBIS_TerminusIndex enthält den Index des Zielschilds (Nicht der Zielcode, sondern der Index, der durch die Reihenfolge in der Hof-Datei bestimmt wird)
* Verarbeitung: Die Verarbeitung kümmert euch Nutzer in 99% der Fälle nicht. Der häufigste Eingriff in die Verarbeitung betrifft eine Änderung im Matrix_Fontfile.osc. Hier können neue Zeichen definiert oder bestehende verändert werden. Außerdem können hier die Linienverzierungen der Kursnummern verändert werden.
* Ausgabe: Das Script gibt 3 voneinander unabhängige Anzeigen aus. Eine Frontanzeige mit Liniennummer, Zielsymbol und Zieltext, eine Seitenanzeige mit schaltbarem Zielsymbol und Zieltext sowie eine Heckanzeige, die nur die Liniennummer anzeigt.
Bis zur, zur Zeit, zu der ich diesen Beitrag schreibe, aktuellen Version (Upload 2. Juni 2013) sind die Front- und Seitenanzeige als Zweischicht-Anzeigen ausgeführt.
Die Matrix gibt die fertigen Zielanzeigen in 5 Strings aus. Diese sind:
- Vollmatrix_Inhalt
- Vollmatrix_Inhalt_invert
- Vollmatrix_Seite_Inhalt
- Vollmatrix_Seite_Inhalt_invert
- Vollmatrix_Linie_Inhalt
1. Modell erstellen in Blender
Dies ist kein Blender-Tutorial und soll auch keines sein. Solltet ihr ein Blender-Tutorial brauchen, empfehle ich das Blender-Tutorial von Marcel Kuhnt ( http://www.youtube.com/user/marcelqnt/videos ) oder eine Suche mit der Suchmaschine des geringsten Misstrauens. Ich arbeite mit Blender 2.49.
Für jede Texttextur ist eine Fläche an entsprechender Position notwendig. Für invertierbare Anzeigen (Front und Seite) ist noch eine zweite Fläche eine Spur (etwa ein Millimeter) davor oder dahinter zu platzieren.
Ich mache es dabei so, dass ich die „normalen“ Anzeigen in ein Objekt packe, das dupliziere und im Duplikat lösche ich erstmal die Flächen, deren Anzeigen nicht invertierbar sind. Dann verschiebe ich die übrig gebliebenen Flächen jeweils um einen Millimeter nach außen.
Als nächstes erstelle ich die Materials. Da die Materials in OMSI sowieso durch Texttexturen ersetzt werden, erstelle ich hierzu keine Texturen, sondern nur die Materials. Dazu gehe ich im UV Editor auf Image>New und erstelle für jede Texttextur, die im Objekt vorkommt, ein Material, insgesamt also je nach Bus bis zu drei. Die Namenwahl ist recht frei, ich schlage etwas ähnliches wie Matrix_Front, Matrix_Seite und Matrix_LNr vor. Die Größe der Blender-Textur ist egal, weil sie nicht exportiert wird. Beim Mapping muss die Textur mit der 3D-Fläche deckungsgleich sein, also die volle Breite der Textur entspricht der vollen Breite der Fläche und bei der Höhe das selbe. Das dann eben passend für alle Anzeigeflächen.
Zum Schluss exportiere ich dann beide Objekte in eine *.x-Datei
Ich möchte an dieser Stelle betonen, dass ich in Blender recht unbedarft bin und es sicher schnellere/andere Wege zum Ziel gibt. Für mich ist nur wichtig, dass mein Weg für mich funktioniert.
2. Umwandeln der *.x-Datei in *.o3d-Dateien
Da ich in Blender beider Matrix-Objekte in eine *.x-Datei exportiert habe, trenne ich die Objekte beim Konvertieren wieder mit der Option „seperate Files“ in zwei *.o3ds
3. Einbinden der *.o3ds und Texttexturen in der *.cfg
Hier sollte mit den Texttexturen begonnen werden.
Oben in der Modell-*.cfg sind alle im Modell verwendeten Texttexturen verwendet.
Unter allen bereits definierten Texttexturen müssen nun die für die Anzeigen benötigten Texttexturen definiert werden.
- NrX: ← Gehört nicht zur Syntax, nur der Index als Orientierung für den Autor
- [texttexture] ← Schlüsselwort
- Vollmatrix_Inhalt ← String-Var-Name (siehe oben)
- FlipDot_Font_Vollmatrix ← Schriftart (entweder FlipDot_Font_Vollmatrix oder FlipDot_Font_Vollmatrix_invert bei invertierten Flächen)
- 360 ← Breite der Anzeige in Pixel (In Constfile definierte Breite * 3)
- 57 ← Höhe der Anzeige in Pixel (immer 57, weil Zeilenanzahl 19 * 3)
- 0 ← Auswahl, ob Farbe aus Fontfile oder über RGB bestimmen (fast immer 0)
- 255 ← Rot-Anteil der Farbe, wenn über RGB bestimmt
- 255 ← Grün-Anteil der Farbe, wenn über RGB bestimmt
- 0 ← Blau-Anteil der Farbe, wenn über RGB bestimmt
Die Meshs der Matrix sollten nach allen Objekten, die nicht durchsichtig sind, und vor der Verglasung definiert werden:
- [mesh]
- ← Pfad und Dateiname der Fläche, die weiter „innen“ im Modell ist, also bei meinem Vorgehen in Blender die „normale“
- [matl]
- ← Materialname der Fläche(n) dieses Objekts, für die die nächsten Optionen gelten sollen
- 0 ← einfach 0, keine Ahnung, was das bedeutet.
- [matl_lightmap]
- ← Nochmal der Materialname
- ← Variable, die im Script die Lightmap steuert
- [useTextTexture]
- ← der oben erwähnte Index der Texttexturen. Die in der Datei als erstes definierte Texttextur hat den Index 0, die zweite hat den Index 1, usw.
- [matl_alpha]
- 2 ← Transparenz hat 255 Wertemöglichkeiten
Alles anzeigen
Das ganze für weitere Materialien des gleichen Objekts bzw. weitere Objekte wiederholen.
4. Einbinden der Scripts und Variablenlisten in die *.bus
In der *.bus muss noch deklariert werden, welche Dateien OMSI bekannt sein sollen und abgerufen werden sollen
Beim Punkt [varnamelist] ist die Datei Script\Matrix_Varlist.txt hinzuzufügen, wenn noch nicht vorhanden und die Zahl unter dem Schlüsselwort muss an die Anzahl der angeführten Dateien angepasst werden.
Beim Punkt [stringvarnamelist] sind die Dateien Script\matrix_stringvarlist.txt und Script\matrix_fontfile_stringvarlist.txt hinzuzufügen, wenn noch nicht vorhanden, sowie wieder die Zahl unter dem Schlüsselwort anzupassen.
Beim Punkt [constfile] ist die Datei Script\matrix_constfile.txt hinzuzufügen, wenn noch nicht vorhanden, sowie wieder die Zahl unter dem Schlüsselwort anzupassen.
Beim Punkt [script] sind die Dateien Script\Matrix.osc und Script\Matrix_Fontfile.osc am unteren Ende der Liste hinzuzufügen, wenn noch nicht vorhanden, sowie wieder die Zahl unter dem Schlüsselwort anzupassen.
5. Aufruf der Macros und die Sache mit der KI
In der Main.osc-Datei des Fahrzeugs müssen dann noch innerhalb des init-Bereichs, also zwischen {init} und dem entsprechenden {end} der Befehl (M.L.Matrix_init) und innerhalb des frame-Bereichs der Befehl (M.L.Matrix_frame) eingetragen werden.
Wer sich erinnert, weiß, dass die Vollmatrix ursprünglich mit dem O405N2 von Julian/TramDüsseldorf veröffentlicht wurde. Dieser hat eine Kombination aus Rollband und Matrix. Das bedeutet die Besonderheit, dass zwei Scripts vom Trigger „ai_scheduled_settarget“ beeinflusst werden sollen. Da ein Trigger nicht in zwei unterschiedlichen Dateien definiert werden kann, musste ich mir eine Alternative einfallen lassen. Umgesetzt wurde es im Endeffekt so, dass der Trigger im Rollband-Script ist, allerdings als erstes das Äquivalent im Matrix-Script aufruft, um diese zu aktualisieren. Erst danach aktualisiert das Rollband-Script das Rollband.
Um Update-Kompatibel zu bleiben, empfehle ich, in der Main.osc-Datei des Fahrzeugs folgende Scriptzeilen außerhalb der {init} und {frame}-Tags:
- {trigger:ai_scheduled_settarget}
- (M.L.Vollmatrix-AI-Setting)
- {end}
Dann kann die KI die Matrix bedienen und auch der Nutzer hat die Möglichkeit, über das Alt-Menü zu schildern.
6. Was zu sagen bleibt
Bei der Anleitung wird ein Weg beschrieben, der bei mir funktioniert. Es gibt sicher auch noch andere funktionierende Wege.
Auch durch dieses Tutorial bleiben die Lizenzbedingungen, die man durch das Nutzen des Scripts eingegangen ist, bestehen. Das bedeutet, solltet ihr die Vollmatrix in euren Bus einbauen und diesen veröffentlichen wollen, braucht ihr dazu eine Erlaubnis von mir.
Ich wünsche euch noch einen schönen Abend
Busfanat