[英]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.