如何在 .NET 中转换 3D 模型
Aspose.3D for .NET 将格式转换变成两步操作:使用 Scene.Open() 加载源文件,然后使用 Scene.Save() 保存为目标格式。输出格式根据文件扩展名推断。
分步指南
步骤 1:安装软件包
dotnet add package Aspose.3D --version 26.1.0步骤 2:导入命名空间
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;步骤 3:加载源文件
var scene = new Scene();
scene.Open("input.fbx");步骤 4:以目标格式保存
scene.Save("output.glb");库会根据扩展名检测目标格式。支持的导出格式:OBJ、STL、glTF 2.0 / GLB、FBX、COLLADA 和 3MF。
步骤 5:使用特定格式的保存选项
要进行细粒度控制,请传递一个 SaveOptions 子类:
// FBX output — always produces binary FBX
// FbxSaveOptions exists but has no format-specific properties in this version
scene.Save("output.fbx");
// OBJ with flipped coordinate system
scene.Save("output.obj", new ObjSaveOptions { FlipCoordinateSystem = true });
// COLLADA with indented XML
scene.Save("output.dae", new ColladaSaveOptions { Indented = true });常见转换配方
| Source | Target | Code |
|---|---|---|
| OBJ to GLB | scene.Open("input.obj"); scene.Save("output.glb"); | 用于网页查看器的二进制 glTF |
| FBX to STL | scene.Open("input.fbx"); scene.Save("output.stl"); | 用于 3D 打印的三角网格 |
| glTF to COLLADA | scene.Open("input.gltf"); scene.Save("output.dae"); | DAE 交换格式 |
| STL to OBJ | scene.Open("input.stl"); scene.Save("output.obj"); | 用于建模工具的 Wavefront |
常见问题及解决方案
输出文件为空或非常小
确保源文件已成功加载。请在 Open() 之后检查 scene.RootNode.ChildNodes.Count。
转换过程中丢失的材料
并非所有格式都具有相同的材质属性。OBJ 材质使用 Lambert/Phong;glTF 使用 PBR。材质映射在不同格式之间是尽力而为的。
源与输出之间的比例差异
不同的工具使用不同的单位系统。导入时应用 ObjLoadOptions.Scale,或在保存前调整 node.Transform.Scale。
常见问题 (FAQ)
我可以将 PLY 转换为其他格式吗?
PLY 仅支持导入。加载 PLY 文件并保存为任意导出格式(OBJ、STL、GLB、FBX、COLLADA)。
转换是否保留动画?
当两个格式都支持动画数据时(例如 FBX 转 glTF),动画数据(AnimationClip)会被保留。STL 和 OBJ 不携带动画数据。
我可以批量转换多个文件吗?
为每个文件在循环中创建一个新的Scene。每个Scene都是独立的,可以并行处理。