open3d.visualization.draw_geometries 是 Open3D 模块中一个用于绘制几何图形的函数,可以绘制点云、网格、三角网格、可视化线框框架等多种类型的几何图形。
函数定义如下:
open3d.visualization.draw_geometries(geometries, window_name='Open3D', width=1920, height=1080, left = 50, top = 50, point_show_normal=False, mesh_show_wireframe=False, mesh_show_back_face=True, lookat=None, up=None, front=None, zoom=0.5, fov=60.0, bg_color=(0, 0, 0), bg_uniform=True, capture_screen=False, do_render=True, return_image=False, view_control=None)
其中,参数说明如下:
geometries:将要绘制的几何体,类型为 list,每个元素可以是 open3d.geometry 模块中定义的任何几何体(例如 open3d.geometry.PointCloud、open3d.geometry.TriangleMesh 等)。window_name:窗口名称,类型为 str,默认为 "Open3D"。width 和 height:窗口的宽和高,类型为 int,默认分别为 1920 和 1080。left 和 top:窗口距离屏幕左上角的位置,类型为 int,默认分别为 50。point_show_normal:是否显示点云的法向量,类型为 bool,默认为 False。mesh_show_wireframe:是否显示网格的线框框架,类型为 bool,默认为 False。mesh_show_back_face:是否显示网格的背面,类型为 bool,默认为 True。lookat、up 和 front:相机的三个方向,分别代表相机的观察点、相机所在点以及相机正面的向量。这三个参数可以一起决定相机的位置和朝向。类型均为 3 维向量。zoom:相机的缩放比例,类型为 float,默认为 0.5。fov:相机的视场角,类型为 float,默认为 60.0。视场角控制了相机可视范围的大小,值越大,相机看到的范围越大,但可能会导致畸变。bg_color:窗口的背景颜色,类型为 RGB 三元组或者灰度值,取值范围在 [0, 255] 或者 [0.0, 1.0] 之间。bg_uniform:是否设置背景为统一颜色,类型为 bool,默认为 True。capture_screen:是否捕捉屏幕截图,类型为 bool,默认为 False。do_render:是否渲染场景,类型为 bool,默认为 True。return_image:是否返回屏幕截图,类型为 bool,默认为 False。view_control:视角控制器,可以控制场景的旋转、缩放等操作。类型为 open3d.visualization.ViewControl 类的对象。通过 draw_geometries 函数,可以快速绘制点云、三角网格等几何体,例如:
import open3d.visualization as vis
import numpy as np
# 生成点云
xyz = np.random.rand(100, 3)
colors = np.random.rand(100, 3)
pcd = vis.geometry.PointCloud()
pcd.points = vis.utility.Vector3dVector(xyz)
pcd.colors = vis.utility.Vector3dVector(colors)
# 生成三角网格
triangle = np.random.choice(xyz.shape[0], (100, 3))
tri_mesh = vis.geometry.TriangleMesh()
tri_mesh.vertices = vis.utility.Vector3dVector(xyz)
tri_mesh.triangles = vis.utility.Vector3iVector(triangle)
# 将点云和三角网格绘制到窗口中
vis.draw_geometries([pcd, tri_mesh])
效果如下所示:
