Font

Aus wiki.3d-modell.design
Wechseln zu: Navigation, Suche

Ein Font besteht immer aus 3 Dateien, der für die variable Anzeige in Omsi notwendig ist. Der Font ist eine Zusammenfassung von Zahlen, Ziffern oder Bildern, um damit Schriften oder ähnliches darzustellen, die von Omsi angezeigt werden können. In diesem Tutorial, soll es darum gehen, was ein Font ist, Aufbau, Aussehen, Darstellung, Funktion und die Verwendung in Omsi.


Was ist ein Font

Font's werden in Omsi als Texttexturen dargestellt. Ein Font besteht aus 3 einzelnen Dateien, die unterschiedliche Inhalte haben und auch unterschiedlich verwendet werden:

  1. Einer OFT-Datei (OmsiFontType), mit den Angaben, wo ein Bildausschnitt zu finden ist,
  2. Einer Bilddatei mit Zeichen, Zahlen oder Buchstaben,
  3. Einer Hintergrunddatei, die wahlweise als Fontfarbe genutzt werden kann.

Im Grunde genommen, ist ein Font nichts weiter als die Zusammenfassung von einzelnen Bildern. Omsi kann dann diese Bilder sinnvoll zusammensetzten, damit es im Spiel selbst einen Sinn ergibt. Für das Programm selbst ergibt das Dargestellte keinen Sinn. Daher können Passanten, das mit Fonts, dargestellte nicht erkennen oder gar nutzen. Es bleibt nur eine (für das Programm) nutzlose zusammenstellung von Bildern.


Grundlagen

Einsatz eines Font

Font's finden sich in Omsi mehrfach. So werden Font's benutzt um bestimmte Texte oder Zeichenketten darzustellen, die in Omsi veränderlich sind. Bestes Beispiel ist das Kennzeichen. Jedes bewegliche Fahrzeug in Omsi kann mit einem Kennzeichen versehen werden. Die Buchstaben und Zahlenfolgen werden dann von Omsi automatisch erstellt. Außerdem achtet Omsi darauf, dass keine 2 Fahrzeuge, die gleichen Kennzeichen erhalten. Mit dem Font kann am Kennzeichen alles dargestellt werden, was man möchte. Also nicht nur Buchstaben, Zahlen und Zeichen, sondern auch Bilder, wie Nationalitätszeichen auf Euro-Kennzeichen, Plaketten oder Rahmen. Man kann auch Kennzeichen mittels wechselnden Repainttexturen umsetzen, wobei dann aber 2 gleiche Fahrzeuge mit den selben Außentexturen immer die selben Kennzeichen besitzen. Möchte man aber ein Kennzeichen von Omsi selbst generieren lassen, dann geht dies nur mit einem Font.

Desweiteren finden sich Font's auf Matrizen, Anzeigegeräte wie Innenanzeigen, IBIS, Druckern oder auch Thermometern. Das Ausehen wird allein über den Font, genauer gesagt über die Bilddatei im Font festgelegt. Die in Omsi verwendeten Rollbänder und Schildern in Fahrzeugen, werden über wechselnde Bilddateien dargestellt, die keine Font's sind. Font-gesteuerte Anzeigen, können einzelne Buchstaben sinnvoll zusammen setzten oder Buchstaben- und Zahlenfolgen. Die Möglichkeiten sind vielfach, aber nicht unbegrenzt. Wechseltexturen sind dann sinnvoll, wenn man ganze Wörter wie Ziele oder zusammenhängende Zeichenketten umsetzten möchte Beispiel Zielschilder, Rollbandtexturen, Werbeplakate). Font bieten die Möglichkeit, recht einfach einzelne Zahlen-, Buchstaben-, Zeichen, und /oder Bilderketten, aus einzelnen Objekten zusammenzusetzen. Was genau dargestellt wird und vor allem wie, ist dann ein Zusammenspiel, zwischen Font und Script.

Es gibt bei diesen Objekte zwei Arten von Texttexturen in Omsi. Einige Texttexturen brauchen keine seperaten Scripte mehr, weil diese in Omsi bereits fest im Hauptprogramm berechnet werden (Beispiel Kennzeichen oder Wagennummern). Andere darzustellende Texttexturen müßen über Scripte gesteuert werden, weil die Berechnungsgrundlagen noch nicht vorhanden sind.

Grundlegendes:

In Omsi können die Passagiere nicht lesen. Der Einzigste der Anzeigen in oder an einem Bus lesen kann, ist nur der Spieler selbst. Ein Font ist nur eine Zusammenfassung einzelner Bildausschnitte, die von Omsi als einzelnes Bild ausgeschnitten und als komplexe Bildreihenfolge darstellt werden. So besteht ein Kennzeichen aus einigen Buchstaben, Zahlen und Zeichen. Zusammengesetzt ergeben diese, dass von Omsi generierte Kennzeichen. Der Font stellt diese zusammenhängenden Zeichen als einzelne Bildausschnitte zur Verfügung. Omsi stellt also im Prinzip, keine Buchstaben und Zahlen sinnvoll zusammen, sondern nur eine vorgegebene Auswahl von Bildausschnitten. Was zu sehen ist, ist Omsi dabei egal. Omsi codiert diese Bildausschnitte aus dem Font und weist jedem einzelnen Bildausschnitt einen Buchstaben, Zeichen oder eine Zahl zu.

Aufbau eines Font

Hier geht es um die allgemeine Übersicht, was die einzelnen Dateien beinhalten und was man beachten sollte.

Die OFT-Datei

Die OFT-Datei ist eine einfache Textdatei, in der eingetragen wird, wo sich ein Bild in der zugehörigen Grafikdatei genau befindet, wie groß diese Datei ist und mit welchem Code dieses Bild aufgerufen werden kann. Wie eine solche Datei aufgebaut ist, erklärt sich im Abschnitt Aufbau einer OFT-Datei für den Font. Es gibt nur zwei Befehle die in dieser Datei Anwendung finden. Hierunter wird festgelegt, wo ein Bild beginnt, endet und wie groß es ist. Außerdem werden die zugehörigen Texturgrafiken zu diesem Font zugewiesen und auch der Name des Font festgelegt. Alle Angaben in der Font.oft beziehen sich auf die Pixelposition in der Grafik. Man kann auch zwei OFT-Datei für zwei unterschiedliche Font's in einer Grafik zusammenfassen und in Omsi durch bestimmte festgelegte Bedigungen einbinden. Fehler in dieser Datei, werden von Omsi gemeldet und die Schrift wird nicht dargestellt.

Die Bildtextur

Ein Font besitzt zwei Bilddateien. Die Erste enthält das was man später sehen soll. Sie bestimmt eigentlich nur die dargestellte Farbe. In der model.cfg kann für die dargestellte Schrift eine Farbe eingegeben werden. Allerdings wird dann immer nur eine Farbe dargestellt. Möchte man eine Schrift im Bus aber mehrfarbig, also auch kunterbunt darstellen, so muß man diese Farbwahl im Font umsetzen. Das ergibt sich in der ersten Texturdatei. Damit das Ganze auch einen Sinn bekommt, wird eine zweite Textur gebraucht, die als Alphakanal verwendet wird. Also eine Schablone.

Die Alphatextur

Die zweite Bildtextur dient Omsi als Schablone. Hier sind auch nur zwei Farben zulässig. Alles was später nicht dargestellt werden soll, wird in dieser Textur schwarz gemacht. Die Texturen die später von der anderen Bilddatei genutzt werden sollen, werden in dieser Textur schneeweiß dargestellt. Mit anderen Worten, alles was weiß ist, wird später nicht durchsichtig und alles was schwarz ist, ist später in Omsi nicht sichtbar, weil es zu 100% tranzparent wird. Wichtig dabei ist, dass die Bildtextur und die Alphatextur beide Deckungsgleich sind. Beide Texturen, und das ist sehr wichtig, müßen beide die selben Pixelformate haben. Hat der Alphakanal eine Größe von 1024x256 Pixel, so muß die Bildtextur genau die selbe Pixelgröße ausweisen. Wird dies nicht eingehalten, so erkennt Omsi dieses als Fehler. Genauso verhält es sich, wenn sich Bildausschnitte außerhalb der Textur befinden. Hier ist also sorgfältiges arbeiten Pflicht.

Größe der Dateien

Die OFT-Datei, beinhaltet nur den Namen des Font, die zugehörigen Bildtexturen und die Positionen innerhalb der Bildtextur. Je nach Umfang des Fonts, kann die OFT-Datei einige hundert kB haben. Sie sollte aber nicht 1 MB überschreiten, da Omsi mit solch großen Dateien nicht zurecht kommt. Nutzlose Kommentare sollte also kurz gehalten werden und nur als kurze Information dienen.

Die beiden Bilddateien sollten einerseits nicht zu klein sein, da Omsi diese sonst nicht sauber darstellen kann. Hierbei würde die Schrift, die man in Omsi groß darstellen kann, sehr verpixelt und verschwommen erscheinen. Sind die Texturen zu groß, gibt es Probleme mit der Größendarstellung in Omsi und die Schrift erscheint nicht richtig.

Das grundlegende Format der Bilddateien ist dabei unerheblich. Es muß nicht wie bei Texturen üblich, ein rechteckiges Format eingehalten werden. So können alle Zeichen in einer Reihe dargestellt werden oder auch quadratisch angeordnet sein. Wichtig ist nur, das beide Texturdateien die selbe Pixelhöhe und -breite aufweisen. Sie müßen also deckungsgleich sein!


Aufbau der einzelnen Dateien eines Font

Aufbau und Erstellung der Alphatextur - Grundlegende Details

Die Alphatextur dient als Schablone. Hier sind nur die Farben schwarz und weiß zuläßig. Grautöne oder Farben lassen die Schrift später nicht mehrfarbig erscheinen, sondern verschwommen. Damit also die Zeichen und Bilder später sauber und scharfkantig dargestellt werden können, dürfen nur die Farben schwarz und weiß genutzt werden. Außerdem dürfen die Zeichen nicht zu klein schein. Für ein Kennzeichen benötigt man beispielsweise 26 Buchstaben, 10 Ziffern und zwei Zeichen. Ist die Textur hier zu klein (Beispiel: 200 x 111 Pixel) so erscheinen die Buchstaben und Zahlen später am Kennzeichen nicht scharfkantig, sondern haben leicht verschwommene Ränder. Hier sollte man die Schrift nicht zu klein darstellen. Wenn man bei der Erstellung der Textur in einem Bildbearbeitungsprogramm, zu kleine Zeichen setzt und das Bild vergrößert, dann kann man sehen, dass einige Pixel grau sind. Das ist nicht schlimm. Aber je breiter diese grauen Pixelflächen sind, desdo unschärfer wird ein dargestelltes Zeichen. Das fällt besonders, bei rundlichen Objekten auf oder Objekten mit diagonalen Abschnitten. Bei dem Buchstaben "N" als Beispiel, würden die beiden senkrechten Balken sehr scharf und sauber erscheinen, während der diagonale Balken verschwommen dargestellt wird. Für einen einfachen Font, sollten für ein Kennzeichen mindestens eine Texturgröße von 256x256 Pixel genommen werden. Allerdings sollte die Größe für diese geringe Anzahl, ein Format von 1024x1024 nicht überschreiten. Sind die Zeichen in der Alphatextur zu groß, werden sie in Omsi schlecht dargestellt, weil Omsi die Schrift erst runterscallieren muß und dabei können nichtmehr alle Pixel eines Zeichen's sauber dargestellt werden. Im schlimmsten Fall, wird die Schrift schlicht unleserlich.

Erstellung der Alphatextur

Für die Alphatextur kann man ein beliebiges Bildbearbeitungsprogramm nutzen. Man kann das in Windowseigene Bildbearbeitungsprogramm Paint nutzen, kostenfreie Bildbearbeitungsprogramme aus dem Internet runterladen (Paint.net, Gimp, Photo-Filtre, Photo-Scape u.s.w.) oder aber auch kostenpflichtige Bildbearbeitungsprogramme, (Adobe Photoshop, Nero PhotoSnap, Photopad oder sonstige).

Zuerst erstellt man eine einfache Datei, die man später bearbeiten kann. Als Beispiel soll hier die Erstellung eines Kennzeichen dienen. Wie bereits geschrieben, wird die Textur 256x256 oder auch 512x512 Pixel groß. Es kommt immer darauf an, wieviele Zeichen man erstellen möchte. Für ein Kennzeichen aus der DDR oder das alte Westdeutsche Kennzeichen, sind 38 Zeichen ausreichend. Hier werden jeweils nur die Buchstaben A-Z, die Ziffern 0 bis 9 und ein Bindestrich sowie das Leerzeichen (Space) benötigt. Für ein EU-Kennzeichen verdoppeln sich aber die Buchstaben und Zahlen, durch die beiden verwendeten Zeichenbreiten. Während ein normales Kennzeichen aus 3 bis 4 Buchstaben und 3-4 Ziffern, sowie zwei Zeichen besteht (also zusammen 9 Zeichen: AC-DC 678), kann es in größeren Landkreisen auch mehr Zeichenmöglichkeiten geben (Beispiel: Rügen, Ruhrgebiet), oder die Kennzeichen sind für bestimmte Fahrzeuge gedacht, auf dennen nur kleinere Kennzeichen angebracht werden können. Normale Zeichenbreite sind 47,5 mm für Buchstaben und 44,5 mm für Ziffern. Die schmalen Buchstaben sind 31mm und die Ziffern sind 29mm breit. Die schrifthöhe reduziert sich von 75mm auf 49mm, wenn das hintere Kennzeichen zweizeilig ist. Bei einzeiligen Kennzeichen, bleibt die Höhe erhalten.

Dieses Arbeitsblatt wird als erstes komplett schwarz eingefärbt. Denn man benötigt später nur die weißen Ausschnitte. Alles was schwarz ist, wird später nichtmehr sichtbar sein. Dadrauf schreibt man nun die einzelnen Buchstaben, Zahlen und Zeichen. Man kann jeden Buchstaben versuchen einzeln nachzuzeichnen, oder man nimmt vorgefertigte Schriften, die man bequem in Windows einsetzten kann. Jedes Zeichen wird so geschrieben, dass sich die einzelnen Zeichen nicht berühren oder überlappen. Außerdem sollte der abstand so gewählt werden, wie es später auf der Schrift notwendig ist. Omsi schneidet immer ein Bildausschnitt als Quadrat aus.

Am Ende wird diese Textur als Bitmap-Datei (BMP) abgespeichert.

Woher bekommt man Schiften?

Dafür gibt es im Internet sehr viele Seiten, wo man kostenlose Schriften downloaden und verwenden kann. Ich empfehle folgende Seiten:

  • Catfonts Diese Schriften sind kostenfrei, hochwertig und können auch in Payware-Projekten genutzt werden.
  • fonts2u
  • Dafont Nur für den privaten Gebrauch kostenfrei!
  • MyFont Mit Vorschau.
  • 1001 Schriften Sehr viele weitere Fonts.
Wie setzte ich Schriften in Windows ein?

Je nachdem welches Format die Schriftsätze haben, kann man diese auf unterschiedliche Arten in Windows einsetzen. TrueType-Schriftarten (ttf) und OpenType-Schriftarten (otf), kann man ab Windows 7 mittels Doppelklick öffnen und auf dem Vorschaubild, oben auf den Button "Installieren" drücken. Die Schrift wird automatisch installiert und steht sofort zur Verfügung. Bei einigen anderen Schrifttypen geht das leider nicht. Wenn Windows diese Schrifttypen unterstützt, kann man diese Schrift auch direkt in den Schrift-Odner von Windows einfügen. Pfad: C:\Windows\Fonts. Mit dem Einsetzen, werden kompatieble Dateien installiert. Man kann aber auch hier wieder verschiedene Programme zur Hilfe nehmen. Diese sogenannten Font Viewer sind meist kostenfrei.

* dp4 Font Viewer ist solch ein Freeware-Programm.

Damit kann man sich die Schriften vorher ansehen, aber auch bei umfangreichen Schriften, sich anschauen, auf welchen Zeichencode die jeweiligen Zeichen zu finden sind. Damit kann man auch Schriftarten installieren und wieder deinstallieren.

Erstellen einer Bildtextur

Die Bildtextur muß die selbe Größe haben, in Pixel, wie die Alphatextur. Diese macht man komplett schwarz, wobei dann alle Zeichen auch schwarz erscheinen. Würde man diese Grün, Rot oder Blau machen, können die Zeichen, diese Farbe annehmen. Möchte man eine farbige Plekette dazu erstellen, muß man an der selben Pixelposition, wo die Kreise für die Plaketten auf der Alphatextur sind, diese Pixel entsprechen einfärben. Damit ist auch diese Datei fertig.

Erstellen der OFT-Datei

Der Aufbau einer OFT-Datei gleich dem Aufbau einer cfg-Datei in Omsi. Auch hier gilt: Man kann reinschreiben was man will, solange kein Befehl am Zeilenanfang steht. Ein gültiger Befehl wird immer in eckigen Klammern gesetzt und muß immer am Zeilenanfang stehen, damit dieser erkannt und ausgelesen wird. Außerdem muß dieser Befehl allein in der Zeile stehen. Doe OFT-Datei ist eine einfache Textdatei, die man mit Word, Word++, Office Word, Open Word, oder andere Schreibprogramme einfach erstellen kann. Abgespeichert wird die Datei dann ganz normal als Textdatei.txt und abschließend die Texturendung umgeschrieben von txt zu oft. Die Abfrage, ob diese Änderung übernommen werden soll, auch wenn diese datei dann für diesen Rechner unbrauchbar werden könnte, muß mit OK bestätigt werden. In diese OFT-Datei sind nur zwei Befehle zulässig:

  • [newfont] hier mird ein neuer Zeichensatz definiert
  • [char] Hiermit wird ein einzelner Bildausschnitt definiert

Jeder dieser beiden Befehle hat dann eine bestimmte Anzahl an festgelegten Strings untereinander.

[newfont]

  • Name des Font ohne Dateiendung
  • zugehörige bitmap-Dateiname (Bildtextur) inklusive Dateiendung
  • zugehörige Aplhatextur mit Dateiendung
  • Höhe der Zeichen in Pixel, inklusive vertikalem Abstand
  • waagerechte Lücke zwischen den Zeichen

[char]

  • Codezeichen
  • Linker Pixel wo das Zeichen beginnt
  • Rechter Pixel wo das Zeichen endet
  • Oberster Pixel der Zeichenzeile

So könnten dann die Befehle in der OFT-Datei geschrieben stehen:

[newfont]
Kennz_DDR
DDR.bmp
DDR_alpha.bmp
49
4

Ab hier folgen die einzelnen Buchstaben, Zahlen und Zeichen:

[char]
A
1
29
2
[char]
B
35
69
2

Das heißt für den Buchstaben A: Der Buchstabe A beginnt bei der vertikalen Pixelspalte 1 und endet bei der vertikalen Pixelspalte 29 Die oberste Buchstabenreihe beginnt bei der waagerechten Pixelzeile 2. Alle Buchstaben sind 49 Pixel hoch, also ist der unterste Rand des Buchstaben bei Pixelzeile 51. Daraus ergibt sich für Omsi ein Bildausschnitt mit den Koordinaten von Pixel 1,2 bis Pixel 29,51

Besonderheit: Eine Besonderheit gibt es. Wird ein Zeichen abgefragt für demn es keinen Zeichencode gibt, wird Omsi diese Font-Datei als Fehlerhaft ansehen und damit nicht arbeiten. Unter jedem [char]-Befehl muß auch ein Zeichencode eingetragen sein. Das dürfte soweit nicht schwer sein. Die Besonderheit liegt beim Leerzeichen (Space). Hier wird also unter dem Befehl [char] ein einfaches Leerzeichen gesetzt. Fehlt an dieser Stelle das Leerzeichen, erkennt Omsi den gesamten Font nicht an und erscheint als Fehler. In der Alphatextur, wird kein Zeichen eingetragen, sondern es wird nur eine schwarze Pixelfläche gelassen.

Was sind Zeichencodes und welche sind zugelassen

Mit einem Zeichencode, wird von Omsi ein Bildausschnitt identifiziert. Wenn man Beispielsweise ein Bild in die Pixelkoordinaten 1,2 bis 29,51 einzeichnen würde, muß man diesem Bild ein Zeichencode zur Identifikation geben. Das sind also Schriftzeichen, die Omsi erkennen kann. Zugelassen sind damit alle Buchstaben (Groß- und Kleinschreibung) alle Umlaute (Ä; Ö; Ü; ß), alle Ziffern und alle Tastaturzeichen (+ - . , ; : € @ µ < * ~ = / & % $ § u.s.w.). Also alles, womit Omsi eine bestimmte Pixelfläche zuordnen kann. Somit können in einem Font, maximal 110 Zeichencodes vergeben werden (deutsche Tastatur). Das bedeutet aber nicht, dass man in einer Fonttextur, nur maximal 110 Pixelflächen benutzen kann. Man kann beliebig viele Pixelflächen verwenden. So könnte man zum Beispiel die 38 Zeichen aus dem DDR-Kennzeichen, die 38 Zeichen aus dem Westdeutschen Kennzeichen und die 76 Zeichen für das Eurokennzeichen innerhalb einer Textur unterbingen und dazu noch sehr viele Länderkennungen (blaues Feld auf dem EU-Kennzeichen). Mit der OFT-Datei braucht man dann nur auf eine bestimmte Gruppe von Bildausschnitten zugreifen. Also hätte man drei OFT-Fonts, die jeweils die selbe Bildtextur und Alphatextur verwenden. Allerdings sollte man der Übersicht wegen, große umfangreiche Schriftsätze mit einer einzelnen Textur versehen, damit die Texturgröße nicht überdimensionale Ausmaße annimmt.


Schriftflächen für Omsi erstellen

Was man für eine Schriftfläche benötigt

Für das Erstellen einer Schriftfläche in Omsi, ist ein 3D-Programm zwingend erforderlich. Der richtige Umgang mit diesem 3D-Programm, wird in diesem Tutorial vorrausgesetzt. Welches 3D-Programm genutzt wird, ist dafür unerheblich (zModeler, Blender, Cinema 4D, SketchUp etc.).


Schriftfläche erstellen

Mit dem 3D-Programm erstellt man eine einfache Fläche die vorzugsweise viereckig ist. Für das Kennzeichen, erstellt man eine einfache kleine Fläche, die das gesamte Schriftfeld überdeckt. Mehr als 2 Polygone muß dieses Schriftfeld nicht haben. Als nächstes wird dieses Schriftfeld gemappt, also eine Textur zugewiesen und die Textur auf dem Objektträger aufgebracht. Die benötigte Textur ist dabei irrrelevant, da diese lediglich als Platzhalter verwendet wird. Was auf dieser Textur zu sehen ist oder nicht zusehen ist, spielt für Omsi später keine Rolle. Für das Kennzeichen kann man beispielsweise die Trägertextur "D_kennzeichen.bmp" verwenden. Auf dem 3D-Objekt wird dann die gesamte Texturfläche, also alle Pixel der Textur gemappt. Das die Textur dann nur 8192 Pixel hat ist vollkommen egal. Für einen Bus benötigt man 2 Objektträger. Für das vordere und für das hintere Kennzeichen. Für Wagennummern, macht man das ganz genauso. Also wird nach dem mappen, dass 3D-Objekt dupliziert. Die einzelnen Flächen werden dann vor die Kennzeichenflächen des Fahrzeuges verschoben, bis diese etwa 1 Millimeter vor dem Kennzeichen sind und das Schriftfeld des Kennzeichens überdecken. Bei einem einzelnen Bus, der aus einem Körper besteht, kann man beide Texturflächen dann als ein Objekt exportieren. Bei den Fahrzeugnummer verhält es sich genauso. Solange alle Objektträger auf einem Buskorpus sind, können alle Nummernflächen als ein Objekt exportiert werden. Selbst wenn man im Fahrzeuginneren eine kleinere Fläche hat, oder eine größere auf einer äußeren Blechseite. Für Rundungen am Bus, muß die Fläche natürlich mehrere Polygone haben, damit sich die Trägerfläche am Buskörper anpassen läßt. Für einen Gelenkbus muß man aber die Flächen für jeden Fahrzeugteil seperat exportieren. Hat man mehrere Schriftflächen, beispielsweise in einem mehrzeiligen Drucker oder Informationssystem, dann muß für jede seperate Informationsabfrage ein eigenes Objekt exportiert werden. Das bedeutet ein Objektträger für die Infozeile (Liniennummer, Zielcode, Umlaufnummer, Haltestellencode), für die Haltestellenanzeige, Zielanzeige (wenn dise separat angezeigt werden soll), für die Verspätungs- / Verfrühungsanzeige und für weitere Schriftfelder, wie Uhrzeit, übernächste Haltestelle u.s.w. Man kann aber auch alle Objekte zu einem Zusammen fassen, wenn man die unterschiedlichen Anzeigen auf verschiedene Texturebenen aufgeteilt hat.


Schriftflächen in Omsi einsetzen

Zunächst sollten die 3D-Objekte mit dem x-to-o3d-Converter (im inoffiziellen SDK enthalten) in das Omsieigene o3d-Format convertiert werden. Als nächstes werden die o3d-Objekte in der model.cfg eingetragen. Diese Eintragungen finden ausschließlich in der model.cfg statt. Zuerst wird natürlich das Mesh (Objekt) eingetragen. Anschließend folgen die für dieses Mesh zugehörigen Funktionsbefehle.

  • Eintragung des Mesh.

[mesh] Kennzeichen.o3d

Hier wird also der Objektname mit der Dateiendung eingetragen.

  • Eintragung der Textur, wenn diese geändert werden soll.

[matl] D-kennzeichen.bmp

0

Hier folgen nach dem Befehl der verwendete und auf dem Objekt gemappte Texturname mit der Dateiendung. Darunter folgt die zugehörige Texturebene. Werden mehrere Texturebenen erstellt, dann folgt dieser Befehl in diesem Mesh-Abschnitt mehrmals.

  • Zugehörige Texttextur.

[useTextTexture]

X

Bei diesem Befehl ist die Schreibweise wichtig, denn es muß unbedingt auf die Groß und Kleinschribung geachtet werden. Ansonsten ist dieser Befehl für Omsi nicht lesbar. Das X gibt die Zahl an, an welcher Eintragungsfolge der Texttexturen dieses Mesh später zugreifen soll. Diese Eintragung folgt später.

  • Einstellung der Transparenz.

[matl_alpha]

2

Hier wird das gesamte Feld transparent eingestellt. Diese Transparenz richtet sich nach dem Alphalanal der gemappten Textur. Da diese Textur keinen Alphakanal beinhaltet, wird das ganze Objekt transparent. Die Schrift erscheint dann aus dem Font, wobei die Alphatextur als Maske aufgesetzt wird und die Bildtextur als Farbe gesetzt wird.

  • Zuordnung der Texttextur

[matl_textadress_clamp]

Mit diesem Befehl wird eine Textur einmalig dargestellt, wenn die Textur auf dem Objektträger gekachelt gemappt wurde, also mehrfach auf einer Textur erscheint.


Texttexturen erstellen

Am Anfang einer jeden model.cfg finden sich die Zugeordneten Variablennamen für die Repaints und darunter die Liste der Texttexturen. Hier sind zwei verschiedene Befehle möglich, womit man die Anzahl der Strings unter dem Befehl festlegt. Somit weiß Omsi, wieviele Zeilen nach dem Befehl ausgelesen werden müßen und welche Zeile für was genau steht.

  • [texttexture] - mit 8 folgenden Zeilen
  • [texttexture_enh] - mit 10 folgenden Zeilen

Automatisch zentrierte Ausrichtung

Der Befehl [texttexture] hat 8 Zeilen. Werden nicht alle 8 Zeilen beschrieben, gilt dieser Befehl als ungültig und Omsi zeigt einen Fehler an. Werden mehr als 8 Zeilen geschrieben, werden trotzdem nur die ersten 8 Zeilen ausgelesen. Alle weiteren Zeilen (Strings) sind für diesen Eintrag irrrelevant.

[textteture]

  1. Stringvariable
  2. Fontname
  3. Breite der Schrift in Pixel
  4. Höhe der Schrift in Pixel
  5. Monochrome Farbe oder Farbe der Bildtextur
  6. Farbcode Rot
  7. Farbcode Grün
  8. Farbcode Blau

Was die einzelnen Zeilen für eine Bedeutung haben, wird im Abschnitt Bedeutung der einzelnen Strings erklärt.

Manuelle Ausrichtung

Der Befehl [texttexture_enh] besitzt 10 Zeilen die ausgelsen werden. Auch hier gilt wieder, weniger eingetragen Zeilen werden als Fehler ausgegeben und mehr erstellte Zeilen werden ignoriert. Der Präfix _enh besagt also nur, wieviele String auszulesen sind.

[texttexture_enh]

  1. Stringvariable
  2. Fontname
  3. Breite der Schrift in Pixel
  4. Höhe der Schrift in Pixel
  5. Monochrome Farbe oder Farbe der Bildtextur
  6. Farbcode Rot
  7. Farbcode Grün
  8. Farbcode Blau
  9. Orientierung oder Ausrichtung der Schrift
  10. Pixel auf Raster ausrichten

Bedeutung der einzelnen Strings

Es folgen nur die Erklärungen, welcher String für was genau da ist:

Stringvariable

Die Stringvariable ist die Variable, womit Omsi erkennt, was dort auf dieser Texttextur dargestellt werden soll. Es ist also die Identifizierung welche Texttextur eingetragen wurde. Es gibt einige feste Stringvariablen, die nicht extra mit einem Systemmacro in einem Script eingetragen werden müßen. Die sind Omsi-seitig bereits fest programmiert. Die Stringvariablen, die nicht fest programmiert wurden, müßen im Script erscheinen (S.$.Stringvariable). Für das Kennzeichen und die Wagennummern sind diese bereits fest vorgegeben:

Wagennummer: number

Kennzeichen: ident

Weitere Stringvariablen müßen im Script eingetragen werden, damit Omsi weiß, welche Variable ausgelesen werden soll (gegebenenfalls, wo er diese Variable findet), ob dieser ausgelesene Wert umgerechnet werden soll und wie diese Information angezeigt werden soll. Das Ergebnis wird dann mit einem Variablennamen benannt, damit Omsi diesen Variablennamen später zuordnen kann (S.$.Stringvariable). Im ersten String unter [texttexture] erscheint dann diese Stringvariable, womit der Eintrag idenifiziert wird. Diese Stringvariable enthält nun Buchstaben, Zahlen und Zeichen (Zeichencodes), die Omsi wiederrum durch die Zeichencodes des Font ersetzt. Die gefundenen Masken der einzelnen Pixelflächen, werden dann zusammengestellt und können auf der Fläche dargestellt werden. Alles was auf der Alphatextur schwarz ist, wird komplett durchsichtig, während alles was weiß ist, mit der Pixelfläche auf der Bildtextur dargestellt wird. Die verwendete Stringvariable muß richtig geschrieben sein, damit Omsi diese Variable auch finden kann. Außerdem muß das Macro eingetragen sein und alle Variablennamen müßen verifiziert werden, sonst ist der Variablenname ungültig.

Fontname

Im zweiten String wird nun der Name des Font eingetragen, der Verwendet werden soll. Der Dateiname wird nicht mit eingetragen, weil der Dateiname immer OFT lauten muß. Andere Dateiendungen kann Omsi dafür nicht benutzen. Auch hier muß der Dateiname fehlerfrei eingetragen sien, damit Omsi den benötigten Font auch finden kann. Der Font muß sich im Omsi-Unterordner "Fonts" befinden.

Breite der Schrift in Pixel

Hier wird nun die Breite der Schrift angegeben. Entscheidend ist nicht die Breite der Schrift in dem Font, sondern die Pixel der Grundtextur.

Höhe der Schrift in Pixel

Die Höhe der Schrift wird ebenfalls anhand der Pixel der Grundtextur festgelegt. Zusammen mit der Breite kann somit eine Schrift größer oder kleiner als im Font dargestellt werden.

Monochrome Farbe oder Farbe der Bildtextur

Hier sind nur 2 Ziffern zuläßig.

  • 0 = Der Hintergrund aus der Bildtextur soll verwendet werden.
  • 1 = Der nachfolgende Farbcode soll verwendet werden.

Mit diesen Zahlen kann man also einstellen, ob alles mit einer monochromen Farbe dargestellt werden soll, oder ob die Farbe aus der Bilddatei verwendet werden soll. Für das Kennzeichen kann man also eine Frabe auswählen die für alle weißen Pixel in der Alphatextur des Font erscheint, wobei auch bunte Plaketten dann schwarz erscheinen würden. Mit dem Wert Null, wird die Farbe der Bildtextur verwendet, womit also unifarbene Zeichen möglich sind.

Farbcode Rot

Der Farbwert der roten Farbe. Dieser Wert kann von Schwarz (0) über Weinrot, Dunkelrot, Rot, Hellrot, Blasrot bis Weiß (255) verlaufen.

Farbcode Grün

Der Farbwert der grünen Farbe. Auch dieser Wert kann von Schwarz (0), über dunkelgrün, Grün, hellgrün bis Weiß erscheinen (255).

Farbcode Blau

Der Farbwert der blauen Farbe Hier ist alles nochmal in Blau, wie bei den anderen Farben auch.

Zusammen ergeben diese 3 Farbeinstellungen, in Omsi die Möglichkeit, insgesamt 16.974.593 verschieden Farben darzustellen. Die 3 Farbwerte werden zusammen gemischt.

Orientierung oder Ausrichtung der Schrift

Mit dem Prfix _enh werden diese und die folgende Zeile ausgelesen. Mit diesem String wird festgelegt, wie Omsi die Schrift auf dem Texturträger ausrichten soll. Dafür stehen folgende Möglichkeiten zur Verfügung

  • 0 = Mittig zentriert
  • 1 = Linksseitig angeordnet
  • 2 = Rechtsseitig angeordnet
  • 3 = Am besten über den seitlichen Abstand zentriert Die dargestellten Bilddateien werden also genau mittig gesetzt.
  • 4 = Zentriert über den linken Abstand, wenn dort doppelte Leerzeichen eingetragen wurden.
  • 5 = Zentriert über den rechten Abstand, wenn dort doppelte Leerzeichen eingetragen wurden.
Pixel auf Raster ausrichten

Hiermit kann die Schrift horizontal ausgerichtet werden, wobei nur zwei Möglichkeiten zur Verfügung stehen.

  • 0 = Ausrichtung der verfügbaren Schrifthöhe, wobei oben und unten die gleiche Pixelanzahl eingestellt wird.
  • 1 = Ausrichtung der Schrift, über die Höhe der Pixel des Fonts. Je nachdem wie der Font aufgebaut wurde, kann eine Schrift dann unten aufsitzen oder oben anliegen.

Zuweisung einer Texttextur zum Objekt

Die Reihenfolge, in der die Texttexture-Einträge vorgenommen werden ist hierbei entscheidend. Diese Zählung ist nullbasiert, heißt die Reihenfolge beginnt beim ersten Eintrag mit der 0, der zweite ist Eintrag 1, der dritte ist Eintrag 2 und so weiter. Diese Zählung findet sich auch in der model.cfg unter den jeweiligen Mesheinträgen wieder.

Unter dem Befehl:

  • Zugehörige Texttextur.

[useTextTexture]

X

steht das X für den Zählwert der Reihenfolge der Texttextur. Daher werden die meisten Texttextur-Einträge durchnummeriert, beginnend mit der Null.




Abschließend

Wenn ihr dieses Tutorial genau befolgt, sollte es euch leicht fallen, ein Kennzeichen zur Übung zu erstellen. Wenn man weiß, wie ein Kennzeichen oder Wagennummer erstellt wird, sind alle anderen Texttexturen sehr einfach, denn das Prinzip ist immer gleich.

So könnt ihr auch neue Fonts erstellen oder bereits vorhandene Fonts ändern, umstellen, mit weiteren Zeichen ergänzen oder fehlerhafte Zeichen berichtigen.


Quellen

  • diverse Fonts aus Omsi

Danksagung

  • Danke an Chrizzly92, dass er sich die Mühe gemacht hat, das Omsi-Wiki zu retten, bevor die ganzen wertvollen Tutorials für immer verschwinden!
  • Ich danke auch Modellbusse, der mir mal erklärte, wie man Kennzeichen umsetzt.

Anhang

Verzagt nicht gleich, wenn es beim ersten Mal nicht gleich funktioniert. Es ist noch kein Meister vom Himmel gefallen. Erstellt euch von allen Dateien, die ihr verändert wollt, immer Sicherungskopien. So könnt ihr fehlerhafte Dateien schnell ersetzen und nocheinmal ganz in Ruhe von vorne beginnen. Sichert auch die funktionierenden Dateien, damit ihr bei einer Neunstallation eure Änderungen wieder einsetzen könnt. Mit jedem weiteren Font den ihr erstellt, lernt ihr dazu und bekommt Erfahrungen, die euch beim nächsten Font helfen werden. Jeder neue Font wird einfacher, als der vorherige, den ihr erstellt habt.


--Tatra 20:23, 14. Jun. 2017 (CEST)