ME Fehlermeldung bei fbx-Import aus Blender

Willkommen in der Transport Fever Community

Wir begrüßen euch in der Fan-Community zu den Spielen Transport Fever und Train Fever, den Wirtschaftssimulatoren von Urban Games. Die Community steht euch kostenlos zur Verfügung damit ihr euch über das Spiel austauschen und informieren könnt. Wir pflegen hier einen freundlichen und sachlichen Umgang untereinander und unser Team steht euch in allen Fragen gerne beiseite.

 

Die Registrierung und Nutzung ist selbstverständlich kostenlos.

 

Wir wünschen euch viel Spaß und hoffen auf rege Beteiligung.

Das Team der Transport-Fever Community


  • Hallo zusammen,


    was will mir folgende Fehlermeldung beim Absturz des ME sagen?


    Converting mesh: graz_tw260_lod0_b_innen_neu.002_lod0.msh 00000289CD9AFEB0

    has element materials: 1

    normals...

    uv0...

    uv0 refMode: eIndexToDirect

    uv1...

    uv0 refMode: eIndexToDirect

    urban_games/train_fever/src/Lib/model/model_util.cpp:349: void __cdecl model_util::CreateTangentVertexAttr(struct Mesh &,struct MeshGroup &): Assertion `!indPos.empty() && !indUv.empty()' failed.

    FbxImportPlugin::~FbxImportPlugin


    Unhandled exception!



    Schritt davor: ummappen der Trittstufen mit Zuweisung auf anderer dds - im A-Teil hat das problemlos funktioniert wie auf Screen zu sehen. Gemappte Flächen geprüft, Textur ist die Gleiche wie beim A-Teil. Das B-Teil war davor problemlos importierbar.


    Danke schon mal.

  • Danke Maik, ich habe ein upgedatetes UV-Layout für PSD exportiert, ansonsten da aber nichts gemacht. Wo liegen die UV-Maps bzw. wie komme ich aus der Nummer wieder raus? Bei Blender habe ich das hier gefunden:


    Multiple UV Maps

    You are not limited to one UV map per mesh. You can have multiple UV maps for parts of the mesh by creating new UV maps. This can be done by clicking the Add button next to UV maps list (in Object Data tab in the Properties Editor) and unwrapping a different part of the mesh. UV maps always include the whole mesh.


    Bei erneuten Export kam das hier:

    Unhandled exception!


    C:\GitLab-Runner\builds\1BJoMpBZ\0\ug\urban_games\train_fever\src\Lib\renderer\model\DynamicModelRenderer.cpp(217): Throw in function void __cdecl DynamicModelRenderer::Add(int,const class std::vector<int,class std::allocator<int> > &,const struct CMat4f *,int,const struct Box3 &,const int *,int,const float *,int)

    Dynamic exception type: struct AssertException

    std::exception::what: Unknown exception

    [struct error_infos::tag_assert_expression * __ptr64] = mesh->groups.size() == materials.size()


    G:\Steam\steamapps\common\Transport Fever 2>pause

    Drücken Sie eine beliebige Taste . . .


    Ich habe auch das Material noch mal neu zugewiesen, aber keine Änderung, A-Teil funktioniert, B nicht, gleiche Blender-Datei, gleiches Material, gleiches UV-Mapping - muss was anderes sein.

    5 Mal editiert, zuletzt von sabon ()

  • Jetzt hast du einem Mesh zu viele oder zu wenige materials zugeordnet.

    Das Spiel stört das nicht, daher kannste den Mod im Spiel laden und dann in der stdout gucken welches mesh er anmeckert. Es sei denn du weisst welches es sein könnte.


    Und zu dem anderen Problem das hatten wir hier erst:


  • Da ich Blender nur verwende, weil ich freundlicherweise die Datei zur Modifikation erhalten habe, habe ich die Befürchtung, durch Reparaturversuche die Probleme nur weiter zu verschlimmern - in Cinema habe ich solche Hindernisse überhaupt nicht. Da der ME beim Import abstürzt, kann ich kein fehlerhaftes mesh generieren, das vom Hauptprogramm zwecks besserer Fehlermeldung gelesen werden kann. Das Problemmesh ist "graz_tw260_lod0_b_innen_neu.002", das zugewiesene Material heißt "graz_tw260_innen_material".



    So soll es in etwa aussehen:



    Im B-Teil sieht es hingegen jetzt so aus - ist allerdings in Blender unauffällig, aber die transparente Linie wundert mich schon. Das ursprüngliche Material für die Stufen war "graz_tw_600_innen_material" - das hatte ich probehalber gelöscht, bringt aber keine Lösung:



    Besteht die Möglichkeit, das ich dir die Blenderdatei rüberschiebe oder wie soll ich genau vorgehen?

    Einmal editiert, zuletzt von sabon ()

  • Achja richtig.



    Mach doch mal das was ich dir schon oben verlinkt hatte.

    Im Blender unter Object Data --> UVMaps alle bis auf eine löschen, aber pass auf das die richtige drin bleibt sonst ist das mapping futsch.


    Die transparente Linie ist ein Fehler im Paint, da ist ein transparenter Strich drinne. Warum ist das innenmaterial überhaupt transparent? Liegen da irgendwelche transparenten Sachen mit drauf wie Fesnter oder sowas?


    Das blend nutzt mir nur bedingt was da ich die aktuelle Version von Blender ja nicht nutze und in den älteren das blend nicht geladen werden kann.

  • Würde ich ja gerne tun, je früher ich weiter käme, desto besser. Für alle, die ebenfalls das Menü (ggf. in dt. UI) suchen müssen, ich bin hier fündig geworden:


    https://blender.stackexchange.…here-is-the-uv-maps-panel


    Demzufolge wäre es hier:



    Wenn ich die UV-Map lösche, ist die auch weg, aber ich sehe keine Zweite. Oder ist es ein anderes Menü?


    Zur Transparenz: im Innenbereich gibt es Trennscheiben zur Tür bzw. auch zum Fahrersitz. Der Zustand im B-Teil ist ein Zwischenprodukt, d.h. Ummappung war noch nicht zugwiesen, aber schon an neuer Position - trotzdem wunderte mich die Linie. Wenn es nicht die UV-Map ist, könnte es ein Fehler im mesh sein. Deshalb habe ich das erwähnt.

    Einmal editiert, zuletzt von sabon ()

  • Ich hatte auch mal solche Probleme, ich kann mich nur noch Dunkel erinnern, aber ich meine wenn man zwei Objekte mit STRG+J(Join) zusammenfügt dann müssen die UV-Maps gleich heissen.

    Wenn bei der ersten dann das uvmapping weg ist musst halt die zweite löschen

    Wäre möglich, dass das Mapping auf beiden ist, dann wäre ein Teil davon weg.

    Ob man die noch zusammenführen kann weiss ich nicht.

  • Nö, die leere UVTex wars nicht. Das Mesh ließ sich vor Auftritt des Fehlers diverse Male problemlos importieren, jetzt heißt es nach wie vor:


    Unhandled exception!


    C:\GitLab-Runner\builds\1BJoMpBZ\0\ug\urban_games\train_fever\src\Lib\renderer\model\DynamicModelRenderer.cpp(217): Throw in function void __cdecl DynamicModelRenderer::Add(int,const class std::vector<int,class std::allocator<int> > &,const struct CMat4f *,int,const struct Box3 &,const int *,int,const float *,int)

    Dynamic exception type: struct AssertException

    std::exception::what: Unknown exception

    [struct error_infos::tag_assert_expression * __ptr64] = mesh->groups.size() == materials.size()


    G:\Steam\steamapps\common\Transport Fever 2>pause

    Drücken Sie eine beliebige Taste . . .


    Und eine UV-Map habe ich defnitiv auch nicht angelegt, schon gar nicht mit dem Namen. Die veränderten Areale habe ich mehrfach geprüft, ob da eine Fläche versehentlich nicht zugewiesen wurde, aber soweit ich das sehen konnte, ist da nichts auffälliges. Aber im Arbeitsumfang muss was passiert sein. Da keine verständliche Fehlermeldung kommt, weiß ich nicht, wonach ich genau suchen soll, die UV-Map-Anzahl ist es "leider" nicht, wäre auch zu einfach gewesen.

  • einem Mesh zu viele oder zu wenige materials zugeordnet.

    Immer noch das... eliminiere mesh aus der mdl bis es nicht mehr abschmiert oder prüfe welches mesh mehr oder weniger Einträge in der mdl wie im msh hat.


    Wenn das schon beim Import passiert dann ist da evtl im Blender schon ein material mehr zugeordnet wie genutzt wird. Da ich mit dem Plugin direkt die msh exportiere passiert mir das halt nicht, daher habe ich da auch nicht dran gedacht. Keine Ahnung wie das bei fbx ist. Da ich die Funktion das über den ME und fbx zu importieren noch nie genutzt habe weiss ich das nicht so genau.

  • Das A- und B-Teil haben die gleichen Materialien, in der mdl habe ich nichts verändert. Beim A-Teil gibt es kein Problem. Ich habe probehalber die Trittstufen und Leuchtstoffröhren aus dem B-Teil-mesh gelöscht, weil das die Elemente waren, die vor der Absturzserie in Arbeit waren und demzufolge noch nicht aktualisiert mit der neuen Textur dargestellt werden. Falls beim Mapping etwas schief gegangen wäre, müsste das durch die gelöschten Elemente ebenfalls gelöscht sein.


    Es hat sich aber nichts geändert. Wie hängt die mdl in diesem Zusammenhang damit drin? Es hat vorher funktioniert und dort keine Änderungen gegeben und ich würde ungern auf Verdacht in der mdl herumfuhrwerken.


    Per Cinema funktioniert der fbx-Import seit langem völlig problemlos und ist auch einfach im Handling:



    Laden der Textur-PSD, die mit allen Ebenen dargestellt wird. Die aktuelle UV-Ebene wird ohne jede Notwendigkeit zur Größenanpassung direkt eingefügt.



    Es muss nur darauf geachtet werden, das nach JEDEM Vorgang getrennt in Cinema und PSD gespeichert wird, sonst gehen Änderungen verloren.



    In PSD sind alle UV-Ebenen vorhanden und ich werde auch nicht gezwungen, in Cinema nicht gebrauchte Materialien anzulegen. Das erfolgt dann alles bequem in PSD.


    In Blender ist das jetzt das zweite Mal, das der Import nicht funktioniert und keine aussagekräftige Fehlermeldung vorliegt. Beim ersten Mal habe ich mit der Ursprungsdatei alle Änderungen noch mal durchgeturnt - das wären aber sehr viele. Ich wäre jetzt mit der Grundtextur fast fertig gewesen und nun schon wieder. Beim Plugin geht das meines Wissens nur mit einer älteren Blenderversion, die noch weniger Funktionen hat, wie die aktuelle. Deswegen wollte ich die alte Version vermeiden.


    Ist das mesh rückwärtskompatibel, so dass das Plugin doch genutzt werden kann?

    3 Mal editiert, zuletzt von sabon ()

  • Update: habe alle Objekte außer Glas dem Grundmaterial zugewiesen, dann noch mal das Glasmaterial für die entsprechenden Flächen. Drittes nicht mehr verknüpfte Material gelöscht. fbx-Import hat funktioniert:



    ABER: nach Austausch des meshes gibt es beim Laden des Fahrzeugs diese Meldung:


    prepare material ubo's: 1.268 ms

    filesystem error: Unknown exception

    filesystem error: Unknown exception

    adding archive res/construction/construction.zip

    adding archive res/models/animation.zip

    adding archive res/models/material.zip

    adding archive res/models/mesh-blob.zip

    adding archive res/models/mesh.zip

    adding archive res/models/model.zip

    adding archive res/textures/misc.zip

    adding archive res/textures/ui/ui.zip

    Using 24 UBOs, total 0 bytes

    prepare material ubo's: 0.918 ms

    filesystem error: Unknown exception

    filesystem error: Unknown exception

    filesystem error: Unknown exception

    filesystem error: Unknown exception

    Using 40 UBOs, total 0 bytes

    prepare material ubo's: 4.549 ms

    urban_games/train_fever/src/Lib/renderer/model/DynamicModelRenderer.cpp:217: void __cdecl DynamicModelRenderer::Add(int,const class std::vector<int,class std::allocator<int> > &,const struct CMat4f *,int,const struct Box3 &,const int *,int,const float *,int): Assertion `mesh->groups.size() == materials.size()' failed.


    G:\Steam\steamapps\common\Transport Fever 2>pause

    Drücken Sie eine beliebige Taste . . .


    Im Hauptprogramm läuft er:



    Was soll das jetzt wieder? Im Ernst jetzt alles neu mappen oder alle Mappings durchprobieren, bis der Problembär gefunden ist?

    Einmal editiert, zuletzt von sabon ()

  • Das habe ich doch jetzt schon paarmal geschrieben entweder du vergleichst ob die in der mdl den msh zugeordneten mtl mit denen im jeweiligen msh auch übereinstimmt oder du guckst einfach in die stdout welches msh es ist. Das steht da ja drin.

  • Ich ziehe es beim Antworten vor dies öffentlich zu tun, wenn die Antwort eventuell noch anderen nutzen könnte.


    Zitat

    wie sind mtls innerhalb von Blender aufgehängt



    Unter Material Properties sieht man die verschiedenen mtls. In dem Beispiel gibt es jetzt Material und Material.001. Dort sollten nur so viele Mtl sein wie du auch verwenden möchtest.




    Alternativ kann man solche Änderungen auch unter Shading vornehmen:


    Mit +/- kann man Slots für ein Objekt erstellen/löschen.

    Im ausgewählten Slot kann man nun ein Mtl auswählen:


    Wenn du nun das Material vom deinem Objekt entfernen möchtest kannst du einfach - drücken, es ist jedoch nicht gelöscht.


    Verwendest du beim Export "limit to selected Objects"?


    Zitat

    wie bekomme ich das mesh wieder im ME zum laufen?


    Wenn du die richtige Anzahl an Mtls in der Mdl angibst sollte das Msh auch wieder laufen.


    Materials { "bla/blaba/bla.mtl", "bla/blaba/bla.mtl", }, ungefähr so müssste das dann in der Mdl aussehen, ist aber eher unelegant wenn es nicht benötigt wird.

  • Danke dir emp, leider hat sich mein Zeitfenster wieder ziemlich geschlossen, insofern die späte Rückmeldung.


    Durch deine Screens ist mir klargeworden, das graz_...material eigentlich gar kein Material ist, sondern eine mtl, deswegen habe ich den Zusammenhang nicht gesehen. In Cinema gibt es diese Verbindung nicht.


    Für das Problemmesh sieht es so aus:



    In der mdl habe ich die nun überflüssige mtl gelöscht und das Fahrzeug wird im ME wieder angezeigt:



    Es ist ein Alptraum. Der ME meint:


    adding archive res/construction/construction.zip

    adding archive res/models/animation.zip

    adding archive res/models/material.zip

    adding archive res/models/mesh-blob.zip

    adding archive res/models/mesh.zip

    adding archive res/models/model.zip

    adding archive res/textures/misc.zip

    adding archive res/textures/ui/ui.zip

    StreamingTexturePool: setting hard memory limit: -1; soft limit: -1; cache limit: 1342177280

    filesystem error: Unknown exception

    filesystem error: Unknown exception

    filesystem error: Unknown exception

    filesystem error: Unknown exception

    Using 40 UBOs, total 0 bytes

    prepare material ubo's: 5.078 ms


    Wenn ich wieder Zeit habe, schaue ich mir im Detail an, was mit den Außenmesh passiert sein könnte.


    In der mdl war es vorher (stürzt ab):

    {

    materials = { "vehicle/tram/graz/tw_260/graz_tw260_innen_material.mtl", "vehicle/tram/graz/tw_260/graz_tw600_innen_material.mtl", "vehicle/tram/graz/tw_260/graz_tw260_innen_glaswand_material.mtl", },

    mesh = "vehicle/tram/graz_tw260/graz_tw260_lod0_b_innen_neu.msh",

    name = "b_innen",

    transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, },

    },


    jetzt ohne obige tw600


    {

    materials = { "vehicle/tram/graz/tw_260/graz_tw260_innen_material.mtl", "vehicle/tram/graz/tw_260/graz_tw260_innen_glaswand_material.mtl", },

    mesh = "vehicle/tram/graz_tw260/graz_tw260_lod0_b_innen_neu.msh",

    name = "b_innen",

    transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, },

    },


    Die Exportsettings aus Blender sind:



    also mit Limit auf Ausgewählte Objekte.

BlueBrixx