Hoe FBX naar glTF converteren in Python
Probleem
Ontwikkelaars moeten FBX 3D-modellbestanden converteren naar het glTF- of GLB-formaat voor gebruik in webviewers, game-engines en moderne renderpijplijnen. Aspose.3D behandelt dit met Scene.from_file() om het FBX-bestand te laden en scene.save() om de glTF-uitvoer te schrijven.
Opmerking over FBX-ondersteuning: Aspose.3D FOSS heeft experimentele FBX-ondersteuning. De FBX-tokenizer is geïmplementeerd, maar de parser heeft bekende structurele bugs: onjuiste CLOSE_BRACKET-afhandeling en onbeperkte recursie bij complexe geneste FBX-scopes. Complexe of grote FBX-bestanden kunnen RecursionError activeren. Eenvoudige vlakke-geometry FBX kan werken. Voor productiegebruik, geef de voorkeur aan COLLADA, OBJ of glTF boven FBX. Zie de FAQ voor meer details.
Voorvereisten
- Python 3.7 of hoger
- Installeer via pip:
pip install aspose-3d-foss
from aspose.threed import SceneConversiestappen
Stap 1: Laad het FBX-bestand
Gebruik Scene.from_file() om het FBX‑bestand te laden. Het formaat wordt automatisch gedetecteerd aan de hand van de .fbx‑extensie.
from aspose.threed import Scene
scene = Scene.from_file("input.fbx")Stap 2: Opslaan als glTF Binary (GLB)
Roep scene.save() aan met de .glb extensie om de uitvoer als een compact binair glTF‑bestand te schrijven. Het formaat wordt automatisch afgeleid van de extensie. Dit is de aanbevolen aanpak: één bestand, compact en breed compatibel.
# Use the .glb extension for binary GLB output (auto-detected)
scene.save("output.glb")Opmerking: FileFormat.GLTF2_BINARY en FileFormat.GLTF zijn None stub-constanten in de huidige bibliotheekversie en mogen niet worden doorgegeven aan scene.save(). Gebruik automatische detectie van bestandsextensies of de FileFormat.GLTF2()-fabrieksmethode in plaats daarvan.
Om in plaats daarvan op te slaan als JSON glTF:
scene.save("output.gltf")Stap 3: (Optioneel) Gebruik GltfSaveOptions
Voor meer controle over de glTF‑uitvoer, geef een GltfSaveOptions object door:
from aspose.threed.formats import GltfSaveOptions
opts = GltfSaveOptions()
opts.binary_mode = True
scene.save("output.glb", opts)Codevoorbeeld
Volledige FBX-naar-GLB-conversie in drie regels:
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")Ondersteunde uitvoerformaten
Bij het converteren vanuit FBX werken de volgende uitvoerformaten betrouwbaar:
| Uitvoerformaat | Extensie | Hoe te specificeren |
|---|---|---|
| glTF 2.0 binary | .glb | extensie automatisch detecteren (of FileFormat.GLTF2()) |
| glTF 2.0 JSON | .gltf | extensie automatisch detecteren (of FileFormat.GLTF2()) |
| Wavefront OBJ | .obj | extensie automatisch detecteren |
| STL | .stl | extensie automatisch detecteren |
| Microsoft 3MF | .3mf | extensie automatisch detecteren (of FileFormat.MICROSOFT_3MF_FORMAT()) |
Opmerking: FileFormat.GLTF2_BINARY, FileFormat.GLTF en FileFormat.MICROSOFT_3MF zijn None stub-constanten en mogen niet worden doorgegeven aan scene.save(). Gebruik automatische detectie van bestandsextensie of de hierboven getoonde fabrieksmethoden.