如何在 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_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 二进制 | .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()。使用文件扩展名自动检测或上述工厂方法。