KI-Menschen

Bald ist es soweit: Unsere nächste Leitstellenfahrt findet statt. Weitere Informationen findet ihr hier.

  • In dem Artikel wird alles zum Thema KI-Fahrgäste und Passanten erklärt.

    1. Definition

    In OMSI besteht die Möglichkeit, KI-Menschen, die im Spiel als Passanten oder Fahrgästen fungieren, zu verändern bzw. selbst zu erstellen. Diese werden auch „Humans“ bezeichnet. Passanten bewegen sich auf erstellen Pfaden fort. Fahrgäste spawnen an Haltestellen, aber bewegen sich erst nach dem Aussteigen auf Pfaden der Karte. Die KI-Menschen können ebenfalls mit dem Spieler interagieren, indem sie ihn beim Einsteigen begrüßen, Tickets kaufen, sich über den Fahrstil oder die Temperatur im Bus beschweren.

    2. Dateistruktur

    2.1. Humans-Ordner

    Im OMSI-Hauptordner befindet sich das Humans-Verzeichnis, das eine Sammlung verschiedener Unterordner enthält. Jeder dieser Unterordner enthält Konfigurationsdateien, Texturdateien und Modelldateien, die für die Darstellung der Menschen im Spiel erforderlich sind.

    2.2. *.hum-Datei

    Die Datei mit der Erweiterung „.hum“ enthält Konfigurationsdaten für den KI-Mensch.

    2.2.1. Model-Schlüsselwort

    Code
    [model]
    {relativer Pfad zur .cfg-Datei}


    Dieser Abschnitt definiert den Pfad zur Modellkonfigurationsdatei.

    2.2.2. Seatheight-Schlüsselwort

    Code
    [seatheight]
    {Kommazahl – Sitzhöhe in Metern}


    Dieser Wert stellt die Sitzhöhe (im Bus, an Bushaltestellen) des Menschen ein. Es ist jedoch zu beachten: Je kleiner der Wert, desto höher sitzt der Mensch.

    2.2.3. Humangeom-Schlüsselwort

    Code
    [humangeom]
    {Kommazahl – Fußabstand in Metern}
    {Kommazahl – Höhe in Metern}


    Der erste Wert definiert den Abstand zwischen den Füßen des Menschen.

    Die zweite Kommazahl stellt die absolute Höhe des Menschen dar, welche bspw. in Blender abgelesen werden kann.

    2.2.4. Links-Schlüsselwort

    Auch wenn der Abschnitt „links“ heißt, müssen die Werte der rechten Körperseite eingetragen werden.


    Dieser Abschnitt enthält Informationen über die Positionen von verschiedenen Körperteilen des Modells. Diese Werte sollten aus bspw. Blender herausgelesen werden. Allgemein gilt, dass die x-Achse die Position des jeweiligen Körperteils nach vorne (negativer Wert) und hinten (positiver Wert) verschiebt. Außerdem verschiebt die y-Achse das Körperteil nach rechts oder links. Der z-Wert setzt die Höhe des Körperteils.

    Nicht alle Körperteile benötigen drei Werte!


    Das folgende Bild verdeutlicht die Positionen der Körperteile:

    2.2.5. Voice-Schlüsselwort

    Code
    [voice]
    {Ordnername im Ticketpackordner der jeweiligen Karte}


    Der Abschnitt setzt die verwendete Stimme des Menschen. Der Wert ist ein Verweis auf den Stimmordner, in dem die Audiodateien gespeichert sind. Dieser Stimmordner befindet sich im Hauptordner, unter TicketPacks\{TicketPackDerKarte}\{Stimmordner}.

    2.2.6. Walk_param-Schlüsselwort

    Code
    [walk_param]
    {Kommazahl - Schrittweite in Metern}
    {Kommazahl - Winkel des Oberarms in Grad}
    {Kommazahl - Animationsstärke Hände}
    {Kommazahl - Animationsstärke Hüfte}
    {Kommazahl - Animationsstärke Tailie}


    Hier wird die Animationsstärke von einigen Körperteilen und andere Parameter für die Gehbewegung des Menschen festgelegt. Der „Winkel des Oberarms“ beschreibt die Bewegung des Oberarms in Richtung Mitte des Menschen. Ein größerer Wert vergrößert dabei ebenfalls die Neigung des Oberarms in Richtung der Körpermitte.

    2.2.7. Mass-Schlüsselwort

    Code
    [mass]
    {Kommazahl – Masse in Tonnen}


    Dieser Abschnitt definiert die Masse des Menschen in Tonnen.

    2.2.8. Age-Schlüsselwort

    Code
    [age]
    {Ganzzahl – Alter}


    Dieses Schlüsselwort definiert das Alter des Menschen. Durch diese Einstellung weiß OMSI, welche Tickets für die jeweilige Person infrage kommen.

    2.3. Weitere Schlüsselwörter

    Andere Schlüsselwörter, die bspw. aus *.sco-Dateien bekannt sind und in die *.hum-Datei eingetragen werden, ignoriert OMSI. So ist es nicht möglich, Sounds, Scripts, o. ä. zu nutzen.

    2.4. *.cfg-Datei

    Die Datei mit der Erweiterung „.cfg“ enthält Konfigurationsdaten für das KI-Menschen-Modell. Obwohl sie ursprünglich als Modellkonfigurationsdatei bekannt ist, kann in diesem Kontext ein neues Schlüsselwort namens [setbone] verwendet werden. Alle anderen Befehle sind in dieser Datei wie gewohnt nutzbar. Der Pfad zu dieser Datei wird in der *.hum-Datei mit dem Modellschlüsselwort angegeben.

    2.4.1. Setbone-Schlüsselwort

    Code
    [setbone]
    {Name in Blender}
    {negative Ganzzahl – interne Knochennummer}


    Das Setbone-Schlüsselwort wird verwendet, um einen neuen Knochen für das Mesh eines Menschen zu definieren. Der Name kann frei gewählt werden, er muss jedoch dem Namen der jeweiligen Vertexgruppe in Blender entsprechen. Des Weiteren wird die negative Ganzzahl als interner Wert genutzt. Dieser Wert sollte eine Zahl zwischen -2 und -14 (beide inklusive) annehmen, da ein OMSI-Mensch insgesamt 13 Knochen besitzt. In der folgenden Tabelle kann der interne Wert in Abhängigkeit von der Position des Knochens eingesehen werden:


    Interner Wert Knochen Vorgeschlagener Name Position des Knochens in Blender
    -2 Oberschenkel – Links OS_L
    -3 Oberschenkel – Rechts OS_R
    -4 Unterschenkel – Links US_L
    -5 Unterschenkel – Rechts US_R
    -6 Oberarm – Links OA_L
    -7 Oberarm – Rechts OA_R
    -8 Unterarm – Links UA_L
    -9 Unterarm – Rechts UA_R
    -10 Hüfte Hip
    -11 Brust Main
    -12 Kopf Head
    -13 Hand – Links Hand_L
    -14 Hand – Rechts Hand_R

    3. Blender

    In diesem Abschnitt wird knapp erläutert, wie man die Mesh des Menschen in Blender für die Nutzung in OMSI vorbereitet und es dann richtig exportiert.

    3.1. Mesh

    Das Mesh kann eine beliebige Form haben. Zu beachten ist lediglich, dass das Mesh des Menschen eine T-Form bildet. Die Beine sollten also in einer Reihe stehen und die Hände sollten gerade nach +x und -x ausgestreckt sein. Der Mensch sollte dabei in +y-Richtung schauen.

    3.2. Vertexgruppen

    Damit der KI-Mensch in OMSI auch animiert wird, werden sog. Vertexgruppen benötigt. Wenn das Mesh des Menschen in Blender selektiert ist, können im „Properties-Fenster“ unter dem Reiter „Data“ die Vertexgruppen eingesehen werden:

    Ein OMSI-Mensch erfordert für die Animationen nur diese Vertexgruppen. Eine Armature wird nicht benötigt.


    Um Vertexgruppen zu erstellen und die zugehörigen Vertices diesen Gruppen zuzuordnen, stehen zwei Optionen zur Verfügung:

    1. Der manuelle Weg – „Weight Paint“: Dieser Modus kann verwendet werden, um die der Vertexgruppe zugehörigen Vertices zu selektieren. Diese Art kann ebenfalls mit der zweiten Möglichkeit kombiniert werden und ermöglicht eine hohe Genauigkeit der Auswahl.
    2. Der automatische Weg – Verwendung einer Armature: Nach der Erstellung der Armature werden die Vertexgruppen bei der Verbindung mit dem Mesh per Strg + P und beispielsweise With With Automatic Weights generiert.

    Blender zu erklären, würde den Rahmen dieses Wiki-Artikels sprengen. Weitere Informationen zu Blender können hier gefunden werden:

    3.3. O3D-Exporter

    Um das Mesh später mit den Vertexgruppen aus Blender zu exportieren, wird folgendes Blender-Add-on benötigt: Blender OMSI-Exporter von Road-hog 123.

    Nur der hier angegebene Exporter unterstützt das Exportieren der erstellten Vertexgruppen mit Skin Weights. Wichtig zu beachten ist, dass dieses Add-on aktuell mit den Blenderversionen 3.3 und 3.5 funktioniert.

    3.4. Export

    Beim Export muss das Mesh ausgewählt und per Add-on mit File > Export > OMSI Mesh (.o3d) exportiert werden. Beim Export muss das Häkchen bei „Skin Weights“ unbedingt gesetzt werden.

Teilen

CC BY-SA 4.0

Sämtliche Inhalte unseres OMSI-Wiki sind unter Creative Commons Namensnennung & Weitergabe unter gleichen Bedingungen (CC BY-SA 4.0) lizensiert.