切割 3D 实体并计算新体积

Cut a 3D solid and calculate the new volume

我想通过多个平面切割 3D 实体,显示这些平面并计算每个切割平面之间的体积。例如,在随后的图片中,我想确定 2 个绿色计划之间的体积。有没有人知道如何做到这一点?我正在使用 openGL,但也许另一种选择会更有效?

3D solid with sections

[编辑]

我终于实现了在浏览器上显示一个 stl 文件,计算它的体积,我可以将它分成 2 个 stl 文件,代表 2 个不同的切割。我再次使用相同的算法重新计算切割的体积。

现在的难点,就是将stl文件合二为一,在剪报之间留出一个小缝隙。所有的切屑都有相同的方向,所以应该更容易。

如果你有什么想法,请告诉我,谢谢!

不幸的是,OpenGL 做 none 这些事情

OpenGL 是一个图形渲染库,因此它几乎没有其他作用。

某些类型的 CAD 建模软件可能确实存在,可以执行您指定的操作,但您将不得不进行一些研究。在网络上搜索 "engineering cad programs"

编辑:

由于正在编写函数和数学来完成您提到的这些任务,并且只需要图形表示,OpenGL 是一个理想的解决方案。 3D 数据的图形表示正是 OpenGL 擅长的事情之一。

鉴于您提供的附加信息,这肯定是一个重要的项目。

老实说 - 最简单的部分可能是渲染。

您需要能够获取 STL 格式数据并将其转换为 OpenGL 可用于渲染的格式 - 通常是三角形和顶点。 Here is a good starting point.

您还需要编写和测试数学函数以从网格导出体积。 Here's a good starting point 在这个网站上!

随着您的进步,您会发现将任务分解成更小的任务然后单独处理会更容易。这是软件开发人员的核心技能,您应该尽可能多地练习。

虽然像您这样的任务一开始看起来很困难,但随着您分解问题,它们变得更容易解决。

finlaybob 给了你相当广泛的答案,但它缺少最重要的部分:)。

寻找 Constructive Solid Geometry。这是用于可以添加、减去和切割三角形网格的算法的通用术语。你会发现很多文章,但也有现成的库来完成这项任务。如果您更喜欢自己编写或使用现有的库 - 这是您的主观决定,我不会在这里帮助您。

当您为 CSG 选择解决方案时,剩下的应该简单得多:

  • 选择您的目标网格格式并从文件中读取网格(我相信您已经这样做了)。
  • 要么使用 CSG 用平面切割网格,要么将平面挤压成立方体并从网格中减去它们(取决于 CSG 具有的确切功能)。
  • 使用 finlaybob 答案中的建议计算其余部分的体积。

如果您知道您的模型或子模型的组合的一些数学表示,那么,切割部分是一个数学问题。

对于任何通用模型,也许使用 四面体 或某种 3D 网格 构建 3D 是一个很好的解决方案,因为数学对于与计划的交叉点非常容易。