Як конвертувати 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 | .glb | extension auto-detect (or FileFormat.GLTF2()) |
| glTF 2.0 JSON | .gltf | extension auto-detect (or FileFormat.GLTF2()) |
| Wavefront OBJ | .obj | extension auto-detect |
| STL | .stl | extension auto-detect |
| Microsoft 3MF | .3mf | extension auto-detect (or FileFormat.MICROSOFT_3MF_FORMAT()) |
Примітка: FileFormat.GLTF2_BINARY, FileFormat.GLTF та FileFormat.MICROSOFT_3MF є None заглушковими константами і не повинні передаватися у scene.save(). Використовуйте автоматичне визначення розширення файлу або фабричні методи, показані вище.