文章目录
- 1 相关用语及其关系
- 2 Plotter类的基本使用
- 3 Plotter类具体的初始化设置
- 3.1 全部初始化参数
- 3.2 使用不同的axes
 
vedo是Python实现的一个用于辅助科学研究的3D可视化库。
 vedo的plotter模块封装了绘制器类Plotter。
 Plotter实例可以用于显示3D图形对象、控制渲染器行为、操控相机、创建事件以及导出3D数据。几乎所有关于3D图形的操作,都是在Plotter渲染的窗口进行的。
vedo的
applications模块提供了各种高级功能,其中的类全部继承自Plotter。
参考:vedo官方文档
1 相关用语及其关系
- 绘制器 plotter
 Plotter类的实例,控制绘制、渲染、事件等。
 绘制器实例是单例的,程序内部创建的实例都是同一个。
- 渲染器 renderer
 渲染器是进行图形渲染的对象。
 它是Plotter实例的属性,plt.renderer访问当前的渲染器。Plotter实例可以有多个渲染器,通过plt.renderers访问渲染器列表。
- 屏幕 screen
 电脑显示器的屏幕。
- 窗口 window
 绘制器调用show()方法时,会弹出窗口,展示绘制的图形,用户可以使用鼠标键盘进行3D交互。
- 窗格 grid
 绘制器拥有多个渲染器时,会把窗口分割为对应数量的窗格,每个窗格分配一个渲染器。
- 场景 scene
 渲染器渲染的3D场景,包含3D物体、光效和各种标记。通过窗格展示,理论上是无限大的。
- 相机 camera
 用户观看场景的视点,是用户和3D场景的相对位置和朝向。
 相机的位置和方向属性决定了3D场景渲染后投影到2D窗格(视口)的图像。
2 Plotter类的基本使用
# 创建Plotter实例
plt = vedo.Plotter()
# 弹出窗口,渲染3D图像
plt.show(interactive=True)
这里没有添加任何图形,因此显示空白窗口:
 
3 Plotter类具体的初始化设置
3.1 全部初始化参数
- shape=(1, 1)
 (行, 列),表示多个渲染器窗格的排列方式。
 如果已指定参数- N,- shape参数就不可再指定。
- N=None
 渲染器的数目,会将窗口分为若干个窗格,每个窗格分配一个渲染器。
 - N不为None时,窗格会自动按照窗口大小确定合适的行数和列数。
- pos=(0, 0)
 渲染窗口相对于屏幕左上角的坐标位置,单位为像素。
- size="auto"
 渲染窗口的大小。填- auto时,基于屏幕大小展示。
- screensize="auto"
 显示器屏幕的物理大小。在有多个渲染器时,会用来计算每个窗格的大小。
- title="vedo",窗口的标题。
- bg="white"
 背景颜色,或背景图片的路径。
- bg2=None
 向顶部渐变的背景颜色。
- axes=None
 轴类别。可以代表不同类别轴的整数值。也可以填一个表示轴的字典。
- sharecam=True
 默认为真,表示分格的各个渲染器统一使用一个相机。
 为假时每个渲染器会有独立的相机。如图,不同渲染器的相机可以朝向不同角度。
  
- resetcam=True
 按照可见的actors对象列表,自动设置相机的位置。
 相机会对焦到它们的中心点,并沿着视平面法线平移,使这些演员对象都出现在视野里。
 每个渲染器都有自己的actors列表,当前渲染器会以它自己的actors调整相机位置。
 当- sharecam=True时,所有的渲染器都使用第一个渲染器的相机。这可能会导致其它渲染器把图形显示在屏幕外,尤其是在该渲染器的actors对象中心点与首个渲染器的actors的中心点相距较远的时候。这时最好设置- sharecam=False,每个渲染窗格独立对焦。
- interactive=None
 为真时会在调用- show()之后暂停,以进行3D交互。
- offscreen=False
 为真时不显示渲染窗口。
- qt_widget=None
 在- Qt-Widget窗口中进行渲染。需要使用- PyQt5库的- QVTKRenderWindowInteractor对象。
- wx_widget=None
 在- wxPython定义的窗口中进行渲染。
3.2 使用不同的axes
axes表示轴类别,可以通过0-14的数值表示:
| axes值 | 轴类型说明 | 
|---|---|
| 0 | 默认情况,没有轴; | 
| 1 | 绘制灰色的三面网格墙; | 
| 2 | 从(0, 0, 0)开始的笛卡尔坐标系; | 
| 3 | 从(0, 0, 0)开始的笛卡尔坐标系的正方向; | 
| 4 | 在左下角显示一个小坐标轴,表示图形当前的方向和位置; | 
| 5 | 在左下角显示一个方位立方体; | 
| 6 | 标记边界框的8个角。 | 
| 7 | 在笛卡尔坐标系的每边绘制3D标尺; | 
| 8 | 显示VTK CubeAxesActor对象; | 
| 9 | 显示边界框的轮廓; | 
| 10 | 绘制三个圆,表示最大边界框; | 
| 11 | 在x-y平面显示巨型网格;缩放等级是8; | 
| 12 | 显示一个极坐标轴; | 
| 13 | 窗口底部显示一个普通的标尺。 | 
| 14 | 在右上角绘制一个相机方向控件; | 
除了上述值外,也可以指定表示轴参数的字典axes=dict()。
 在addons模块的Axes方法中有详细的轴字典参数说明。
# 展示两个示例球体
s1 = vedo.Sphere(r=0.3, pos=(3, 3, 3))
s2 = vedo.Sphere(r=0.3, pos=(-3, -3, -3))
# 显示轴
plt = vedo.Plotter(axes=1)
plt.show(s1, s2)
14种轴如下图所示:
 
 
 
 
 
axes=6时显示的框暂时存在BUG。
以上是plotter模块绘制器Plotter使用的基础。
 Plotter类的方法较多,后续将把它们分组整理。
更多关于数据可视化的内容参考:Python数据可视化笔记