Com convertir FBX a glTF amb Python

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 Scene

Passos 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 sortidaExtensióCom especificar
glTF 2.0 binari.glbextensió autodetectada (or FileFormat.GLTF2())
glTF 2.0 JSON.gltfextensió autodetectada (or FileFormat.GLTF2())
Wavefront OBJ.objextensió autodetectada
STL.stlextensió autodetectada
Microsoft 3MF.3mfextensió 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.

Vegeu també

 Català