当前位置: 首页 > 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类的方法较多,后续将把它们分组整理。

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

相关文章:

Python的3D可视化库【vedo】2-1 (plotter模块) 绘制器的使用

文章目录 1 相关用语及其关系2 Plotter类的基本使用3 Plotter类具体的初始化设置3.1 全部初始化参数3.2 使用不同的axes vedo是Python实现的一个用于辅助科学研究的3D可视化库。 vedo的plotter模块封装了绘制器类Plotter。 Plotter实例可以用于显示3D图形对象、控制渲染器行为、…...

6.1 初探MapReduce

MapReduce是一种分布式计算框架,用于处理大规模数据集。其核心思想是“分而治之”,通过Map阶段将任务分解为多个简单任务并行处理,然后在Reduce阶段汇总结果。MapReduce编程模型包括Map和Reduce两个阶段,数据来源和结果存储通常在…...

【数模学习笔记】模糊综合评价

声明:以下笔记中的图片均来自“数学建模学习交流”清风老师的课程ppt,仅用作学习交流使用 模糊综合评价 文章目录 模糊综合评价模糊数学经典集合和模糊集合的基本概念经典集合和特征函数模糊集合和隶属函数模糊集合的分类 隶属函数的确定方法方法一 模糊…...

【C语言】库函数常见的陷阱与缺陷(四):内存内容操作函数[1]--memcmp

目录 一、功能与用法 1.1. 功能 1.2. 场景用法 二、陷阱与缺陷 2.1. 比较范围限制问题 2.2. 数据类型兼容性隐患 2.3. 其它 三、安全使用建议 四、代码示例 在 C 语言编程的世界里,内存内容操作函数宛如精密的工具,肩负着操控内存数据的重任。它们能灵活地复制、移动…...

jmeter CLI Mode 传参实现动态设置用户数

一.需求 CLI 运行模式下每次运行想要传入不同的用户数,比如寻找瓶颈值的场景,需要运行多次设置不同的用户数。 二.解决思路 查看官方API Apache JMeter - Users Manual: Getting Started api CLI Mode 一节中提到可以使用如下参数做属性的替换&#…...

数据库和SQL的基本概念

目录 定义数据分类非结构化数据:半结构化数据 :​ 结构化数据 : SQL(Structured Query Language)概念分类 数据库管理概念理解 定义 数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。 数据库是长期储存在计算机内、有组织的…...

CSS系列(9)-- Transform 变换详解

前端技术探索系列:CSS Transform 变换详解 🔄 致读者:探索 CSS 变换的魔力 👋 前端开发者们, 今天我们将深入探讨 CSS Transform,学习如何创建引人注目的 2D 和 3D 变换效果。 2D 变换基础 &#x1f68…...

一些浅显易懂的IP小定义

IP归属地(也叫IP地址,IP属地) 互联网协议地址,每个设备上的唯一的网络身份证明。用于确保网络数据能够精准传送到你的设备上。 基于IP数据云全球IP归属地解析,示例Python代码 curl -X POST https://route.showapi.co…...

C 语言动态爱心代码

C 语言动态爱心代码 代码 #include <stdio.h> #include <math.h> #include <windows.h> #include <tchar.h> float f(float x, float y, float z) {float a x * x 9.0f / 4.0f * y * y z * z - 1;return a * a * a - x * x * z * z * z - 9.0f / …...

【Figma_01】Figma软件初始与使用

Figma初识与学习准备 背景介绍软件使用1.1 切换主题1.2 官方社区 设计界面2.1 创建一个项目2.2 修改文件名2.3 四种模式2.4 新增界面2.5 图层2.6 工具栏2.7 属性栏section透明度和圆角改变多边形的边数渐变效果描边设置阴影等特效拖拽相同的图形 背景介绍 Ul设计:User Interfa…...

【Python篇】PyQt5 超详细教程——由入门到精通(序篇)

文章目录 PyQt5 超详细入门级教程前言序篇&#xff1a;1-3部分&#xff1a;PyQt5基础与常用控件第1部分&#xff1a;初识 PyQt5 和安装1.1 什么是 PyQt5&#xff1f;1.2 在 PyCharm 中安装 PyQt51.3 在 PyCharm 中编写第一个 PyQt5 应用程序1.4 代码详细解释1.5 在 PyCharm 中运…...

day2 数据结构 结构体的应用

思维导图 小练习&#xff1a; 定义一个数组&#xff0c;用来存放从终端输入的5个学生的信息【学生的信息包含学生的姓名、年纪、性别、成绩】 1>封装函数 录入5个学生信息 2>封装函数 显示学生信息 3>封装函数 删除第几个学生信息&#xff0c;删除后调用显示学…...

CSS 进阶教程:从定位到动画与布局

文章目录 &#x1f31f; CSS 进阶教程&#xff1a;从定位到动画与布局&#x1f31f; 目录&#x1f31f; 1. 定位**Static&#xff08;默认定位&#xff09;****Relative&#xff08;相对定位&#xff09;****Absolute&#xff08;绝对定位&#xff09;****Fixed&#xff08;固定…...

Nginx性能优化全方案:打造一个高效服务器

Nginx性能优化全方案&#xff1a;打造一个高效服务器 调整工作进程数和线程数调整工作进程数调整线程数 启用Gzip压缩安装Gzip模块配置Gzip压缩 配置缓存策略配置浏览器缓存时间配置代理服务器缓存时间 优化文件访问方式使用sendfile()函数发送文件数据启用sendfile_max_chunk和…...

详解Maven的setting配置文件中mirror和repository的区别

在Maven的setting中&#xff0c;我们常常会用到mirror和repository配置&#xff0c;其中mirror是镜像的意思&#xff0c;而repository则是仓库的意思&#xff0c;它们两者都可以改变maven下载项目以来jar包的地址。 仓库&#xff08;repository&#xff09; repository就是个…...

框架模块说明 #07 API加密

背景 在实际开发过程中&#xff0c;我们通常会涉及到数据加密的问题。本文重点探讨两个方面&#xff1a;一是外部接口调用时的数据加密&#xff0c;二是服务间调用的数据加密与解密。 对于外部接口调用&#xff0c;每个用户将拥有独立的动态 AES 加密密钥&#xff08;KEY&…...

安卓BLE蓝牙开发经验分享

注意点一&#xff1a;一开始必须申请权限&#xff0c;否则后面根本无法成功。 注意点二&#xff1a;BLE使用向某个特征写入来发送数据&#xff0c;写入一次默认长度是23字节&#xff0c;必须向蓝牙设备申请更大字节的写入才能发送更多字节。&#xff08;23字节是BLE通信的最小…...

后缀表达式有什么场景应用

后缀表达式&#xff08;Reverse Polish Notation, RPN&#xff09;在多个领域中有广泛的应用&#xff0c;主要由于其简洁性和易于计算机处理的特点。以下是一些主要的应用场景&#xff1a; ### 1. **编译器和解释器** 后缀表达式在编译器和解释器中用于表达式求值。由于后缀表…...

使用 Kubernetes 部署 Redis 主从及 Sentinel 高可用架构(未做共享存储版)

文章目录 使用 Kubernetes 部署 Redis 主从及 Sentinel 高可用架构Redis 主从架构部署 (1.yaml)Redis Sentinel 部署 (2.yaml)Sentinel 服务暴露 (3.yaml)部署步骤总结 使用 Kubernetes 部署 Redis 主从及 Sentinel 高可用架构 本文将详细介绍如何在 Kubernetes 中部署 Redis …...

AI开发 - 用GPT写一个GPT应用的真实案例

就在昨天&#xff0c;我的同事推荐给我了一个第三方的公共大模型API&#xff0c;这个API集合了国际上上几乎所有知名的大模型&#xff0c;只需要很少的费用&#xff0c;就可以接入到这些大模型中并使用它们。成本之低&#xff0c;令人乍舌&#xff01;包括我们现在无法试用的 G…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层&#xff08;GATT/Adv&#xff09;局限性&#xff1a; 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能&#xff0c;如 Configuration …...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...