Cómo convertir FBX a glTF en Python

Cómo convertir FBX a glTF en Python

Problema

Los desarrolladores necesitan convertir archivos de modelo 3D FBX al formato glTF o GLB para su uso en visores web, motores de juego y pipelines de renderizado modernos. Aspose.3D lo maneja con Scene.from_file() para cargar el archivo FBX y scene.save() para escribir la salida glTF.

Nota sobre el soporte FBX: Aspose.3D FOSS tiene soporte FBX experimental. El tokenizador FBX está implementado pero el analizador tiene errores estructurales conocidos: manejo incorrecto de CLOSE_BRACKET y recursión ilimitada en alcances FBX anidados complejos. Archivos FBX complejos o grandes pueden activar RecursionError. FBX simple de geometría plana puede funcionar. Para uso en producción, prefiera COLLADA, OBJ o glTF sobre FBX. Consulte la FAQ para más detalle.

Requisitos previos

  • Python 3.7 o posterior
  • Instalar mediante pip: pip install aspose-3d-foss
from aspose.threed import Scene

Pasos de conversión

Paso 1: Cargar el archivo FBX

Use Scene.from_file() para cargar el archivo FBX. El formato se detecta automáticamente a partir de la extensión .fbx.

from aspose.threed import Scene

scene = Scene.from_file("input.fbx")

Paso 2: Guardar como glTF Binario (GLB)

Llame a scene.save() con la extensión .glb para escribir la salida como un archivo glTF binario compacto. El formato se infiere automáticamente a partir de la extensión. Este es el enfoque recomendado: de un solo archivo, compacto y ampliamente compatible.

# Use the .glb extension for binary GLB output (auto-detected)
scene.save("output.glb")

Nota: FileFormat.GLTF2_BINARY y FileFormat.GLTF son None stub constants en la versión actual de la biblioteca y no deben pasarse a scene.save(). Use la detección automática de la extensión del archivo o el método de fábrica FileFormat.GLTF2() en su lugar.

Para guardar como JSON glTF en su lugar:

scene.save("output.gltf")

Paso 3: (Opcional) Usar GltfSaveOptions

Para obtener más control sobre la salida glTF, pase un objeto GltfSaveOptions:

from aspose.threed.formats import GltfSaveOptions

opts = GltfSaveOptions()
opts.binary_mode = True
scene.save("output.glb", opts)

Ejemplo de código

Conversión completa de FBX a GLB en tres líneas:

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")

Formatos de salida compatibles

Al convertir desde FBX, los siguientes formatos de salida funcionan de manera fiable:

Formato de salidaExtensiónCómo especificar
glTF 2.0 binario.glbdetección automática de extensión (o FileFormat.GLTF2())
glTF 2.0 JSON.gltfdetección automática de extensión (o FileFormat.GLTF2())
Wavefront OBJ.objdetección automática de extensión
STL.stldetección automática de extensión
Microsoft 3MF.3mfdetección automática de extensión (o FileFormat.MICROSOFT_3MF_FORMAT())

Nota: FileFormat.GLTF2_BINARY, FileFormat.GLTF y FileFormat.MICROSOFT_3MF son constantes de sustituto None y no deben pasarse a scene.save(). Utilice la detección automática de la extensión del archivo o los métodos de fábrica mostrados arriba.

Ver también

 Español