19 lines
888 B
Python
19 lines
888 B
Python
import numpy as np
|
|
import open3d as o3d
|
|
|
|
class ReconstructionUtil:
|
|
@staticmethod
|
|
def reconstruct_with_pts(pts):
|
|
pcd = o3d.geometry.PointCloud()
|
|
pcd.points = o3d.utility.Vector3dVector(pts)
|
|
pcd.estimate_normals(search_param=o3d.geometry.KDTreeSearchParamHybrid(radius=0.001, max_nn=30))
|
|
mesh, densities = o3d.geometry.TriangleMesh.create_from_point_cloud_poisson(pcd, depth=9)
|
|
densities = np.asarray(densities)
|
|
vertices_to_remove = densities < np.quantile(densities, 0.03)
|
|
mesh.remove_vertices_by_mask(vertices_to_remove)
|
|
return mesh
|
|
if __name__ == "__main__":
|
|
path = r"C:\Document\Local Project\nbv_rec_visualize\mis\sampled_model_points.txt"
|
|
test_pts = np.loadtxt(path)
|
|
mesh = ReconstructionUtil.reconstruct_with_pts(test_pts)
|
|
o3d.io.write_triangle_mesh("output_mesh.obj", mesh) |