Fahrzeug-SDK

Aus OMSIWiki
Wechseln zu:Navigation, Suche

Fahrzeug-SDK

Verfasser: Rüdiger Hülsmann

Import ins OMSIWiki: Marcel Kuhnt

Vorbemerkungen

Ziel des SDKs

Ziel dieses SDKs und Tutorials ist der Import von Fahrzeugen nach OMSI, deren Animation sowie die Einstellung fahrzeugspezifischer Parameter.

Dieses SDK behandelt weder die 3D-Modellierung von Fahrzeugen in Blender noch den Umgang mit Bildbearbeitungssoftware zum Erstellen von Texturen. Dies wird im Rahmen des vorliegenden SDKs als bekannt vorausgesetzt. Hinweise und Tipps zu 3D-Modellierung, den Umgang mit Blender und Bildbearbeistungssoftware beschränken sich somit auf den Umfang, der für den korrekten Import der Fahrzeuge notwendig ist.

Aufbau der Bus-Datei

Die Bus-Datei (*.bus, alternativ auch *.ovh) ist das wesentliche Element zur Definition eines Fahrzeugs. Sie enthält den Fahrzeugnamen, die zu verwendenden Modell- und Soundkonfigurationen, die Verweise auf die Scriptdateien sowie die allgemeinen physikalischen Daten. Im Aufbau ist sie eine normale OMSI-Konfigurationsdatei, das heißt, die bereits bekannten Konventionen zu Schlüsselwörtern und Kommentaren gelten auch hier.

Im Folgenden werden die enthaltenen Schlüsselwörter und die dazugehörigen Datensätze kurz erklärt.

Fahrzeugname und -beschreibung

[friendlyname]
{Hersteller}
{Fahrzeugtyp}
{Anstrich}

Definition der Einträge im Fahrzeugauswahlmenü. "Anstrich" ist der Name des Standardanstrichs, wenn keine Sonderlackierung (z.B. Werbung) aktiv ist.

[description]
{Beschreibung}
[end]

Fahrzeugbeschreibung im Fahrzeugauswahlmenü. "Beschreibung" ist ein Fließtext beliebiger Länge, welcher auch Zeilenwechsel enthalten darf. [end] markiert dann das Ende dieses Textes.

Fahrzeugnummer

[number]
{Dateiname.org}

Hiermit wird eine Wagennummerndatei festgelegt, welche sämtliche verfügbaren Wagennummern definiert. Der Eintrag fällt weg, wenn für das Fahrzeug keine Wagennummern vergeben werden sollen (bspw. bei privaten Fahrzeugen).

Kfz-Kennzeichen

Es kann gewählt werden zwischen zwei Varianten:

  1. Freie Wahl des Kennzeichens (bei KI-Fahrzeugen wird dann auf die Liste "registrations.txt" zurückgegriffen)
  2. Automatische Erzeugung des Kennzeichens anhand der Wagennummer

Für das erste Verfahren reicht der Befehl

[registration_free]

Für das zweite Verfahren wird der folgende Befehl verwendet:

[registration_automatic]
{Präfix}
{Postfix}

Das Kfz-Kennzeichen wird dann aus Präfix + Nummer + Postfix zusammengesetzt.

Beispiel: Sei die Wagennummer 3313, der Präfix "B-V" und der Postfix "H", dann ist das resultierende Kennzeichen für diese Wagennummer "B-V3313H".

Fahrzeuge, bei denen Wagennummer und Kfz-Kennzeichen voneinander abweichen, benötigen sowohl den Eintrag [number] als auch [registration_free]. Eine automatische Zuordnung von voneinander abweichenden Wagenummern und Kfz-Kennzeichen ist momentan noch nicht möglich.

Kilometerstand

[kmcounter_init]
{Baujahr}
{Jahreslaufleistung}

Aus diesen beiden Werten (Jahreslaufleistung in km) errechnet OMSI beim Platzieren des Fahrzeuges einen zum aktuellen OMSI-Datum passenden Kilometerstand

Zu verwendende Konfigurationsdateien

Konfigurationsdatei für den Fahrzeugsound:

[sound]
{Dateiname.cfg}

Konfigurationsdatei für den Fahrzeugsound im Falle des Einsatzes als KI-Fahrzeug (ist diese Datei nicht angegeben, wird auf die normale Sound-Konfigurationsdatei zurückgegriffen):

[sound_ai]
{Dateiname.cfg}

Konfigurationsdatei für das 3D-Modell

[model]
{Dateiname.cfg}

Konfigurationsdatei für die Laufpfade im Innenraum

[paths]
{Dateiname.cfg}

Konfigurationsdatei für Sitzplätze, Fahrscheinpositionen usw.

[passengercabin]
{Dateiname.cfg}

Import des 3D-Modells

Kommen wir nun zum interessanten Part: Dem Import eines fertigen Fahrzeugs in OMSI. An dieser Stelle werden die Bedienung von Blender und grundlegende Modellierungstechniken als bekannt vorausgesetzt, es soll hier rein um die OMSI-spezifische Ausrüstung der Modelle sowie deren Export und Import gehen. Werfen wir zunächst einen Blick auf das Modell, welches wir nun nach OMSI importieren wollen:

SDK-Demobus in Blender

Dieses auf die Schnelle entstandene Modell fiktiven Vorbilds ist natürlich nur sehr sparsam detailliert, dennoch verfügt es über die wesentlichen Funktionen, die für die Verwendung in OMSI wichtig sind.

Sinnvoll ist es, beim Durcharbeiten dieses Tutorials die beigefügte Modelldatei "Testbus.blend" [Hinweis: Ist hier im Wiki noch nicht verfügbar!!!] geöffnet zu haben, um das Beschriebene sogleich am echten Modell nachvollziehen zu können.

WICHTIG

Allgemeine OMSI-Baukonvention ist folgendes Koordinatensystem:

  • x-Achse nach rechts
  • y-Achse nach vorne
  • z-Achse nach oben

Außenmodell

Wagenkasten und Spiegel

Der erste Schritt zu einem neuen Fahrzeugmodell ist in der Regel die Einbindung des Wagenkastens.

Außenmodell des Wagenkastens

Das ist das Modell des Wagenkastens, also die reine Außenhülle des Fahrzeuges. Die Außen- und Innenspiegel sind hierbei bereits enthalten, da diese dieselbe Textur wie der Rest des Wagenkastens verwenden.

BAUTIPP

Starre, also nichtanimierte Bauteile, die später in OMSI die gleichen Materialeigenschaften haben sollen, sind nach Möglichkeit in einer o3d-Datei zusammenzufassen, wenn in den jeweiligen Einzelobjekten stets dieselbe Textur verwendet wird.

Für die Funktion der Spiegel genügt es, den Spiegelflächen eine Standard-Reflexionstextur zuzuweisen, die von OMSI automatisch als solche anhand des Dateinamens erkannt wird:

Rückspiegel

Hierbei handelt es sich um Texturen mit dem Dateinamen reflexion0.bmp, reflexion1.bmp, usw. Der Index 0...n verweist auf den dazugehörigen Eintrag der Reflexionskameras, die in der Bus-Datei definiert sind. Ist also die Reflexionskamera 1 für den rechten Außenspiegel zuständig, muss in Blender für den rechten Spiegel die Textur reflexion1.bmp verwendet werden. Alles Weitere erledigt OMSI automatisch.

Für den OMSI-Import erzeugen wir nun zunächst eine 3D-Datei im X-Format. Hierzu wird der Wagenkasten im Object Mode selektiert, danach folgende Funktion im Menü aufgerufen:

Aufrufen des X-Exporters unter Blender Korrekte Einstellungen für die folgende Konvertierung ins o3d-Format

Stellen Sie sicher, dass alle Optionen wie gezeigt eingestellt sind und exportieren Sie den Wagenkasten mit Klick auf Export Sel, wodurch nur das selektierte Objekt exportiert wird. Geben Sie der Datei einen entsprechenden Namen, z. B. testbus_body.x.

Nun muss die X-Datei noch ins OMSI-eigene o3d-Format konvertiert werden. Rufen Sie hierzu den O3D-Konverter auf:

O3D-Konverter

Klicken Sie auf Convert... und wählen Sie die eben erstellte X-Datei aus. Die O3D-Datei wird nun erzeugt.

Um diese nun in OMSI darzustellen, muss der Dateipfad in die model.cfg des Fahrzeugs eingetragen werden:


-------------------
Body
-------------------

[mesh]
modeldata\testbus_body.o3d

Die Überschrift Body dient hierbei als Kommentar zum leichteren Auffinden, was im Sinne der Lesbarkeit auch konsequent fortgeführt werden sollte. Jede O3D-Datei wird mit dem [mesh]-Schlüsselwort aufgerufen, welches als Parameter den relativen Dateipfad zur O3D-Datei benötigt. In diesem Fall liegt die O3D-Datei also im Unterordner modeldata.

Dann wollen wir uns das erste Ergebnis einmal in OMSI ansehen:

Erster Screenshot in OMSI!

Schon nicht schlecht, der Wagen wirkt aber noch ein wenig matt und spielzeughaft. Wir sollten noch ein bisschen metallischen Glanz hinzufügen.

Reflexionstexturen

Die für den Wagenkasten verwendete Textur testbus01.tga verfügt über einen Alphakanal, der wie folgt aussieht:

Alphakanal der Haupttextur


Schwarze Flächen sind hierbei vollständig matt, weiße Flächen komplett verspiegelt. Zu sehen ist beispielsweise das verchromte "SDK"-Logo sowie die matten Gummieinfassungen von Fenstern und Türen.

Achtung: Dieser Alphakanal wird in diesem Fall nicht für Transparenzen verwendet!

Um die Glanzeffekte einzubinden, muss in der model.cfg beim Eintrag des Wagenkastens Folgendes hinzugefügt werden:


[matl]
testbus_01.tga
0

[matl_envmap]
envmap_unscharf.bmp
1

[matl_bumpmap]
SD80_bump.bmp
0.05

[matl_transmap]

Das Schlüsselwort [matl] definiert eine neue Materialeigenschaft für die Textur testbus_01.tga. Mit der 0 wird festgelegt, dass diese Eigenschaften nur für die erste ("nullte") Instanz dieser Textur in der betreffenden O3D-Datei gelten (eine O3D-Datei kann mehrere Texturen gleichen Namens enthalten, dazu später mehr).

[matl_envmap] definiert eine bestimmte Reflexionstextur, die für den Spiegel- und Glanzeffekt verwendet werden soll. Der Glanz kann mit dem darunterliegenden Faktor (hier =1) auch abgeschwächt werden, ohne den Alphakanal der Textur bearbeiten zu müssen.

[matl_bumpmap] erzeugt eine sogenannte Bumpmap, mit der der Eindruck einer konturierten Oberfläche erzeugt werden kann, in diesem Fall der Eindruck einer leicht welligen Beblechung. Durch den Faktor von 0.05 tritt dieser Effekt aber nur schwach in Erscheinung.

Durch das Schlüsselwort [matl_transmap] wird OMSI mitgeteilt, dass der Alphakanal der Textur NICHT als Transparenz-Alphakanal interpretiert werden soll sondern als Reflexions-Alphakanal. Sollte eine externe tga- oder dds-Datei als Transparenztextur ("Transmap") verwendet werden, so wäre diese unter dem Schlüsselwort einzutragen. Da das hier nicht der Fall ist, kann das Schlüsselwort auch allein stehen.

WICHTIG

Wenn kein Transmap-Dateiname angegeben wird, ist unter dem Schlüsselwort trotzdem mindestens eine Leerzeile freizuhalten!

Das Ergebnis in OMSI:

Bus nun mit Reflexionseffekt

Das sieht doch schon deutlich realer aus! Zu erkennen ist, dass tatsächlich nur der Lack und das Frontlogo reflektieren, der Rest bleibt wie gewünscht matt.