Jak przekonwertować FBX na glTF w Pythonie

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 Scene

Kroki 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.GLTFNone 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ściowyRozszerzenieJak określić
glTF 2.0 binarny.glbautomatyczne wykrywanie rozszerzenia (lub FileFormat.GLTF2())
glTF 2.0 JSON.gltfautomatyczne wykrywanie rozszerzenia (lub FileFormat.GLTF2())
Wavefront OBJ.objautomatyczne wykrywanie rozszerzenia
STL.stlautomatyczne wykrywanie rozszerzenia
Microsoft 3MF.3mfautomatyczne wykrywanie rozszerzenia (lub FileFormat.MICROSOFT_3MF_FORMAT())

Uwaga: FileFormat.GLTF2_BINARY, FileFormat.GLTF i FileFormat.MICROSOFT_3MFNone stub constants i nie należy ich przekazywać do scene.save(). Użyj automatycznego wykrywania rozszerzenia pliku lub metod fabrycznych pokazanych powyżej.

Zobacz także

 Polski