如何在 .NET 中转换 3D 模型

如何在 .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 });

常见转换配方

SourceTargetCode
OBJ to GLBscene.Open("input.obj"); scene.Save("output.glb");用于网页查看器的二进制 glTF
FBX to STLscene.Open("input.fbx"); scene.Save("output.stl");用于 3D 打印的三角网格
glTF to COLLADAscene.Open("input.gltf"); scene.Save("output.dae");DAE 交换格式
STL to OBJscene.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都是独立的,可以并行处理。

 中文