Як конвертувати 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. Дивіться 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 передайте об’єкт 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.glbextension auto-detect (or FileFormat.GLTF2())
glTF 2.0 JSON.gltfextension auto-detect (or FileFormat.GLTF2())
Wavefront OBJ.objextension auto-detect
STL.stlextension auto-detect
Microsoft 3MF.3mfextension auto-detect (or FileFormat.MICROSOFT_3MF_FORMAT())

Примітка: FileFormat.GLTF2_BINARY, FileFormat.GLTF та FileFormat.MICROSOFT_3MF є None заглушковими константами і не повинні передаватися у scene.save(). Використовуйте автоматичне визначення розширення файлу або фабричні методи, показані вище.

Див. також

 Українська