如何在 Python 中将 FBX 转换为 glTF

如何在 Python 中将 FBX 转换为 glTF

问题

开发人员需要将 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 二进制 (GLB)

调用 scene.save() 并使用 .glb 扩展名将输出写入紧凑的二进制 glTF 文件。格式会根据扩展名自动推断。这是推荐的做法:单文件、紧凑且广泛兼容。

# Use the .glb extension for binary GLB output (auto-detected)
scene.save("output.glb")

注意: FileFormat.GLTF2_BINARYFileFormat.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 二进制.glb自动检测扩展名(或 FileFormat.GLTF2()
glTF 2.0 JSON.gltf自动检测扩展名(或 FileFormat.GLTF2()
Wavefront OBJ.obj自动检测扩展名
STL.stl自动检测扩展名
Microsoft 3MF.3mf自动检测扩展名(或 FileFormat.MICROSOFT_3MF_FORMAT()

注意: FileFormat.GLTF2_BINARYFileFormat.GLTFFileFormat.MICROSOFT_3MFNone存根常量,不能传递给scene.save()。使用文件扩展名自动检测或上述工厂方法。

另请参阅

 中文