Come convertire FBX in glTF con Python

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 Scene

Passaggi 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 outputEstensioneCome specificare
glTF 2.0 binario.glbestensione rilevamento automatico (or FileFormat.GLTF2())
glTF 2.0 JSON.gltfestensione rilevamento automatico (or FileFormat.GLTF2())
Wavefront OBJ.objestensione rilevamento automatico
STL.stlestensione rilevamento automatico
Microsoft 3MF.3mfestensione 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.

Vedi anche

 Italiano