Python - 处理 obj/stl 文件和 3D 网格

3
我从未以任何形式与3D对象合作过,特别是在Python中。我目前正在开发一个小型项目,其中包含不规则形状的stl和obj文件。我希望最终能够计算这些对象的表面积,并且能够找到物体上各个点的周长。我还希望能够找到各个周长之间的表面积。
我不需要一个简单的方法来完成这项任务(我不确定类似Blender的东西有多实用,但我想避免使用任何涉及GUI的东西)。这更像是一种练习,所以即使需要好几个月,我也宁愿输出代码而不是只有数字。
我找到并试玩过的一些工具是:
from stl import mesh

还有MeshPy,我尝试过但未能成功下载。

如果绝对不推荐使用Python,我也不介意学习其他语言。我只是不知道从哪里开始。

1个回答

1

两个月前我也遇到了同样的问题。我开始学习3D网格,并且必须创建一些例程来处理.stl文件。为了给您提供更好的回答,您可以告诉我您需要哪些具体的工具?

有几个Python包可以处理3D网格。最受欢迎的是stl、vtk、openmesh和meshpy。您可以根据自己的目的选择其中之一。也许最完整的是vtk,它有很多类和功能。但是,如果您来自非计算机背景(例如我是物理学家),这个包是面向对象的,所以您可能会在开始时遇到问题。

正如所说,如果您能分享您需要的实用程序,那么我们可以给出更准确的回答。祝你好运!


我对你所说的“实用工具”有点不清楚。我的项目主要目的是能够在物体的各个点上计算“周长”,然后能够计算这些周长之间的表面积。因此,在我的情况下,我将使用身体的扫描。例如,我想通过指定腿顶部和膝盖处的周长来找到某人大腿的表面积。类似这样的事情。这回答了你的问题吗? - Sergei
我不知道这对你是否有用,但我建议你使用numpy-stl包。我之前遇到过类似的问题:我需要计算给定网格的Willmore Flow,这仅仅是围绕外接球之间角度的总和。该包允许您打开网格(例如stl文件),并使用函数your_mesh.Points()获取所有与每个面的三个点(及其三个坐标)对应的3x3矩阵列表。 - markk borras
正如所说,这是非常基本和标准的内容,但这种简单性也意味着您可以更好地控制想要获取的功能。然而,通过阅读您的帖子,我了解到您有时间,因此我鼓励您从网格开始,并尝试从最初开始构建函数。我是回答帖子的新手,因此我希望这对您有用。 - markk borras

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接