gpt4 book ai didi

python - 完成部分网格并使其防水

转载 作者:行者123 更新时间:2023-12-05 06:08:43 29 4
gpt4 key购买 nike

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

Partial mesh

我试过了

trimesh.repair.broken_faces(mesh, color=[255, 0, 0, 255]) 

但这似乎并没有完全帮助。我尝试创建一个凸包:

convex hull

并试图在两者之间建立联合,但最终失败了:

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 值?

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

CH+mesh

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

最佳答案

我会查看 pyvista 示例页面,他们有一个很好的 pyvista.wrap 函数让你从 trimeshpyvista,然后可以使用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

您的漏洞填充可能会由他们的副仓库处理 https://github.com/pyvista/pymeshfix在返回 trimesh 之前。

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

关于python - 完成部分网格并使其防水,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65065925/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com