Python的3D可视化库【vedo】2-1 (plotter模块) 绘制器的使用
文章目录
- 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 | 显示VTKCubeAxesActor 对象; |
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
类的方法较多,后续将把它们分组整理。
去这里查看更多有关vedo的内容:Python的3D可视化库 vedo