我在obj文件中有一个带有闭合孔(缺少几何体的区域)的重建场景的3D网格。我在MeshLab中使用了Close Holes过滤器来恢复孔区域中的几何体
该网格有7728个顶点和2864个面。对于使用网格几何体进行操作,我使用OpenMesh库
我遵循OpenMesh Python绑定的官方tutorial。 我使用方法mesh.vf()和mesh.vv()获取每个顶点的相邻顶点和面。令人惊讶的是,我得到了6141个没有邻居的顶点——方法mesh.vf()和mesh.vv()返回空列表。这很奇怪,只要mesh.faces()获得2864个面
此外,我使用以下代码获得网格中所有顶点的列表
unique_vertices = []
all_vertices = []
print('Total number of faces: ', len(mesh.faces()))
for fh in mesh.faces():
# print('face ', fh.idx())
for vh in mesh.fv(fh):
# print('vertex ', vh.idx())
all_vertices.append(vh)
# print('')
unique_vertices = list(set(all_vertices))
此代码返回8592个唯一顶点
您知道OpenMesh API中出现这些奇怪行为的原因吗
8592是2864*3。因此,您的集合包含每个面的3个顶点。我假设引用同一顶点的不同句柄对象在集合中不相等。您是否尝试过将
vh.idx()
插入all_vertices
中闭合三角形网格的顶点数约为面数的一半。因此,对于网格,可以预期大约2864/2=1432个顶点。因此,我们预计总共7728个顶点中有6296个孤立顶点。由于您的网格未闭合,因此2864个三角形需要多几个顶点,这只剩下6141个孤立顶点
相关问题 更多 >
编程相关推荐