0

是否可以根据顶点阈值在 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.

4

1 回答 1

0

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

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)

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

于 2021-04-09T22:57:54.977 回答