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 ScenePasos 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 salida | Extensión | Cómo especificar |
|---|---|---|
| glTF 2.0 binario | .glb | detección automática de extensión (o FileFormat.GLTF2()) |
| glTF 2.0 JSON | .gltf | detección automática de extensión (o FileFormat.GLTF2()) |
| Wavefront OBJ | .obj | detección automática de extensión |
| STL | .stl | detección automática de extensión |
| Microsoft 3MF | .3mf | detecció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.