1、三维模型获取
- 可以自己用建模软件建立一个模型
- 从free3d免费下载
2、关键函数
open3d.visualization.draw_geometries
参数:
- geometry_list(List[open3d.geometry.Geometry]):要可视化的几何体列表.
- window_name(str, optional, default='Open3D'):展示模型的可视化窗口名称,默认是Open3d.
- width: 可视化窗口的宽度,默认是1920.
- height: 可视化窗口的高度,默认是1080.
- left: 可视化窗口左边距,默认是50.
- top: 可视化窗口上边距,默认是50.
- point_show_normal: 如果设置为 true,则可视化点法线,默认是False.
- mesh_show_wireframe: 如果设置为 true,则可视化网格线框。默认是False.
- mesh_show_back_face: 如果设置为True, 可视化网格三角形的背面。默认是False.
3、导入open3d
import open3d as o3d
4、open3d模型读取与可视化
编写代码
import open3d as o3d
path_ply = './data/ply/Dragon 2.5_ply.ply'
mesh = o3d.io.read_triangle_mesh(path_ply)
mesh.compute_vertex_normals()
o3d.visualization.draw_geometries([mesh], "Dragon", 800, 800, 50, 50, False, False, True)
可视化结果
4 均匀采样生成点云并可视化
编写代码
# 均匀采样50个点
pcd = mesh.sample_points_uniformly(number_of_points=5000)
# 可视化点云模型
o3d.visualization.draw_geometries([pcd])
可视化效果
5 泊松采样并可视化
均匀采样会在表面出现采样点聚集的现象,open3d实现了一种基于poisson_disk方法的采样,能实现表面的均匀采样。
代码编写
# 均匀采样50个点
pcd = mesh.sample_points_uniformly(number_of_points=5000)
pcd = mesh.sample_points_poisson_disk(number_of_points=5000, init_factor=10)
o3d.visualization.draw_geometries([pcd])
可视化效果:可以看出边缘点的分布更加均匀,但是耗时更长
6 保存为点云文件
代码编写
# 保存点云文件
# o3d.io.write_point_cloud(filename="data/dragon.pcd", pointcloud=pcd, write_ascii=True)
保存结果:
可视化保存的点云文件
代码编写
import open3d as o3d
path_ply = './data/dragon.pcd'
# 读取点云文件
mesh = o3d.io.read_point_cloud(path_ply)
o3d.visualization.draw_geometries([mesh])
可视化结果