Comment convertir FBX en glTF dans Python
Problème
Les développeurs doivent convertir les fichiers de modèle 3D FBX au format glTF ou GLB pour les utiliser dans les visionneuses web, les moteurs de jeu et les pipelines de rendu modernes. Aspose.3D gère cela avec Scene.from_file() pour charger le fichier FBX et scene.save() pour écrire la sortie glTF.
Note sur la prise en charge de FBX : Aspose.3D FOSS possède expérimental prise en charge de FBX. Le tokenizer FBX est implémenté mais l’analyseur présente des bugs structurels connus : gestion incorrecte de CLOSE_BRACKET et récursion non bornée sur des portées FBX imbriquées complexes. Les fichiers FBX complexes ou volumineux peuvent déclencher RecursionError. Un FBX à géométrie plate simple peut fonctionner. Pour une utilisation en production, privilégiez COLLADA, OBJ ou glTF plutôt que FBX. Voir le FAQ pour plus de détails.
Prérequis
- Python 3.7 ou version ultérieure
- Installez via pip :
pip install aspose-3d-foss
from aspose.threed import SceneÉtapes de conversion
Étape 1 : charger le fichier FBX
Utilisez Scene.from_file() pour charger le fichier FBX. Le format est détecté automatiquement à partir du .fbx extension.
from aspose.threed import Scene
scene = Scene.from_file("input.fbx")Étape 2 : enregistrer en glTF binaire (GLB)
Appeler scene.save() avec le .glb extension pour écrire la sortie sous forme d’un fichier glTF binaire compact. Le format est déduit automatiquement de l’extension. C’est l’approche recommandée : fichier unique, compact et largement compatible.
# Use the .glb extension for binary GLB output (auto-detected)
scene.save("output.glb")Remarque : FileFormat.GLTF2_BINARY et FileFormat.GLTF sont None des constantes factices dans la version actuelle de la bibliothèque et ne doivent pas être transmises à scene.save(). Utilisez la détection automatique de l’extension de fichier ou le FileFormat.GLTF2() méthode de fabrique à la place.
Pour enregistrer en glTF JSON à la place :
scene.save("output.gltf")Étape 3 : (Optionnel) utilisez GltfSaveOptions
Pour plus de contrôle sur la sortie glTF, passez un GltfSaveOptions objet :
from aspose.threed.formats import GltfSaveOptions
opts = GltfSaveOptions()
opts.binary_mode = True
scene.save("output.glb", opts)Exemple de code
Conversion complète FBX-vers-GLB en trois lignes :
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 sortie pris en charge
Lors de la conversion depuis FBX, les formats de sortie suivants fonctionnent de manière fiable :
| Format de sortie | Extension | Comment spécifier |
|---|---|---|
| glTF 2.0 binaire | .glb | détection automatique de l’extension (ou FileFormat.GLTF2()) |
| glTF 2.0 JSON | .gltf | détection automatique de l’extension (ou FileFormat.GLTF2()) |
| Wavefront OBJ | .obj | détection automatique de l’extension |
| STL | .stl | détection automatique de l’extension |
| Microsoft 3MF | .3mf | détection automatique de l’extension (ou FileFormat.MICROSOFT_3MF_FORMAT()) |
Note : FileFormat.GLTF2_BINARY, FileFormat.GLTF, et FileFormat.MICROSOFT_3MF sont None des constantes factices et ne doivent pas être passées à scene.save(). Utilisez la détection automatique de l’extension de fichier ou les méthodes de fabrique présentées ci‑dessus.