0

我正在使用 HelixToolkit 的 ModelImporter 类(Helix 3D Toolkit 是 WPF 的自定义控件和帮助程序类的集合。) 用于从 STL 文件加载 3D 对象(STereoLithography 是由 3D Systems 创建的立体光刻 CAD 软件的原生文件格式)。3D 模型包含 ModelGroup3D 对象,其中包含一个或多个 GeometryModel3D 对象,具体取决于模型由多少部分组成。我想计算整个 3D 模型的体积。我搜索了类似的问题,唯一回答的问题是这个计算 3D 网格的体积,我不确定如何为我的解决方案进行改革。由于我是新手,非常感谢任何帮助。

此外,我正在加载的模型都是封闭的网格。

谢谢

4

2 回答 2

2

First convert the surface mesh into a volume mesh. For example, you can convert the triangulated surface mesh into a tetrahedral mesh. One way to do this by constructing the constrained Delaunay triangulation of the surface triangles.

Next, you can get a good estimate of the volume enclosed by the surface mesh, by summing the volumes of all the elements in the volume mesh. For example, by summing the volumes of all the tetrahedrons in the mesh.

于 2013-05-10T07:10:20.593 回答
0

最简单的方法是计算所有三角形的高斯通量。对于“理论”,如果你的表面是封闭的,那么想象一个向量场正在穿过它,那么进来的东西等于出来的东西,也等于封闭的体积。有关微积分的详细信息,请检查“高斯定理”和 Green-ostrogradsky 积分。

计算它:

Vertex v1 ;
Vertex v2 ;
Vertex v3 ;
for (int i = 0;i< triangles.Count; i++)
{
v1 = triangles[i].P0;
v2 = triangles[i].P1;
v3 = triangles[i].P2;
Mesh.volume += (((v2.Y - v1.Y) * (v3.Z - v1.Z) - (v2.Z - v1.Z) * (v3.Y - v1.Y)) * (v1.X + v2.X + v3.X)) / 6;
}

如果您有任何问题,请不要犹豫,我可以开发您如何使用该功能。玩得开心。

于 2017-10-05T12:10:45.457 回答