Как да конвертирате 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(). Използвайте автоматично откриване на разширението на файла или фабричните методи, показани по-горе.