当前位置: 首页 > news >正文

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)
    (行, 列),表示多个渲染器窗格的排列方式。
    如果已指定参数Nshape参数就不可再指定。
  • 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=0,1,2
axes=3,4,5
axes=6,7,8
axes=9,10,11
axes=12,13,14

axes=6时显示的框暂时存在BUG。


以上是plotter模块绘制器Plotter使用的基础。
Plotter类的方法较多,后续将把它们分组整理。

去这里查看更多有关vedo的内容:Python的3D可视化库 vedo


http://www.mrgr.cn/news/79942.html

相关文章:

  • 林墨参加湖南芒果2024年礼节 表演《点睛》《过年的歌》
  • Python实现中国象棋
  • opencv——识别图片颜色并绘制轮廓
  • 鸿蒙手机文件目录
  • 基于JAVA的旅游网站系统设计
  • E172 ASP.NET+SQL+C#+LW+图书管理系统的设计与实现 配置 源码 文档 全套资料
  • 一文详解TCP协议 [图文并茂, 明了易懂]
  • linux/centOS7用户和权限管理笔记
  • 【在Linux世界中追寻伟大的One Piece】HTTP Session
  • Java-常用类
  • 【C++】string类
  • UE5基本数据类型
  • Luckysheet 实现 excel 多人在线协同编辑(全功能实现增强版)
  • 从根上理解 mysql -数据在表中是怎么存储的
  • location重定向和nginx代理
  • MySQL-练习-数据介绍
  • Linux 权限及管理
  • Java 实现给pdf文件指定位置盖章功能
  • ARM学习(35)单元测试框架以及MinGW GCC覆盖率报告
  • 特征交叉-CAN学习笔记代码解读
  • java抽奖系统登录下(四)
  • R学习——数据框
  • Leetcode数学部分笔记
  • [大数据]Hudi编译集成
  • 与 Cursor AI 对话编程:2小时开发报修维修微信小程序
  • 搭建Tomcat(一)---SocketServerSocket