У меня есть набор трехмерных точек данных, похожих на сферу. Мне нужно, чтобы эти точки данных были соединены как водонепроницаемая сетка, чтобы ее можно было использовать для моделирования.
Я работал с Meshlab и получил приемлемую сетку, но не водонепроницаемую.
После этого я попробовал использовать библиотеку Python Open3D, используя алгоритм поворота шара. Из-за этого я не могу получить водонепроницаемую сетку, как ожидалось. Я пытался работать с внешней библиотекой hole_fixer (Hole_fixer), но обнаружил ошибку при установке с помощью cmake.
Я вставил код, а также точки данных xyz, используемые для open3D.
import numpy as np
import open3d as o3d
dataname = 'meshdata2.xyz'
point_cloud = np.loadtxt(dataname, skiprows=1)
pcd = o3d.geometry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(point_cloud[:,:3])
pcd.estimate_normals()
distances = pcd.compute_nearest_neighbor_distance()
avg_dist = np.mean(distances)
radius = 5*avg_dist
bpa_mesh = o3d.geometry.TriangleMesh.create_from_point_cloud_ball_pivoting(pcd, o3d.utility.DoubleVector([radius, radius*2, radius*0.5]))
print(str(bpa_mesh.is_watertight()))
o3d.visualization.draw_geometries([bpa_mesh])
Ссылка для файла xyz: xyz_file_link
Сетка, полученная из Open3D: Mesh_from_open3D
Я хотел бы знать, как получить водонепроницаемую сетку для этих точек данных.
Будем признательны за любые запросы.
С уважением,
Сунаг Р. А.