在Open3D中,sample_points_poisson_disk
函数可以对三角网格进行采样,返回一组具有均匀分布的点的索引,这些点以Poisson的方式分布在三角网格的表面上。
open3d.geometry.TriangleMesh.sample_points_poisson_disk(self, n_points: int, init_factor: float = 5.0, max_attempts: int = 100)
n_points
: 采样的点的数量。init_factor
: 起始采样半径与最小距离之比。该值越大,生成的点越稠密。max_attempts
: 最大尝试次数。返回一个一维NumPy数组,表示由其索引指定的点的集合,这些点具有均匀分布的Poisson样式的采样。
import open3d as o3d
import numpy as np
mesh = o3d.io.read_triangle_mesh("bunny.obj")
points = mesh.sample_points_poisson_disk(1000)
o3d.visualization.draw_geometries([mesh, o3d.geometry.PointCloud(mesh.vertices[points])])