Com convertir FBX a glTF amb Python
Problema
Els desenvolupadors necessiten convertir fitxers de model 3D FBX al format glTF o GLB per al seu ús en visualitzadors web, motors de joc i canals de renderització moderns. Aspose.3D gestiona això amb Scene.from_file() per carregar el fitxer FBX i scene.save() per escriure la sortida glTF.
Nota sobre el suport FBX: Aspose.3D FOSS té suport FBX experimental. El tokenitzador FBX està implementat però l’analitzador té errors estructurals coneguts: gestió incorrecta de CLOSE_BRACKET i recursió il·limitada en àmbits FBX aniuats complexos. Fitxers FBX complexos o grans poden desencadenar RecursionError. Un FBX simple de geometria plana pot funcionar. Per a ús de producció, preferiu COLLADA, OBJ o glTF en lloc de FBX. Consulteu les FAQ per a més detalls.
Requisits previs
- Python 3.7 o posterior
- Instal·la via pip:
pip install aspose-3d-foss
from aspose.threed import ScenePassos de conversió
Pas 1: Carrega el fitxer FBX
Utilitzeu Scene.from_file() per carregar el fitxer FBX. El format es detecta automàticament a partir de l’extensió .fbx.
from aspose.threed import Scene
scene = Scene.from_file("input.fbx")Pas 2: Desa a glTF Binary (GLB)
Crida scene.save() amb l’extensió .glb per escriure la sortida com a fitxer binari glTF compacte. El format s’infereix automàticament a partir de l’extensió. Aquest és l’enfocament recomanat: d’un sol fitxer, compacte i àmpliament compatible.
# Use the .glb extension for binary GLB output (auto-detected)
scene.save("output.glb")Nota: FileFormat.GLTF2_BINARY i FileFormat.GLTF són constants d’esbós None a la versió actual de la biblioteca i no s’han de passar a scene.save(). Utilitzeu la detecció automàtica de l’extensió del fitxer o el mètode de fàbrica FileFormat.GLTF2() en lloc.
Per desar com a JSON glTF en canvi:
scene.save("output.gltf")Pas 3: (Opcional) Utilitzeu GltfSaveOptions
Per a tenir més control sobre la sortida glTF, passa un objecte GltfSaveOptions:
from aspose.threed.formats import GltfSaveOptions
opts = GltfSaveOptions()
opts.binary_mode = True
scene.save("output.glb", opts)Exemple de codi
Conversió completa de FBX a GLB en tres línies:
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")Formats de sortida compatibles
En convertir des de FBX, els següents formats de sortida funcionen de manera fiable:
| Format de sortida | Extensió | Com especificar |
|---|---|---|
| glTF 2.0 binari | .glb | extensió autodetectada (or FileFormat.GLTF2()) |
| glTF 2.0 JSON | .gltf | extensió autodetectada (or FileFormat.GLTF2()) |
| Wavefront OBJ | .obj | extensió autodetectada |
| STL | .stl | extensió autodetectada |
| Microsoft 3MF | .3mf | extensió autodetectada (or FileFormat.MICROSOFT_3MF_FORMAT()) |
Nota: FileFormat.GLTF2_BINARY, FileFormat.GLTF i FileFormat.MICROSOFT_3MF són constants d’esbós None i no s’han de passar a scene.save(). Utilitzeu la detecció automàtica de l’extensió del fitxer o els mètodes de fàbrica mostrats anteriorment.