Πώς να μετατρέψετε το FBX σε glTF με Python
Πρόβλημα
Οι προγραμματιστές χρειάζονται να μετατρέψουν αρχεία μοντέλων 3D FBX στη μορφή glTF ή GLB για χρήση σε προβολείς ιστού, μηχανές παιχνιδιών και σύγχρονες γραμμές παραγωγής απόδοσης. Το Aspose.3D το διαχειρίζεται με Scene.from_file() για τη φόρτωση του αρχείου FBX και scene.save() για τη γραφή της εξόδου glTF.
Σημείωση σχετικά με την υποστήριξη FBX: Aspose.3D FOSS έχει πειραματική υποστήριξη FBX. Ο διαχωριστής FBX έχει υλοποιηθεί, αλλά ο αναλυτής έχει γνωστά δομικά σφάλματα: εσφαλμένη διαχείριση του CLOSE_BRACKET και απεριόριστη αναδρομή σε σύνθετες ένθετες περιοχές FBX. Πολύπλοκα ή μεγάλα αρχεία FBX μπορεί να ενεργοποιήσουν RecursionError. Απλό FBX επίπεδης γεωμετρίας μπορεί να λειτουργήσει. Για παραγωγική χρήση, προτιμήστε COLLADA, OBJ ή glTF αντί για FBX. Δείτε το FAQ για περισσότερες λεπτομέρειες.
Προαπαιτούμενα
- Python 3.7 ή νεότερη
- Εγκατάσταση μέσω pip:
pip install aspose-3d-foss
from aspose.threed import SceneΒήματα Μετατροπής
Βήμα 1: Φορτώστε το αρχείο FBX
Χρησιμοποιήστε Scene.from_file() για να φορτώσετε το αρχείο FBX. Η μορφή ανιχνεύεται αυτόματα από την επέκταση .fbx.
from aspose.threed import Scene
scene = Scene.from_file("input.fbx")Βήμα 2: Αποθήκευση σε glTF Binary (GLB)
Καλέστε το scene.save() με την επέκταση .glb για να γράψετε την έξοδο ως ένα συμπαγές δυαδικό αρχείο glTF. Η μορφή προκύπτει αυτόματα από την επέκταση. Αυτή είναι η συνιστώμενη προσέγγιση: μονοαρχείο, συμπαγής και ευρέως συμβατός.
# Use the .glb extension for binary GLB output (auto-detected)
scene.save("output.glb")Σημείωση: FileFormat.GLTF2_BINARY και FileFormat.GLTF είναι None stub constants στην τρέχουσα έκδοση της βιβλιοθήκης και δεν πρέπει να περαστούν στο scene.save(). Χρησιμοποιήστε την αυτόματη ανίχνευση επέκτασης αρχείου ή τη μέθοδο κατασκευής FileFormat.GLTF2() αντί αυτού.
Για αποθήκευση ως JSON glTF αντί αυτού:
scene.save("output.gltf")Βήμα 3: (Προαιρετικό) Χρησιμοποιήστε GltfSaveOptions
Για μεγαλύτερο έλεγχο της εξόδου glTF, περάστε ένα αντικείμενο GltfSaveOptions:
from aspose.threed.formats import GltfSaveOptions
opts = GltfSaveOptions()
opts.binary_mode = True
scene.save("output.glb", opts)Παράδειγμα Κώδικα
Ολοκληρωμένη μετατροπή FBX σε GLB σε τρεις γραμμές:
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")Υποστηριζόμενες μορφές εξόδου
Κατά τη μετατροπή από FBX, οι ακόλουθες μορφές εξόδου λειτουργούν αξιόπιστα:
| Μορφή Εξόδου | Επέκταση | Πώς να καθορίσετε |
|---|---|---|
| glTF 2.0 binary | .glb | αυτόματη ανίχνευση επέκτασης (ή FileFormat.GLTF2()) |
| glTF 2.0 JSON | .gltf | αυτόματη ανίχνευση επέκτασης (ή FileFormat.GLTF2()) |
| Wavefront OBJ | .obj | αυτόματη ανίχνευση επέκτασης |
| STL | .stl | αυτόματη ανίχνευση επέκτασης |
| Microsoft 3MF | .3mf | αυτόματη ανίχνευση επέκτασης (ή FileFormat.MICROSOFT_3MF_FORMAT()) |
Σημείωση: FileFormat.GLTF2_BINARY, FileFormat.GLTF, και FileFormat.MICROSOFT_3MF είναι None stub constants και δεν πρέπει να περαστούν στο scene.save(). Χρησιμοποιήστε αυτόματη ανίχνευση επέκτασης αρχείου ή τις μεθόδους κατασκευής που εμφανίζονται παραπάνω.