Come convertire FBX in glTF con Python
Problema
Gli sviluppatori devono convertire i file modello 3D FBX nel formato glTF o GLB per l’uso in visualizzatori web, motori di gioco e pipeline di rendering moderne. Aspose.3D gestisce questo con Scene.from_file() per caricare il file FBX e scene.save() per scrivere l’output glTF.
Nota sul supporto FBX: Aspose.3D FOSS ha supporto FBX sperimentale. Il tokenizzatore FBX è implementato ma il parser presenta noti bug strutturali: gestione errata di CLOSE_BRACKET e ricorsione illimitata su scope FBX nidificati complessi. File FBX complessi o di grandi dimensioni possono attivare RecursionError. FBX con geometria piatta semplice può funzionare. Per l’uso in produzione, preferire COLLADA, OBJ o glTF rispetto a FBX. Vedi le FAQ per maggiori dettagli.
Prerequisiti
- Python 3.7 o versioni successive
- Installa tramite pip:
pip install aspose-3d-foss
from aspose.threed import ScenePassaggi di conversione
Passo 1: Carica il file FBX
Usa Scene.from_file() per caricare il file FBX. Il formato viene rilevato automaticamente dall’estensione .fbx.
from aspose.threed import Scene
scene = Scene.from_file("input.fbx")Passo 2: Salva in glTF Binary (GLB)
Chiama scene.save() con l’estensione .glb per scrivere l’output come un file glTF binario compatto. Il formato viene dedotto automaticamente dall’estensione. Questo è l’approccio consigliato: file singolo, compatto e ampiamente compatibile.
# Use the .glb extension for binary GLB output (auto-detected)
scene.save("output.glb")Nota: FileFormat.GLTF2_BINARY e FileFormat.GLTF sono None stub constants nella versione corrente della libreria e non dovrebbero essere passati a scene.save(). Utilizza il rilevamento automatico dell’estensione del file o il metodo factory FileFormat.GLTF2() invece.
Per salvare come JSON glTF invece:
scene.save("output.gltf")Passo 3: (Opzionale) Usa GltfSaveOptions
Per un maggiore controllo sull’output glTF, passa un oggetto GltfSaveOptions:
from aspose.threed.formats import GltfSaveOptions
opts = GltfSaveOptions()
opts.binary_mode = True
scene.save("output.glb", opts)Esempio di codice
Conversione completa da FBX a GLB in tre righe:
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")Formati di output supportati
Durante la conversione da FBX, i seguenti formati di output funzionano in modo affidabile:
| Formato di output | Estensione | Come specificare |
|---|---|---|
| glTF 2.0 binario | .glb | estensione rilevamento automatico (or FileFormat.GLTF2()) |
| glTF 2.0 JSON | .gltf | estensione rilevamento automatico (or FileFormat.GLTF2()) |
| Wavefront OBJ | .obj | estensione rilevamento automatico |
| STL | .stl | estensione rilevamento automatico |
| Microsoft 3MF | .3mf | estensione rilevamento automatico (or FileFormat.MICROSOFT_3MF_FORMAT()) |
Nota: FileFormat.GLTF2_BINARY, FileFormat.GLTF e FileFormat.MICROSOFT_3MF sono costanti stub None e non devono essere passate a scene.save(). Utilizzare il rilevamento automatico dell’estensione del file o i metodi factory mostrati sopra.