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])
效果如下所示: