Wie man FBX nach glTF in Python konvertiert
Problem
Entwickler müssen FBX‑3D‑Modelldateien in das glTF‑ oder GLB‑Format konvertieren, um sie in Web‑Viewern, Spiel‑Engines und modernen Rendering‑Pipelines zu verwenden. Aspose.3D erledigt dies mit Scene.from_file() zum Laden der FBX‑Datei und scene.save() zum Schreiben der glTF‑Ausgabe.
Hinweis zur FBX-Unterstützung: Aspose.3D FOSS bietet experimentelle FBX-Unterstützung. Der FBX-Tokenizer ist implementiert, aber der Parser weist bekannte strukturelle Fehler auf: falsche CLOSE_BRACKET‑Behandlung und unbeschränkte Rekursion bei komplexen verschachtelten FBX‑Scopes. Komplexe oder große FBX‑Dateien können RecursionError auslösen. Einfaches flaches Geometrie‑FBX kann funktionieren. Für den Produktionseinsatz bevorzugen Sie COLLADA, OBJ oder glTF gegenüber FBX. Siehe die FAQ für weitere Details.
Voraussetzungen
- Python 3.7 oder höher
- Installation über pip:
pip install aspose-3d-foss
from aspose.threed import SceneKonvertierungsschritte
Schritt 1: FBX‑Datei laden
Verwenden Sie Scene.from_file(), um die FBX-Datei zu laden. Das Format wird automatisch anhand der .fbx‑Erweiterung erkannt.
from aspose.threed import Scene
scene = Scene.from_file("input.fbx")Schritt 2: Als glTF‑Binärdatei (GLB) speichern
Rufen Sie scene.save() mit der .glb‑Erweiterung auf, um die Ausgabe als kompakte Binär‑glTF‑Datei zu schreiben. Das Format wird automatisch anhand der Erweiterung ermittelt. Dies ist der empfohlene Ansatz: Einzeldatei, kompakt und breit kompatibel.
# Use the .glb extension for binary GLB output (auto-detected)
scene.save("output.glb")Hinweis: FileFormat.GLTF2_BINARY und FileFormat.GLTF sind None Stub‑Konstanten in der aktuellen Bibliotheksversion und sollten nicht an scene.save() übergeben werden. Verwenden Sie die automatische Erkennung der Dateierweiterung oder die FileFormat.GLTF2()‑Fabrikmethode stattdessen.
Um stattdessen als JSON glTF zu speichern:
scene.save("output.gltf")Schritt 3: (Optional) GltfSaveOptions verwenden
Für mehr Kontrolle über die glTF‑Ausgabe übergeben Sie ein GltfSaveOptions‑Objekt:
from aspose.threed.formats import GltfSaveOptions
opts = GltfSaveOptions()
opts.binary_mode = True
scene.save("output.glb", opts)Codebeispiel
Vollständige FBX-zu-GLB-Konvertierung in drei Zeilen:
from aspose.threed import Scene
scene = Scene.from_file("input.fbx")
scene.save("output.glb") # .glb extension triggers binary GLB output automatically
print("Conversion complete: input.fbx -> output.glb")Unterstützte Ausgabeformate
Beim Konvertieren von FBX funktionieren die folgenden Ausgabeformate zuverlässig:
| Ausgabeformat | Erweiterung | Wie angeben |
|---|---|---|
| glTF 2.0 binär | .glb | Erweiterung automatisch erkennen (oder FileFormat.GLTF2()) |
| glTF 2.0 JSON | .gltf | Erweiterung automatisch erkennen (oder FileFormat.GLTF2()) |
| Wavefront OBJ | .obj | Erweiterung automatisch erkennen |
| STL | .stl | Erweiterung automatisch erkennen |
| Microsoft 3MF | .3mf | Erweiterung automatisch erkennen (oder FileFormat.MICROSOFT_3MF_FORMAT()) |
Hinweis: FileFormat.GLTF2_BINARY, FileFormat.GLTF und FileFormat.MICROSOFT_3MF sind None Stub-Konstanten und dürfen nicht an scene.save() übergeben werden. Verwenden Sie die automatische Erkennung der Dateierweiterung oder die oben gezeigten Fabrikmethoden.