0

我有一个 3D 模型的 .obj 和 .ply 文件。

我想要做的是阅读这个 3D 模型文件并查看 3D 坐标列表是在 3D 模型空间内部还是外部。例如,如果 3D 模型是一个半径为 1 的球体,则 (0,0,0) 将在内部 ( True),而 (2,0,0) 将在外部 ( False)。当然,我使用的 3D 模型并不像球体那么简单。

我想添加一些我考虑使用的方法。由于我使用的是 Python,因此我想到了使用 PyMesh,因为它们的交集功能看起来很有希望。然而,我拥有的坐标列表不是网格文件,而只是向量,所以它似乎不是合适的函数。

我还发现了这种使用光线投射的方法。但是,我需要建议如何使用 PyMesh 或任何其他 Python 工具来做到这一点。

4

2 回答 2

0

从 3D 点沿 X 轴投射一条射线,并检查您找到多少与外部对象的交点。

根据每个轴上的交点编号(偶数或奇数),您可以了解您的点是在内部还是外部。

您可能希望在 Y 轴和 Z 轴上重复以改进结果(有时您的光线与平面重合,并且交点数不可靠)。

于 2020-08-25T05:57:55.503 回答
0

将我的评论转化为未来读者的答案。

您可以使用 Convex Hull 库来检查点是否在外壳内。大多数库用于signed distance function确定点是否在内部。trimesh是实现此功能的库之一。

于 2020-08-26T08:08:47.530 回答