我有一个3D模型的.obj和.ply文件。
我想要做的是读取这个3D模型文件,看看3D坐标列表是在3D模型空间的内部还是外部。例如,如果三维模型是半径为1的球体,则(0,0,0)将位于(True)内部,(2,0,0)将位于外部(False)。当然,我使用的3D模型并不像球体那么简单。
我想添加一些我考虑使用的方法。由于我使用的是Python,所以我考虑使用PyMesh,因为它们的交集特性看起来很有前途。然而,我所拥有的坐标列表不是网格文件,而仅仅是向量,因此它似乎不是适合使用的函数。
我还发现了使用光线投射的this方法。但是,如何使用PyMesh或任何其他Python工具来实现这一点是我需要建议的。
发布于 2020-08-25 13:57:56
从3D点沿X轴投射光线,并检查您找到的与外部对象的交点有多少。
根据每个轴上的交点编号(偶数或奇数),您可以了解您的点是在内部还是外部。
您可能希望在Y轴和Z轴上重复以改善结果(有时光线与平面重合,相交编号不可靠)。
发布于 2020-08-26 16:08:48
将我的评论转换为对未来读者的回答。
可以使用凸面外壳库检查某个点是否位于外壳线内。大多数库使用signed distance function来确定点是否在内部。trimesh是实现此功能的库之一。
https://stackoverflow.com/questions/63557043
复制相似问题