Как да конвертирате FBX към glTF с Python

Как да конвертирате FBX към glTF с Python

Проблем

Разработчиците трябва да конвертират FBX 3D моделни файлове във формат 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 константи в текущата версия на библиотеката и не трябва да се предават на 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 бинарен.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(). Използвайте автоматично откриване на разширението на файла или фабричните методи, показани по-горе.

Вижте също

 Български