Open3D 的体素化问题:沿某些三角形面填充不完整

问题描述 投票:0回答:1

我目前正在 Python 中使用 Open3D 来体素化网格,在此过程中我遇到了一种奇怪的行为。对盒子网格体进行体素化时,生成的体素似乎仅沿着三角形的线对齐,而不是填充三角形面的整个表面积,在盒子的壁上尤其明显。

这种行为是 Open3D 体素化过程中所期望的,还是我的方法存在误解?

我尝试在盒子网格上进行体素化,期望体素网格均匀地填充网格的所有三角形,包括盒子的面。然而,在可视化时,我注意到虽然顶面和底面被充分填充,但盒子的壁主要沿着三角形边缘表现出体素化。

import open3d as o3d
import numpy as np

new_room = o3d.geometry.TriangleMesh.create_box(10,10,10)
lines = []
for triangle in np.array(new_room.triangles):
    lines.extend([(triangle[0], triangle[1]), (triangle[1], triangle[2]), (triangle[2], triangle[0])])
line_set = o3d.geometry.LineSet()
vertices = np.array(new_room.vertices)
line_set.points = o3d.utility.Vector3dVector(vertices)
line_set.lines = o3d.utility.Vector2iVector(lines)
voxel_grid = o3d.geometry.VoxelGrid.create_from_triangle_mesh(new_room, voxel_size=0.5)
o3d.visualization.draw_geometries([new_room, line_set, voxel_grid])

可视化后,只有顶面和底面被充分填充,而墙壁主要沿对角线显示体素化。

我使用的是 Open3D 版本 v0.17.0。

python voxel open3d
1个回答
0
投票

在遇到 Open3D 体素化过程的问题后,我发现该问题已在 GitHub 上的这个线程中提出并得到解决。该问题已在 Open3D v0.18.0 版本中得到解决。

但是,当尝试使用 pip 更新包时,我遇到了困难,因为 pip 在 PyPI 上找不到所需版本的正确兼容标签。出现此问题的原因是使用 Apple Mac M1,该设备与包标签存在一些兼容性问题。

谢天谢地,我找到了记录的解决方案here

SYSTEM_VERSION_COMPAT=0 pip install --upgrade open3d

运行此命令解决了兼容性问题,并使我能够成功地将 Open3D 更新到所需的版本。体素化现在工作正常。

© www.soinside.com 2019 - 2024. All rights reserved.