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