import open3d as o3d
def get_point_cloud_from_file(input_file_name, output_file_name,
target_number_of_triangles=1000, number_of_points=1000):
mesh = o3d.io.read_triangle_mesh(input_file_name)
new_mesh = mesh.simplify_quadric_decimation(target_number_of_triangles=target_number_of_triangles)
new_mesh.compute_vertex_normals()
pcd = new_mesh.sample_points_poisson_disk(number_of_points=number_of_points)
o3d.io.write_point_cloud(output_file_name, pcd)
if __name__ == '__main__':
input_file_name = 'cube.stl'
output_file_name = 'cube.pcd'
get_point_cloud_from_file(input_file_name, output_file_name)