Export Blender -> FBX -> MSH

Willkommen in der Transport Fever Community

Welcome to the fan community of Transport Fever and Train Fever, the economic simulators of Urban Games. The community is free for you to share and inform yourself about the game. We cultivate a friendly and objective interaction with each other and our team will be happy to answer any questions you may have.

 

Registration and use is of course free for you.

 

We wish you a lot of fun and hope for active participation.

The Team of the Transport-Fever Community

  • Guten Tag,


    ich hab mich seit Train Fever nicht mehr mit Modding beschäftigt und war lange nicht mehr hier. Ich experimentiere gerade mit Modding in TPF2, scheitere aber schon am Anfang. Ich habe einen Testklotz gebaut, als FBX exportiert und (halbwegs) erfolgreich im Model-Editor importiert. Dabei traten zwei Probleme auf:


    (1) Die Textur wird nicht erkannt:
    unknown texture suffix. Texture ignored: jan-station-train-era_a-front_exit_lod0.fbm/front_exit.dds

    Ich hab das erstmal ignoriert und die Textur-Datei manuell in den richtigen Pfad kopiert und die material.mtl entsprechend angepaßt. Wenn es keinen besseren Weg gibt, kann ich damit leben. Es sei denn natürlich, dieses Problem ist Ursache für das zweite:

    (2a) Der importierte Testklotz ist falsch orientiert.
    (2b) Die (manuell kopierte) Textur ist verschoben.

    Blender:


    Model-Editor:


    Ich vermute, ich habe in Blender irgendwelche Einstellungen zur Orientierung falsch?


    Hat jemand ein paar Tips für mich?

  • Wenn ich die 90°-Drehung in Blender aufhebe, ist das Objekt erwartungsgemäß nicht mehr richtig orientiert:

    Die Buchstaben stehen für (B=back, T=top, F=front, L=left, R=right) und die Farben sind für die Achsen.


    Wenn ich das nun exportiere ist mein Objekt im Model-Editor hochkannt (die Achsen scheinen komplett durcheinander zu sein):


    Was meinst Du mit "Rotation und Skalierung zu applizieren"?


    Meine UV-Map paßt soweit ich sehen kann zur Textur (das leere Feld ist Unterseite):

  • Aufheben ist was anderes als applizieren. Mit dem Applizieren legst du fest, daß das Teil in der momentanen Fassung die Skalierung 1-1-1 und die Rotation 0°-0°-0° hat, das bereinigt also die ganzen Verschiebungen, die beim Bauen immer mal wieder passieren.


    Bei Blender 2.79 findest du die Funktion im Objektmodus unter Object - Apply - Rotation and Scale; bei 2.8x gibt es das zweifellos auch da irgendwo in der Nähe. Es gibt auch noch andere Möglichkeiten: nur Rotation oder nur Scale sind selbsterklärend, Apply - Location setzt den Ursprung des Teils auf 0-0-0, was manchmal auch nützlich ist.


    Zur verschobenen Textur: schau mal in dein Material rein. Ziemlich weit unten steht sowas:


    Code
            polygon_offset = {
                factor = 0,
                units = 0,
            },

    ...steht da bei dir auch zweimal 0?

  • Rein optisch könnte es sein, daß deine Texturdatei vertikal gespiegelt ist. Daher die blöde Frage: benutzst du eine .dds- oder eine .tga-Textur?


    Wenn du .dds im ME verwendest, dann mußt du die als .tga korrekt auf der Abwicklung sitzende Textur einmal vertikal spiegeln, damit sie als .dds auch richtig auf dem Teil sitzt. Kann es sein, daß das dein Texturenproblem löst?

  • Rein optisch könnte es sein, daß deine Texturdatei vertikal gespiegelt ist. Daher die blöde Frage: benutzst du eine .dds- oder eine .tga-Textur?

    Ich hab die Textur als TGA erstellt und dann in DDS umgewandelt.



    Quote

    Wenn du .dds im ME verwendest, dann mußt du die als .tga korrekt auf der Abwicklung sitzende Textur einmal vertikal spiegeln, damit sie als .dds auch richtig auf dem Teil sitzt. Kann es sein, daß das dein Texturenproblem löst?

    Das ist es! Das ist mir auch gerade aufgefallen! Diese Verschiebung um 5m paßt zu der Lücke, die ich über der B-Seite habe. Daher hab ich das mal hochgeschoben in der UV-Map und beim Import ist es wieder falsch. Man sieht aber eindeutig, daß das R gespiegelt ist:


    Das wirds sein, die Spiegelung der Textur hab ich nicht gemacht!


    Das Applizieren der Orientierung hat nichts gebracht, wie Du im Screenshot sehen kannst, aber ich werd damit noch weiter experimentieren.


    Du hast mir erstmal alle Mittel gegeben, um weiterzukommen, vielen Dank!

  • Sehr gut :) Nimm das Modell und die Abwicklung wie in Beitrag 3 weiter oben, aber spiegele die Textur einmal vertikal, dann sollte es passen.


    Noch ein Wort zur Applikation: die Rotation und Skalierung im Blender muß man in Kombination mit der Transformationsmatrix in der .mdl sehen. Ein auf 1-1-1 skaliertes und 0°-0°-0° rotiertes Teil braucht in der .mdl die Matrix {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, x, y, z, 1} (XYZ sind die Koordinaten des Teils im Modell), damit es im ME und im Spiel genau wie im Blender erscheint.


    Man kann auch ein entsprechend appliziertes Teil mit einer Matrix drehen. Hier gibt es einen Rechner, mit dem du aus einer Verschiebung, Skalierung und Rotation eine Matrix errechnen lassen kannst. Der Rechner hat aber seine Grenzen: er verträgt keine Kommazahlen. Falls du eine präzise Drehung haben möchtest, empfehle ich die alternative Methode. Eine Matrix kann man beinahe ersetzen durch die Zeile transf = transf.rotZYXTransl(transf.degToRad(Rz, Ry, Rx), vec3.new(x, y, z)), wobei Rx, Ry, Rz die Rotationen um die jeweiligen Achsen und x, y, z wieder die Koordinaten sind. Skalierung geht auf diese Weise allerdings nicht, und du mußt die dabei benutzten Funktionen am Kopf der .mdl deklarieren:


    Code
    local vec3 = require "vec3"
    local transf = require "transf"

    ...sonst gibt es einen CtD, weil er die Funktionen ohne die Deklarationen nicht kennt.


    Viele Möglichkeiten :) Bei Problemen schreib einfach nochmal.

  • Ja, also die Textur funktioniert jetzt. Die Orientierung krieg ich nicht in Blender hin, egal ob ich sie setze, zurücksetze oder appliziere. Da ist eigentlich kein Unterschied festzustellen. Wenn es im ME richtig aussehen soll, ist mein Object in Blender auf der Seite. Werd ich wohl über die MDL einstellen müssen.


    Danke nochmals!

  • ...nur ein letzter Gedanke: die positive X-Achse ist in TPF(2) vorne. Blender scheint die Y-Achse nach vorne zu drehen.

    Ja, ich hab meinen Block ja so gedreht, daß +X vorne ist.
    Warum das falsch exportiert wird, könnte an den Export-Einstellungen liegen, allerdings passen die auch nicht so ganz:


    Wenn Forward -Z ist, dann müßte im ME der schwarze Boden nach +X zeigen. Er zeigt aber nach +Y.
    Und wenn Up +Y ist, dann müßte die rechte Seite nach oben zeigen in ME - und das tut sie sogar!

    Ich hab mit den Einstellungen rumgespielt, aber interessanterweise scheinen sie keinerlei Einfluß zu haben. Vielleicht ist das ein Hinweis darauf, daß die Einstellungen nicht übernommen werden...


    Klingt für mich so, als wenn beim FBX-Export was nicht richtig eingestellt ist.

    Ja, das scheint mir auch so.

    Quote

    Die Einstellungen dafür sind hier gut erklärt: https://steamcommunity.com/sha…iledetails/?id=1970798355

    Genau, nach diesem Artikel hab ich mich gerichtet - dort sind die Einstellungen wie in meinem Screenshot.

    Quote

    Bei Apply Scale würde ich aber FBX Unit Scale anstatt FBX All einstellen, was bei mir immer zu Problemen mit der Skalierung geführt hat.

    Werde ich mir merken, danke für den Tip!

  • Sieht gut aus:


  • Irgendwie fehlt bei dir die Option "Use Space Transform" beim Export. Die liegt bei mir nach "apply unit" und ist angehakt. Ich hatte diesem bisher keine Beachtung geschenkt (ist so bei Default), aber im Tooltip steht, dass es die Rotationen anders speichert. Vielleicht hängt das damit zusammen. Ich weiß nicht, wo die Option bei deiner Version ist. Ich nutze momentan 4.2.3

BlueBrixx