open3d寻找mesh的边缘

29 篇文章 2 订阅
29 篇文章 2 订阅
首先需要从mesh中创建一个o3d.geometry.HalfEdgeTriangleMesh
import open3d as o3d

mesh_temp = o3d.geometry.TriangleMesh()
mesh_temp.vertices = o3d.utility.Vector3dVector(mesh.vertices)
mesh_temp.triangles = o3d.utility.Vector3iVector(mesh.vertex_indices)
half_edge_mesh = o3d.geometry.HalfEdgeTriangleMesh.create_from_triangle_mesh(mesh_temp)



其次从half_edge_mesh中获取边缘列表:
boundary_list = half_edge_mesh.get_boundaries() 

但是该库对于halfedge的定义是比较严格的,如果有非流形面,或者一边被三个以上的面共享,则该mesh无法建立半边结构mesh,会有形如下列的问题告警:

RuntimeError: [Open3D Error] (class std::shared_ptr<class open3d::geometry::HalfEdgeTriangleMesh> __cdecl open3d::geometry::HalfEdgeTriangleMesh::CreateFromTriangleMesh(const class open3d::geometry::TriangleMesh &)) D:\a\Open3D\Open3D\cpp\open3d\geometry\HalfEdgeTriangleMesh.cpp:202: ComputeHalfEdges failed. Duplicated half-edges.
 

此时也不要慌,可以采用igl库来做边界的查找,具体代码如下:

如果想查找最长边界:

bourdary_vert_id = igl.boundary_loop(mesh_c.vertex_indices)

如果想找到全部边界Edge:

b_edgess = igl.boundary_facets(mesh_c.vertex_indices)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值