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类的方法较多,后续将把它们分组整理。

更多关于数据可视化的内容参考:Python数据可视化笔记

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/889635.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

职业院校人工智能实验室解决方案

随着人工智能技术的迅猛发展,企事业单位对具备高素质技术应用能力的人才需求愈发迫切,目前人工智能已经逐步从感知理解阶段转变为生成创造阶段,可以为各行各业提供多维的智能化应用服务。2024年的《政府工作报告》中首次提出了“人工智能”行…

steel-browser - 专为AI应用构建的开源浏览器自动化 API

Steel是一个开源浏览器 API,可以轻松构建与 Web 交互的 AI 应用程序和代理。您无需从头开始构建自动化基础设施,而是可以专注于 AI 应用程序,而 Steel 会处理复杂性。 2300 Stars 99 Forks 4 Issues 5 贡献者 Apache-2.0 License TypeScript …

ElasticSearch - 使用 Composite Aggregation 实现桶的分页查询

文章目录 官方文档概述Composite Aggregation 概述示例:基本分页查询分页:获取下一页结果使用场景注意事项 官方文档 https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-composite-aggregation.html#_pagin…

基于Python+Sqlite3实现的搜索和推荐系统

基于Python实现的搜索和推荐系统 一、引言 伴随着科技的不断进步,互联网,万维网的不断发展。我们越来越热爱万维网,也欣赏他的发展方式。20世纪90年代初,万维网还只是一个将文档联系起来的简单网络。如今,他已经成为…

Oracle:VARCHAR2(100)与VARCHAR2(100 CHAR)的差异导致的报错

目录 >> 问题背景:>> 阴差阳错:>> 问题出现:>> 问题排查:>> 知识点:>> 问题复盘:>> 问题拓展: >> 问题背景: Oracle下&#xff1…

右玉200MW光伏电站项目 微气象、安全警卫、视频监控系统

一、项目名称 山西右玉200MW光伏电站项目 微气象、安全警卫、视频监控系统 二、项目背景: 山西右玉光伏发电项目位于右玉县境内,总装机容量为200MW,即太阳能电池阵列共由200个1MW多晶硅电池阵列子方阵组成,每个子方阵包含太阳能…

最短路----Dijkstra算法详解

简介 迪杰斯特拉(Dijkstra)算法是一种用于在加权图中找到单个源点到所有其他顶点的最短路径的算法。它是由荷兰计算机科学家艾兹格迪科斯彻(Edsger Dijkstra)在1956年提出的。Dijkstra算法适用于处理带有非负权重的图。迪杰斯特拉…

从零开始学docker(五)-可用的docker镜像

最近docker镜像都不能访问,目前亲测可用的docker镜像可用,并拉取mysql测试完成。 [缺点] docker search 查不到镜像的索引列表,只能手动查询索引目录(解决方案在最后)。 linux服务器vim打开镜像文件daemon.json vim /e…

安卓获取所有可用摄像头并指定预览

在Android设备中,做预览拍照的需求的时候,我们会指定 CameraSelector DEFAULT_FRONT_CAMERA前置 或者后置CameraSelector DEFAULT_BACK_CAMERA 如果你使用的是平板或者工业平板,那么就会遇到多摄像头以及外置摄像头问题,简单的指…

【报错记录】Ubuntu22.04解决开机卡在 /dev/sda5 : clean , *files , *blocks

一个愿意伫立在巨人肩膀上的农民...... 一、错误现象 本人的电脑安装Windows10和Ubuntu22.04双系统,一次训练中电脑死机无法开机,重启之后便出现如下错误,在网上寻找过很多方法均无效,在root下禁用了samba服务,也无济…

利用代理IP爬取Zillow房产数据用于数据分析

引言 最近数据分析的热度在编程社区不断攀升,有很多小伙伴都开始学习或从事数据采集相关的工作。然而,网站数据已经成为网站的核心资产,许多网站都会设置一系列很复杂的防范措施,阻止外部人员随意采集其数据。为了解决这个问题&a…

Kafka系列教程 - Kafka 生产者 -2

1. 生产者简介 不管是把 Kafka 作为消息队列系统、还是数据存储平台,总是需要一个可以向 Kafka 写入数据的生产者和一个可以从 Kafka 读取数据的消费者,或者是一个兼具两种角色的应用程序。 使用 Kafka 的场景很多,诉求也各有不同&#xff…

语音芯片赋能可穿戴设备:开启个性化音频新体验

在科技日新月异的今天,语音芯片与可穿戴设备的携手合作,正引领我们步入一个前所未有的个性化音频时代。这一创新融合,用户可以享受到更加个性化、沉浸式的音频体验。下面将详细介绍语音芯片与可穿戴设备合作的优点和具体应用。 1. 定制化音效…

1. Flink自定义Source

一. Source 简介 DataStream是Flink的低级API,用于进行数据的实时处理,Flink编程模型分为Source、Transformation、Sink三个部分,如下图所示。 默认Flink提供了大量的内置Source,常见的Source如下: 基于文件的Sour…

Yolov8界面可视化

本教程使用的是Pyside6 1、安装PySide6模块 pip install pyside6 安装完成之后,会有一个designer.exe可执行文件,打开之后,我们可以通过拖拉拽的方式来布局我们的界面。 designer.exe文件位置,一般位于当前虚拟环境下面的路径…

谷粒商城—分布式高级①.md

1. ELASTICSEARCH 1、安装elastic search dokcer中安装elastic search (1)下载ealastic search和kibana docker pull elasticsearch:7.6.2 docker pull kibana:7.6.2(2)配置 mkdir -p /mydata/elasticsearch/config mkdir -p /mydata/elasticsearch/data echo "h…

系统性能优化

一、概述 性能优化的目标:是提高系统或应用程序的响应时间、吞吐量、cpu、内存、磁盘IO、网络、流量、JVM、Tomcat、DB等方面的性能指标。 性能优化需要有一些技巧:对于整个产品或项目而言,比如可以从前端优化、后端优化、架构优化、高并发…

基于STM32设计的粮食仓库(粮仓)环境监测系统

一、前言 当前项目使用的相关软件工具、传感器源代码工程已经上传到网盘(实时更新项目内容):https://ccnr8sukk85n.feishu.cn/wiki/QjY8weDYHibqRYkFP2qcA9aGnvb?fromfrom_copylink 1.1 项目开发背景 随着现代农业的发展和粮食储存规模的…

基于STM32的智能导盲/智能拐杖系统

基于STM32的智能导盲/智能拐杖系统 持续更新,欢迎关注!!! ** 基于STM32的智能导盲/智能拐杖系统 ** 据统计,全球视障人士的数量已经超过2.5亿,其中大部分人需要一种有效的辅助器具来帮助他们感知周围环境,安全行走。 近年来&am…

关于idea-Java-servlet-Tomcat-Web开发中出现404NOT FOUND问题的解决

在做web项目时,第一次使用servlet开发链接前端和后端的操作,果不其然,遇到了诸多问题,而遇到最多的就是运行项目打开页面时出现404NOT FOUND的情况。因为这个问题我也是鼓捣了好久,上网查了许多资料才最终解决&#xf…