繁体   English   中英

如何在 Open3D 中裁剪/分割网格

[英]How to crop/split mesh in Open3D

是否可以根据顶点阈值在 Open3D 中分割网格?

例如,我需要将网格划分为两个 stl 输出,一个 z 顶点小于某个值(x 和 y 贯穿整个域),另一个 stl 具有剩余 z 顶点。

在 Open3D 文档中,有一种方法可以裁剪网格。 但它是根据分配的三角形。 以下是网站本身的代码。

mesh1 = copy.deepcopy(mesh)
mesh1.triangles = o3d.utility.Vector3iVector(
np.asarray(mesh1.triangles)[:len(mesh1.triangles) // 2, :])
mesh1.triangle_normals = o3d.utility.Vector3dVector(
np.asarray(mesh1.triangle_normals)[:len(mesh1.triangle_normals) // 2, :])

o3d.visualization.draw_geometries([mesh1])

那么,基于此,我如何相对于顶点裁剪/分割网格? 我可以使用 mesh.vertices 访问顶点。

任何线索将不胜感激。

问候, Sunag R A。

我对 Open3D 不熟悉,但是由于 arrays 的点和面,你可以简单地做一个这样的循环:

points = [...] # from your mesh
faces = [...] # from your mesh

threshold = 0  # z threshold
# the crop parts
below = []
above = []
for face in faces:
    if all(points[p][2] < threshold   for p in face):
         below.append(face)
    else:
         above.append(face)

它看起来网格的每个面,当所有面点都低于阈值时,面被放在下面的列表below ,否则在above

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM