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