簡體   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