Как конвертировать FBX в glTF с помощью Python

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

См. также

 Русский