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数据可视化笔记

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

特征交叉-CAN学习笔记代码解读

一 核心模块coaction 对于每个特征对(feature_pairs)weight, bias 来自于P_inductionP_fead是MLP的input 举个例子:如果是用户ID和产品ID的co-action,且产品ID是做induction,用户ID是做feed。 step1 用户ID/产品ID都先形成一个向量&#xf…

【Java面试】深拷贝、浅拷贝和引用拷贝三者的区别

浅拷贝:浅拷贝会在堆上创建一个新的对象(区别于引用拷贝的一点),不过,如果原对象内部的属性是引用类型的话,浅拷贝会直接复制内部对象的引用地址,也就是说拷贝对象和原对象共用同一个内部对象。…

EasyGBS点对点穿透P2P远程访问技术在安防视频监控中的应用

随着信息技术的快速发展,安防视频监控系统在公共安全领域的应用变得越来越广泛。传统的视频监控系统多依赖于中心服务器进行视频流的集中处理和分发,这不仅增加了网络带宽的负担,还可能成为系统性能瓶颈。为了解决这些问题,P2P&am…

Vue入门到精通:核心语法—模板语法

Vue入门到精通:核心语法—模板语法 Vue.js因其简单、易用和高效的特点,自推出以来一直受到广泛关注。Vue.js的核心概念和技术包括模板语法、计算属性、事件监听、动态样式绑定、条件渲染指令(如v-if)、列表渲染指令(如…

C++中如何实现接口继承与实现继承,以及它们的区别?

概念 在 C 中,接口继承和实现继承是两种不同的继承方式,它们在设计模式、代码复用和多态性方面有着不同的应用。下面将分别解释这两者的概念、实现方式及其区别。 接口继承 接口继承指的是只继承类的接口(即公共的成员函数声明&#xff09…

WPF+MVVM案例实战与特效(三十八)- 封装一个自定义的数字滚动显示控件

文章目录 1、运行效果2、案例实现1、功能设计2、页面布局3、控件使用4、运行效果3、拓展:多数字自定义控件1、控件应用4、总结1、运行效果 在Windows Presentation Foundation (WPF)应用程序中,自定义控件允许开发者创建具有特定功能和外观的独特UI元素。本博客将介绍一个名…

2024年12月HarmonyOS应用开发者高级认证全新题库

注意事项:切记在考试之外的设备上打开题库进行搜索,防止切屏三次考试自动结束,题目是乱序,每次考试,选项的顺序都不同,作者已于2024年12月15日又更新了一波题库,题库正确率99%! 新版…

【Java学习笔记】JUnit

一、为什么需要 JUnit 二、基本介绍 三、实现方法 第一次添加: 在需要测试的方法处输入 Test注解,快捷键AltInsert选择添加版本(常用JUnit5.4) 出现绿色箭头可进行测试和编译

MySQL误删除 binlog 还原 恢复已删除数据 实战 超详细

硬盘有价,数据无价,数据库执行,谨慎操作! binlog日志还原不适用于直接删表删库的误操作! 目录 实战恢复 1、导出相关时间binlog数据 2、找到对应语句以及pos区间 3、导出改动区间的sql 4、将binlog导出的sql转换…

百度地图JavaScript API核心功能指引

百度地图JavaScript API是一套由JavaScript语言编写的应用程序接口,它能够帮助您在网站中构建功能丰富、交互性强的地图应用,包含了构建地图基本功能的各种接口,提供了诸如本地搜索、路线规划等数据服务。百度地图JavaScript API支持HTTP和HT…

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(五)

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(五) 你好,我是拉依达。 感谢所有阅读关注我的同学支持,目前博客累计阅读 27w,关注1.5w人。其中博客《最全Linux驱动开发全流程详细解析(持续更新)-CSDN博客》已经是 Linux驱动 相关内容搜索的推荐首位,感谢大家支持。 《拉…

C语言简单日志宏

最近调试C代码,发现要写很多打印的内容不是很方便,于是简单写一下C语言的日志来方便自己调试: 1. 简单打印带标识的日志信息 #include "stdio.h" #define PRINT(...) \do \{ …

【算法】—— 前缀和

一、区间求和问题 给定一个长度为n的序列a,有m次查询,每次查询输出一个连续区间的和。 使用暴力做法求解是将每次查询都遍历该区间求和 //暴力做法import java.util.Scanner;public class Test {public static void main(String[] args){Scanner scan…

详解下c语言下的多维数组和指针数组

在实际c语言编程中,三维及以上数组我们使用的很少,二维数组我们使用得较多。说到数组,又不得关联到指针,因为他们两者的联系太紧密了。今天我们就详细介绍下c语言下的多维数组(主要是介绍二维数组)和指针。 一、二维数组 1.1&am…

【实验】【H3CNE邓方鸣】交换机端口安全实验+2024.12.11

实验来源:邓方鸣交换机端口安全实验 软件下载: 华三虚拟实验室: 华三虚拟实验室下载 wireshark:wireshark SecureCRT v8.7 版本: CRT下载分享与破解 文章目录 dot1x 开启802.1X身份验证 开启802.1X身份验证,需要在系统视图和接口视…

leetcode-73.矩阵置零-day5

class Solution {public void setZeroes(int[][] mat) {int m mat.length, n mat[0].length;// 1. 扫描「首行」和「首列」记录「首行」和「首列」是否该被置零boolean r0 false, c0 false;for (int i 0; i < m; i) {if (mat[i][0] 0) {r0 true;break;}}for (int j …

C++ webrtc开发(非原生开发,linux上使用libdatachannel库)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、libdatachannel库的下载和build二、开始使用 1.2.引入库3.开始使用 总结 前言 使用c开发webrtc在互联网上留下的资料甚少&#xff0c;经过我一段时间的探…

windows11 专业版 docker desktop 安装指南

家庭中文版需升级专业版&#xff0c;家庭版没有hyper-v。 开始运行optionalfeatures.exe打开windows功能 安装wsl2 步骤 1 - 启用适用于 Linux 的 Windows 子系统步骤 2 - 检查运行 WSL 2 的要求步骤 3 - 启用虚拟机功能步骤 4 - 下载 Linux 内核更新包 步骤 1 - 启用适用于 L…

解锁前端开发速度的秘密武器【Vite】

在前端开发的江湖中&#xff0c;有人偏爱 Webpack 的强大与稳定&#xff0c;有人钟情于 Rollup 的轻量与高效。而 Vite&#xff0c;这个后来居上的工具&#xff0c;却以“极致的快”和“极简的易”赢得了开发者的芳心。众所周知万事都有缘由&#xff0c;接下来我们就来深度剖析…

AI发展与LabVIEW程序员就业

人工智能&#xff08;AI&#xff09;技术的快速发展确实对许多行业带来了变革&#xff0c;包括自动化、数据分析、软件开发等领域。对于LabVIEW程序员来说&#xff0c;AI的崛起确实引发了一个值得关注的问题&#xff1a;AI会不会取代他们的工作&#xff0c;导致大量失业&#x…