一、概述
使用 Open3D 创建一个三角网格的球体,并从中均匀采样点生成点云,同时可以指定球体的半径和中心位置。生成 5 个不同大小和位置的圆球形点云,并将它们合并成一个点云以进行显示。
二、代码实现
import open3d as o3d
import numpy as np
def create_sphere(radius=1, center=[0, 0, 0], resolution=20):
mesh_sphere = o3d.geometry.TriangleMesh.create_sphere(radius=radius, resolution=resolution)
mesh_sphere.translate(center)
pcd = mesh_sphere.sample_points_uniformly(number_of_points=2000)
return pcd
# 定义球体的半径和中心位置
radii = [1, 0.8, 0.6, 0.9, 1.2]
centers = [[0, 0, 0], [2, 2, 0], [-2, -2, 0], [2, -2, 0], [-2, 2, 0]]
# 创建点云列表
point_clouds = [create_sphere(radius=r, center=c) for r, c in zip(radii, centers)]
# 合并所有点云
combined_pcd = point_clouds[0]
for pcd in point_clouds[1:]:
combined_pcd += pcd
o3d.io.write_point_cloud('3dballs.pcd',combined_pcd)
# 显示点云
o3d.visualization.draw_geometries([combined_pcd])