Jak převést FBX na glTF v Pythonu
Problém
Vývojáři potřebují převádět soubory 3D modelů FBX do formátu glTF nebo GLB pro použití ve webových prohlížečích, herních enginech a moderních renderovacích pipelinech. Aspose.3D to řeší pomocí Scene.from_file() k načtení souboru FBX a scene.save() k zápisu výstupu glTF.
Poznámka k podpoře FBX: Aspose.3D FOSS má experimentální podporu FBX. Tokenizér FBX je implementován, ale parser má známé strukturální chyby: nesprávné zpracování CLOSE_BRACKET a neomezenou rekurzi u složitých vnořených FBX rozsahů. Komplexní nebo velké soubory FBX mohou vyvolat RecursionError. Jednoduché FBX s plochou geometrií mohou fungovat. Pro produkční použití upřednostněte COLLADA, OBJ nebo glTF před FBX. Viz FAQ pro více detailů.
Požadavky
- Python 3.7 nebo novější
- Instalace pomocí pip:
pip install aspose-3d-foss
from aspose.threed import SceneKroky převodu
Krok 1: Načíst soubor FBX
Použijte Scene.from_file() k načtení souboru FBX. Formát je detekován automaticky z přípony .fbx.
from aspose.threed import Scene
scene = Scene.from_file("input.fbx")Krok 2: Uložit do binárního glTF (GLB)
Zavolejte scene.save() s rozšířením .glb pro zápis výstupu jako kompaktní binární soubor glTF. Formát je automaticky odvozen z rozšíření. Toto je doporučený přístup: jednosouborový, kompaktní a široce kompatibilní.
# Use the .glb extension for binary GLB output (auto-detected)
scene.save("output.glb")Poznámka: FileFormat.GLTF2_BINARY a FileFormat.GLTF jsou None stub konstanty v aktuální verzi knihovny a neměly by být předávány do scene.save(). Použijte automatické rozpoznání přípony souboru nebo místo toho metodu továrny FileFormat.GLTF2().
Pro uložení jako JSON glTF místo toho:
scene.save("output.gltf")Krok 3: (volitelně) Použijte GltfSaveOptions
Pro větší kontrolu nad výstupem glTF předávejte objekt GltfSaveOptions:
from aspose.threed.formats import GltfSaveOptions
opts = GltfSaveOptions()
opts.binary_mode = True
scene.save("output.glb", opts)Ukázka kódu
Kompletní převod FBX na GLB ve třech řádcích:
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")Podporované výstupní formáty
Při převodu z FBX spolehlivě fungují následující výstupní formáty:
| Výstupní formát | Přípona | Jak specifikovat |
|---|---|---|
| glTF 2.0 binary | .glb | automatická detekce přípony (nebo FileFormat.GLTF2()) |
| glTF 2.0 JSON | .gltf | automatická detekce přípony (nebo FileFormat.GLTF2()) |
| Wavefront OBJ | .obj | automatická detekce přípony |
| STL | .stl | automatická detekce přípony |
| Microsoft 3MF | .3mf | automatická detekce přípony (nebo FileFormat.MICROSOFT_3MF_FORMAT()) |
Poznámka: FileFormat.GLTF2_BINARY, FileFormat.GLTF a FileFormat.MICROSOFT_3MF jsou None stub konstanty a nesmí být předány do scene.save(). Použijte automatické rozpoznávání přípony souboru nebo výše uvedené tovární metody.