Як конвертувати FBX у glTF у Python

Як конвертувати 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. Дивіться the 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 (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 заглушкові константи у поточній версії бібліотеки і їх не слід передавати до scene.save(). Використовуйте автоматичне визначення розширення файлу або FileFormat.GLTF2() метод фабрики замість цього.

Щоб зберегти у вигляді JSON glTF:

scene.save("output.gltf")

Крок 3: (Необов’язково) Використайте GltfSaveOptions

Для більшого контролю над виводом glTF, передайте a 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.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 заглушкові константи і не повинні передаватися до scene.save(). Використовуйте автоматичне визначення розширення файлу або фабричні методи, показані вище.

Див. також

 Українська