Jak przekonwertować FBX na glTF w Pythonie
Problem
Programiści muszą konwertować pliki modeli 3D FBX do formatu glTF lub GLB, aby używać ich w przeglądarkach internetowych, silnikach gier i nowoczesnych potokach renderowania. Aspose.3D obsługuje to przy użyciu Scene.from_file() do wczytania pliku FBX oraz scene.save() do zapisu wyjścia glTF.
Uwaga dotycząca obsługi FBX: Aspose.3D FOSS ma eksperymentalną obsługę FBX. Tokenizer FBX jest zaimplementowany, ale parser ma znane błędy strukturalne: nieprawidłowe obsługiwanie CLOSE_BRACKET oraz nieograniczoną rekurencję w złożonych zagnieżdżonych zakresach FBX. Złożone lub duże pliki FBX mogą wywołać RecursionError. Proste, płaskie modele FBX mogą działać. W zastosowaniach produkcyjnych lepiej używać COLLADA, OBJ lub glTF zamiast FBX. Zobacz FAQ po więcej szczegółów.
Wymagania wstępne
- Python 3.7 lub nowszy
- Zainstaluj przy pomocy pip:
pip install aspose-3d-foss
from aspose.threed import SceneKroki konwersji
Krok 1: Załaduj plik FBX
Użyj Scene.from_file(), aby załadować plik FBX. Format jest wykrywany automatycznie na podstawie rozszerzenia .fbx.
from aspose.threed import Scene
scene = Scene.from_file("input.fbx")Krok 2: Zapisz jako glTF Binary (GLB)
Wywołaj scene.save() z rozszerzeniem .glb, aby zapisać wynik jako skompaktowany binarny plik glTF. Format jest automatycznie wywnioskowany z rozszerzenia. Jest to zalecane podejście: pojedynczy plik, skompaktowany i szeroko kompatybilny.
# Use the .glb extension for binary GLB output (auto-detected)
scene.save("output.glb")Uwaga: FileFormat.GLTF2_BINARY i FileFormat.GLTF są None stałymi zastępczymi w bieżącej wersji biblioteki i nie powinny być przekazywane do scene.save(). Użyj automatycznego wykrywania rozszerzenia pliku lub metody fabrycznej FileFormat.GLTF2().
Aby zapisać jako JSON glTF zamiast:
scene.save("output.gltf")Krok 3: (Opcjonalnie) Użyj GltfSaveOptions
Aby uzyskać większą kontrolę nad wyjściem glTF, przekaż obiekt GltfSaveOptions:
from aspose.threed.formats import GltfSaveOptions
opts = GltfSaveOptions()
opts.binary_mode = True
scene.save("output.glb", opts)Przykład kodu
Pełna konwersja FBX‑do‑GLB w trzech linijkach:
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")Obsługiwane formaty wyjściowe
Podczas konwersji z FBX następujące formaty wyjściowe działają niezawodnie:
| Format wyjściowy | Rozszerzenie | Jak określić |
|---|---|---|
| glTF 2.0 binarny | .glb | automatyczne wykrywanie rozszerzenia (lub FileFormat.GLTF2()) |
| glTF 2.0 JSON | .gltf | automatyczne wykrywanie rozszerzenia (lub FileFormat.GLTF2()) |
| Wavefront OBJ | .obj | automatyczne wykrywanie rozszerzenia |
| STL | .stl | automatyczne wykrywanie rozszerzenia |
| Microsoft 3MF | .3mf | automatyczne wykrywanie rozszerzenia (lub FileFormat.MICROSOFT_3MF_FORMAT()) |
Uwaga: FileFormat.GLTF2_BINARY, FileFormat.GLTF i FileFormat.MICROSOFT_3MF są None stub constants i nie należy ich przekazywać do scene.save(). Użyj automatycznego wykrywania rozszerzenia pliku lub metod fabrycznych pokazanych powyżej.