Assimp richtige Import Flags

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
Andy90
Beiträge: 70
Registriert: 08.10.2023, 13:02

Assimp richtige Import Flags

Beitrag von Andy90 »

Hallo :) ich habe mal wieder eine Frage. Dieses mehr geht es um Assimp. Ich würde gerne wissen welche Import Flags man nutzen sollte. Denn wenn ich

Code: Alles auswählen

var model = importer.ImportFile(path, Assimp.PostProcessPreset.TargetRealTimeQuality | Assimp.PostProcessSteps.PreTransformVertices);
nutze, dann ist das Model viel größer als es sein sollte.
Benutzeravatar
Jonathan
Establishment
Beiträge: 2452
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Assimp richtige Import Flags

Beitrag von Jonathan »

Naja, kein Flag skaliert ja einfach so dein Modell größter, das was eigentlich passiert ist ja etwas komplizierter.

Zunächst einmal: Asset Import ist immer ein kniffeliges Problem. Du hast deinen 3D Modellierer, der bestimmte Features hat, du hast ein Dateiformat, das bestimmte Features unterstützt und du hast eine 3D Engine, die bestimmte Features unterstützt. Dazwischen einen Exporter und einen Importer (hier Assimp) die das jeweils auf die nächste Ebene abbilden müssen. Da kann sehr viel schief gehen.

Geh halt mal alle Export-Einstellungen durch. Probier mal ein anderes Dateiformat aus. Probier mal die Datei mit einem anderen Viewer zu laden oder direkt wieder in den 3D Modellierer zu importieren.

In Blender kannst du ja beispielsweise Modelle skalieren, aber eben entweder im Edit- oder im Object-Mode. Wenn Modell im Edit-Mode groß ist, im Objekt-Mode aber runterskaliert ist, sieht es in Blender gut aus, der Exporter könnte aber die Object-Mode Skalierung ignorieren, das exportiere Modell ist dann zu groß. Es könnte auch an dem PreTransformVertex Flag liegen, das du benutzt. Aber genaueres lässt sich unmöglich sagen, wie oben skizziert ist Assimp nur ein Teil der Kette, über die anderen 4(!) hast du gar nix gesagt.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Andy90
Beiträge: 70
Registriert: 08.10.2023, 13:02

Re: Assimp richtige Import Flags

Beitrag von Andy90 »

Danke für deine Antwort Jonathan :) habe nun denke ich passende Flags gefunden. Das Problem mit dem Skalieren hatte ich tatsächlich nur bei dem FBX Format. Allerdings gibt es da wie du gesagt hast eine Skalierung Funktion beim Export. Wenn ich diese von 1.00 auf 0.01 setze passt alles.

Habe nun die folgenden:

Code: Alles auswählen

var model = importer.ImportFile(path, Assimp.PostProcessPreset.TargetRealTimeQuality | Assimp.PostProcessSteps.Triangulate);
Benutzeravatar
Jonathan
Establishment
Beiträge: 2452
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Assimp richtige Import Flags

Beitrag von Jonathan »

Andy90 hat geschrieben: 06.07.2024, 21:41Allerdings gibt es da wie du gesagt hast eine Skalierung Funktion beim Export. Wenn ich diese von 1.00 auf 0.01 setze passt alles.
Es mag halt sein, dass er versucht beim Exportieren von cm auf m umzurechnen, weil er annimmt, dass alles in physikalischen Größen modelliert ist. Blender hat ja z.B. die Z-Achse als Hoch-Richtung, mein Spiel auch, aber obj-Dateien benutzen normalerweise Y als Hochachse. Es ist dann jedesmal ein Krampf die Achsen im Exporter richtig zu konfigurieren, weil ein simple "Ich will das überhaupt nix konvertiert wird und die Daten einfach genau so rausgeschrieben werden, wie sie sind"-Flag im Exporter nicht existiert...

Am besten du suchst dir einmal eine Kombination aus 3D Modellierer und Exporter und Exportereinstellungen und Import-Flags für Assimp raus, schreibst die irgendwo auf einen Zettel und machst dann alles für jedes Asset immer genau gleich. Damit spart man sich langfristig sehr viel Ärger...
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Antworten