Hur man konverterar FBX till glTF i Python
Problem
Utvecklare behöver konvertera FBX 3D-modellfiler till glTF- eller GLB-format för användning i webbvisare, spelmotorer och moderna renderingspipelines. Aspose.3D hanterar detta med Scene.from_file() för att läsa in FBX-filen och scene.save() för att skriva glTF-utdata.
Obs om FBX-stöd: Aspose.3D FOSS har experimentellt FBX-stöd. FBX-tokeniseraren är implementerad men parsern har kända strukturella buggar: felaktig hantering av CLOSE_BRACKET och obegränsad rekursion i komplexa nästlade FBX-omfång. Komplexa eller stora FBX-filer kan utlösa RecursionError. Enkla platta-geometri FBX kan fungera. För produktionsbruk, föredra COLLADA, OBJ eller glTF framför FBX. Se FAQ för mer detaljer.
Förutsättningar
- Python 3.7 eller senare
- Installera via pip:
pip install aspose-3d-foss
from aspose.threed import SceneKonverteringssteg
Steg 1: Ladda FBX-filen
Använd Scene.from_file() för att ladda FBX-filen. Formatet upptäcks automatiskt från .fbx‑tillägget.
from aspose.threed import Scene
scene = Scene.from_file("input.fbx")Steg 2: Spara till glTF-binär (GLB)
Anropa scene.save() med .glb‑tillägget för att skriva utdata som en kompakt binär glTF‑fil. Formatet härleds automatiskt från tillägget. Detta är det rekommenderade tillvägagångssättet: enfilig, kompakt och brett kompatibel.
# Use the .glb extension for binary GLB output (auto-detected)
scene.save("output.glb")Obs: FileFormat.GLTF2_BINARY och FileFormat.GLTF är None stub‑konstanter i den aktuella biblioteksversionen och bör inte skickas till scene.save(). Använd automatisk identifiering av filändelse eller FileFormat.GLTF2()‑fabrikmetoden istället.
För att spara som JSON glTF istället:
scene.save("output.gltf")Steg 3: (Valfritt) Använd GltfSaveOptions
För mer kontroll över glTF-utdata, skicka ett GltfSaveOptions-objekt:
from aspose.threed.formats import GltfSaveOptions
opts = GltfSaveOptions()
opts.binary_mode = True
scene.save("output.glb", opts)Kodexempel
Fullständig FBX‑till‑GLB‑konvertering på tre rader:
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")Stödda utdataformat
När du konverterar från FBX fungerar följande utdataformat pålitligt:
| Utdataformat | Filändelse | Hur man anger |
|---|---|---|
| glTF 2.0 binär | .glb | filändelse autodetektering (eller FileFormat.GLTF2()) |
| glTF 2.0 JSON | .gltf | filändelse autodetektering (eller FileFormat.GLTF2()) |
| Wavefront OBJ | .obj | filändelse autodetektering |
| STL | .stl | filändelse autodetektering |
| Microsoft 3MF | .3mf | filändelse autodetektering (eller FileFormat.MICROSOFT_3MF_FORMAT()) |
Obs: FileFormat.GLTF2_BINARY, FileFormat.GLTF och FileFormat.MICROSOFT_3MF är None stub‑konstanter och får inte skickas till scene.save(). Använd filändelse‑autodetektering eller fabriksmetoderna som visas ovan.