首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >完成部分网格并使其变得紧密

完成部分网格并使其变得紧密
EN

Stack Overflow用户
提问于 2020-11-30 06:31:32
回答 2查看 607关注 0票数 2

我正在从RealSense相机捕获点云,并使用Trimesh库将它们转换为网格。问题是我只能得到一个非水密的网格。我如何“完成”网格并使其密封性?

我试过了

代码语言:javascript
运行
复制
trimesh.repair.broken_faces(mesh, color=[255, 0, 0, 255]) 

但这似乎并没有完全起到作用。我试着创建一个凸包:

并试图在两者之间进行联合,但最终以:

代码语言:javascript
运行
复制
ipdb> mesh.union(ch,engine='scad')                                                                                             
*** subprocess.CalledProcessError: Command '['/usr/bin/openscad', '/tmp/tmpqrdvbdd2', '-o', '/tmp/tmpvdzjmkgm.off']' returned non-zero exit status 1
ipdb> mesh.union(ch,engine='blender')                                                                                          
*** subprocess.CalledProcessError: Command '['/usr/bin/blender', '--background', '--python', '/tmp/tmp9_5phhhj']' returned non-zero exit status 127

而且我还会丢失来自源网格的RGB信息。如何使用凸包完成网格,同时保留所有已知的RGB值?

编辑:我将指针移动了一点。我查看了凸壳的面法线,并提取了所有指向侧面和下方的法线。我创建了一个新的网格,使用旧的网格顶点和由旧面+凸壳中的新面定义的面。

这让我更接近我的目标,但现在我有一堆漏洞,无论是trimesh.repair.fill_holes还是meshlab的过滤器都没有给我带来好的结果。

EN

Stack Overflow用户

发布于 2021-11-23 20:29:40

我会查看pyvista示例页面,他们有一个很好的pyvista.wrap函数,可以将您从trimesh转换到pyvista,然后您可以使用pv_obj.points设置顶点,使用pv_obj.faces.reshape(-1, 4)[:, 1:]返回trimesh。有些操作会将您从PolyData带入UnstructedGrid类,但只要它们是三角形,这些行就应该可以工作。Trimesh非常快,他在回答github问题方面是个摇滚巨星,但pyvista的文档要好得多。为了我的项目,我不得不经常在这两者之间跳跃。

下面是我正在考虑的相关示例:https://docs.pyvista.org/examples/01-filter/resample.html

在拉回trimesh之前,你的漏洞填充很可能可以通过他们在https://github.com/pyvista/pymeshfix的侧边回购来处理。

trimesh还将Open3D列为可选依赖项,它有更好的点云重建算法,但我还没有充分使用它来推动您获得它的资源。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65065925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档