bpasinski.de

TANE Scenery mit Blender erstellen

Gepostet am 15. Juni 2020 in Anleitung, Blender, TANE, Trainz

Achtung: Diese Anleitung wurde für TANE SP4 und Blender 2.79 erstellt! Trainz kann erst ab TANE SP4 mit FBX Files umgehen und ab Blender 2.8 wurde der alte Renderer inklusive klassischem Materialsystem von Blender entfernt.

Nachdem ich bereits eigene Assets für den Train Simulator erstellt hatte, wollte ich mich mal wieder mit Trainz beschäftigen und diese dort auch zum laufen kriegen. Dieser Post soll einen Einblick in meinen dabei verwendeten Workflow bringen und setzt Basiswissen im Umgang mit Blender voraus.

Materialsetup in Blender

Trainz folgt einer Namenskonvention beim verarbeiten von Materialien in FBX-Dateien. Diese entspricht dem Schema „custom.m.shader„, wobei custom ein beliebiger Materialname und shader einer der Shader ist. Eine Liste der Shader ist im Trainz Wiki zu finden.

Material- und Textursetup in Blender

In diesem Fall haben wir nur eine Textur, also nehmen wir den Shader onetex. Dieser Shader benötigt nur einen Texturslot, der die Textur des Objekts zugewiesen bekommt.

FBX Export

Besonders wichtig: Apply Scaling, Forward und Up.

Beim Export als FBX sind die Einstellungen des Exporters zu beachten. Bei mir funktionieren die oben zu sehenden Einstellungen, besonders wichtig sind Apply Scaling, Forward und Up.

Trainz Asset erstellen

Wenn die FBX-Datei erfolgreich erstellt wurde, kann das Asset in Trainz angelegt werden. Als erstes muss man bei MyTrainz angemeldet sein, damit man seine Autoren-ID bekommt. Ist dies getan, kann im Content Manager über den Menüpunkt Entwickler -> Neue Inhalte ein neues Asset angelegt werden. Um dieses anzuzeigen, kann als Filter „Meine Inhalte“ ausgewählt werden. Per Rechtsklickmenü -> Öffnen -> Im Explorer Bearbeiten kann das Bearbeitungsverzeichnis geöffnet werden. In dieses können die FBX-Dateien und die Texturen hineingezogen werden.

LODs

LODs werden über eine .LM.TXT-Datei gesteuert. Diese enthält Verweise auf die eigentlichen Meshes, angereichert mit Metainformationen für Levels of Detail. Eine .LM.TXT-Datei sieht beispielsweise so aus:

version 1.0

offset = 0.01;
calcPoint = center;
multiplier = 1.0;
renderCutOff = 0.0;

mesh("0.1") {
    name="reihenhaus1_lowpoly.trainzmesh";
}

mesh("0.3") {
    name="reihenhaus1.trainzmesh";
}

Die FBX-Files tauchen hier nicht direkt auf, weil diese beim übernehmen des Assets zu trainzmesh-Files konvertiert werden, welche auch verwendet werden sollten.

config.txt

Der nächste Schritt ist die config.txt. Diese Datei enthält die Informationen über das Asset. Eine leere config.txt enthält nur die Tags kuid und kind. Der Wert von kind muss von „unknown“ zu „scenery“ geändert werden.

In der config.txt sollten noch die folgenden Informationen stehen:

trainz-build                            4.5
username                                "TSHH Row House 1"
username-de                             "TSHH Reihenhaus 1"
category-class                          "BH"

mesh-table
{
  default
  {
    mesh                                "reihenhaus1.lm"
    auto-create                         1
  }
}

Das trainz-build-Tag definiert die Trainz-Version, für die das Asset erstellt wurde. Die 4.5 ist in diesem Fall TANE SP4. username ist der Name des Assets, der dem Benutzer angezeigt wird. Mit dem de-Suffix kann der Name lokalisiert werden, dabei können auch Sonderzeichen verwendet werden, da die config.txt UTF-8-kodiert ist. Die category-class ist die Kategorie des Objekts, eine Liste von gültigen Werten ist im Trainz Wiki zu finden. Um das Mesh auch anzuzeigen, wird ein mesh-table-Tag gesetzt. Dieses enthält ein Mesh (default) welches auf die .LM.TXT-Datei verweist. Dabei ist zu beachten, dass die Dateiendung .TXT dabei entfällt. Wichtig ist auch, dass auto-create auf 1 gesetzt ist, damit das Mesh angezeigt wird.

Asset übernehmen

Zurück zum Content Manager: Per Rechtsklick auf das eben bearbeitete Asset und den Menüpunkt Änderungen übernehmen wird das Asset in Trainz übernommen. Dies kann je nach Größe etwas dauern. Danach kann mit einem erneuten Rechtsklick und dem Menüpunkt Öffnen -> Objektvorschau das Objekt betrachtet werden.

Feinschliff

Das Asset enthält immer noch die FBX-Files, welche nicht mehr gebraucht werden. Um diese zu löschen, muss das Asset wieder in den Bearbeitungsmodus gesetzt werden. Danach lässt sich das Asset ohne Probleme wieder übernehmen.

Nun ist das Objekt fertig importiert und kann ingame bestaunt werden:

Das Fenster gibt sich zwar als TRS19 aus, dies ist jedoch TANE

Vulkan unter Linux – radeon & amdgpu mit Hybridgrafik

Gepostet am 14. September 2019 in Anleitung, GPU, Linux, Vulkan

Die Einrichtung von Vulkan unter Linux kann auf manchen Systemen mit Hybridgrafik etwas Konfigurationsaufwand bedeuten. Es folgt eine kleine Anleitung für alle, die auf die selben Probleme wie ich bei der Einrichtung von Vulkan stoßen. Als Distribution verwende ich Xubuntu 18.04.3.

Disclaimer

Die hier beschriebenen Schritte stellen einen tiefgreifenden Eingriff in die Systemkonfiguration dar, die ein System im nicht mehr bootfähigen Zustand zurücklassen können. Es kann sein, dass diese Schritte nur auf bestimmer Hardware zu einem brauchbaren Ergebnis führen.

Die Ausgangssitutation

Seit 2013 besitze ich einen MSI GX60 1AC Gaming Laptop mit Hybridgrafik (AMD A10-4600M mit integrierter Radeon HD 7660G und eine dedizierte Radeon HD 7970M), welchen ich ein paar Jahre problemlos mit Windows nutzen konnte. Da die Treibersituation allerdings schon ab 2016 schlechter wurde, habe ich mich entschlossen dieses Gerät auf Linux zu migrieren. Der konkrete Grund liegt beim Treiberinstaller: Sobald die ältere Grafikeinheit, die nicht mehr unterstützt wird, erkannt wird, bricht die Installation ab und hinterlässt ein System ohne jegliche Grafikbeschleunigung. In Verbindung mit automatischen Treiberaktualisierungen via Windows Update war dies eine ziemlich nervige Situation.

Unter Linux lief das Gerät ohne Konfigurationsaufwand wieder einwandfrei. Beide Grafikeinheiten werden erkannt, die Beschleunigung mit OpenGL 4 funktioniert und mit der Umgebungsvariable DRI_PRIME kann zwischen den Grafikeinheiten gewechselt werden.

Dort kam für beide Grafikeinheiten der radeon-Treiber zum Einsatz. Allerdings unterstützte der Treiber nur OpenGL als Grafik-API.

Die Einführung der Wine-Distribution Proton bei Steam brachte mit DXVK mir erstmals ein Grund, Vulkan zu nutzen.

Schritt 1 – Bootparameter einrichten

Um Vulkan nutzen zu können, muss der Linux-Kernel angewiesen werden, die richtigen Treiber zu laden. Dazu muss in der Datei /etc/default/grub die Zeile GRUB_CMDLINE_LINUX_DEFAULT ergänzt werden:

...
GRUB_CMDLINE_LINUX="quiet splash radeon.cik_support=0 amdgpu.cik_support=1 radeon.si_support=0 amdgpu.si_support=1"
...

Damit die Änderungen angewendet werden, muss noch folgendes ausgeführt werden:

$ sudo update-grub

Schritt 2 (optional) – X-Server konfigurieren

Unter Umständen ist eine Anpassung der Konfiguration des X-Servers notwendig. Bei mir war dies der Fall, da der X-Server mit zwei aktiven Grafiktreibern nicht zurecht kam und einfach nicht mehr startete.

In dem Verzeichnis /usr/share/X11/xorg.conf.d befinden sich die Dateien 10-amdgpu.conf und 10-radeon.conf. Diese Dateien müssen entfernt und durch eine neue Datei mit dem Namen 10-gpu.conf ersetzt werden. Die neue Datei muss dabei folgenden Inhalt bekommen:

Section "OutputClass"
	Identifier "AMD"
	Driver "modesetting"
	Option "DRI3"
EndSection

Schritt 3 – Neu starten

Das System muss einmal neu gestartet werden, um die Kernelparameter zu übernehmen.

Schritt 4 – Libraries installieren

Mit den Befehlen

$ sudo apt-get update
$ sudo apt-get install mesa-vulkan-drivers libvulkan1 vulkan-utils

werden die benötigten Libraries und ein paar optionale Tools installiert. Wenn nach der Installation das Tool „vulkaninfo“ keinen Fehler ausgibt, ist die Installation von Vulkan abgeschlossen.

Das Tool vulkaninfo gibt keine nennenswerten Fehler aus.

Schritt 4.1 – 32-Bit-Unterstützung

Damit auch 32-Bit-Anwendungen unterstützt werden, müssen noch 32-Bit-Versionen der Libraries installiert werden:

$ sudo apt-get install mesa-vulkan-drivers:i386 libvulkan1:i386

Danach können auch die 32-Bit-Anwendungen Vulkan nutzen.

Schritt 5 – Der Test

Im Paket vulkan-utils befindet sich das Tool vulkan-smoketest, welches dem Programm glxgears für OpenGL entspricht.

Wenn die Ausgabe der obigen entspricht, funktioniert Vulkan nun auf dem System.

Moin.

Gepostet am 2. Juni 2018 in Allgemein

Willkommen auf meiner Webseite/meinem Blog. Hier werde ich demnächst etwas über meine Ideen, Gedanken und Projekte zur Welt der (Informations-)Technik schreiben.