Python的3D可视化库 - vedo (2)visual子模块 基本可视化行为
文章目录
- 1. visual模块的继承关系
- 2. 基类CommonVisual的方法
- 2.1 获取对象信息
- 2.1.1 对象本身信息
- 2.1.2 对象的查找表
- 2.1.3 对象标量范围
- 2.1.4 对象缩略图
- 2.2 呈现对象
- 2.2.1 在窗口显示
- 1.2.2 对象可见性
- 2.2.3 对象颜色
- 2.2.4 对象透明度
- 2.3 添加标度条
- 2.3.1 2D标度条
- 2.3.2 3D标度条
- 2.4 未实装或阉割的功能
- 2.4.1 鼠标操作性
- 2.4.2 事件
- 2.4.3 相机设置
1. visual模块的继承关系
visual子模块包含了管理对象及其属性的可视化和外观的基类。
这些类可以单独实例化,但是没有用处。一般是由子类的实例调用它们封装的方法。
以下是继承自这个模块的类的子类:
创建一个球体和立方体,用于后续测试:
import vedo
# 半径为0.7的球体
s = vedo.Sphere(r=0.7)
# 立方体
c = vedo.Cube()
# 使用窗口展示图形,N表示渲染空间的数目,size控制窗口大小
vedo.show([s, c], N=2, size=(800, 300))

后面使用c或s来表示这些类或其子类实例化的对象。
2. 基类CommonVisual的方法
CommonVisual封装的可视化相关的函数和属性,可以用来管理所有对象。
2.1 获取对象信息
2.1.1 对象本身信息
c.print()
打印对象本身
s.print()
c.print()

2.1.2 对象的查找表
c.LUT
以numpy格式返回对象的查找表。
查找表是VTK中用于将标量和颜色对应的映射表。
会返回一个列表,列表的长度表示设定的颜色数,列表中每个元素是颜色的rgb值和透明度值,范围在[0, 1]。
# 含有红、绿、黄3个颜色的LUT值,透明度值都是1(不透明)
[[1. 0. 0. 1.][0. 1. 0. 1.][1. 1. 0. 1.]]
LUT是内部的颜色映射器的数组展示,虽然可以使用数组直接给LUT赋值,但是没有意义。一般在使用cmap或build_lut时,会在内部自动改写LUT。
2.1.3 对象标量范围
c.scalar_range()
设置或获取对象可视化的标量范围。
跟LUT一样,可以设置,但是没实用。一般用来获取标量范围,然后据此进行相关操作。
2.1.4 对象缩略图
c.thumbnail()
创建对象的缩略图,并以数组的形式返回。
缩略图相当于展示窗口的截图,返回的数组表示这个截图的每个点的rgb颜色值。
具体参数:
zoom=1.25,指定窗口缩放大小。size=(200, 200),指定截图的宽、高像素值。bg='white',指定物体空间的背景颜色。azimuth=0,截图时相机旋转的方位角。elevation=0,截图时相机提升的高度。axes=False,截图是否带坐标系。
// 生成大小为5x5像素的缩略图数组
print(s.thumbnail(size=5, 5))
[[[255 255 255][223 223 223][196 192 193][255 255 255][255 255 255]]...[[255 255 255][223 223 223][191 191 191][255 255 255][255 255 255]]]
展示用的原图,和生成的缩略图转为像素图之后的图片:

2.2 呈现对象
2.2.1 在窗口显示
c.show(**options)
创建一个Plotter类的实例,或者使用现存的最后一个实例来显示单个对象。
这个方法是vedo.plotter.show的快捷方式。如果有超过一个对象需要显示,就得使用show(c1, c2, ..., options)。
返回使用的Plotter类的实例。
1.2.2 对象可见性
c.on() 打开对象的可见性。
c.off() 关掉对象的可见性。
c.toggle() 切换对象的可见性。

2.2.3 对象颜色
c.color()
设置一个颜色,或沿着标度值变化的一组颜色。
参数说明:
col,颜色或颜色组;alpha=None,列表,用于指定沿着标量范围变化的透明度;vmin=None,指定标量范围的最小值;vmax=None,指定标量范围的最大值;
目前只有PointsVisual子类继承了这个方法,并且实现时只能直接指定一个颜色和透明度,无法设置颜色组。 
2.2.4 对象透明度
c.alpha(alpha, vmin=None, vmax=None)
沿着标度值范围分配一系列的透明度。
当alpha=(0.0, 0.3, 0.9, 1),且标量范围在-10到150时,所有单元格的标量值,在接近-10的都会变透明,在1/4范围处的透明度是0.3,值接近150时不透明。
设置alpha=[(-5, 0), (35, 0.4), (123, 0.9)]时,单元格值低于-5是透明的,高于123时是90%的不透明度。
只有PointsVisual子类和ImageVisual子类继承了这个方法,且只能指定或获取透明度,无法设置渐变的透明度。

2.3 添加标度条
2.3.1 2D标度条
c.add_scalarbar()
为对象附加一个2D的标度条。
2D标度条是画在窗口上的,不会随物体转动。
只有在对象颜色映射器不为空时,才能成功创建2D标度条,表示标量值对应的颜色变化。
具体参数如下:
title="",标度条的标题;pos=(0.775, 0.05),标度条左下角的位置坐标。也可以是[0, 1]范围内的一对(x, y)坐标,分别表示左下角和右上角的位置。title_yoffset=15,标题和颜色标度条在垂直方向上的偏移值。size=(80, 400),像素值(宽, 高),表示标量条的尺寸。font_size=12,标题和数值标签使用的字体大小。nlabels=None,数值标签的数目。c=None,标度条文字的颜色。horizontal=False,是否水平放置标量条。use_alpha=True,颜色栏本身的透明度。label_format=':6.3g'数字标签的格式字符串,C格式。
# 按球体的y坐标的大小设定不同的颜色
s.cmap(["red", "yellow", "green"], s.vertices[:,1])
print(s.LUT)
s.add_scalarbar()
s.show()
输出LUT
[[0.99607843 0.11764706 0.12156863 1. ][1. 1. 0.21176471 1. ][0.01568627 0.49803922 0.0627451 1. ]]
展示图:
2.3.2 3D标度条
c.add_scalarbar3d()
与对象关联一个3D的标度条,并加到场景中。3D标度条可以随物体转动。
可以使用c.scalarbar访问这个标度条。
具体参数如下:
title="",标度条的标题;pos=None,参数未说明size=(0, 0),标度条的(厚度, 长度);title_font="",标题字体title_xoffset==-1.2,标题和颜色标度条之间的水平间距;title_yoffset=0.0,标题和颜色标度条之间的垂直间距;title_size=1.5,参数未说明title_rotation=0.0,标题的旋转角度;nlabels=9,数字标签的个数;label_font="",标签的字体;label_size=1,标签的缩放比例;label_offset=0.375,数字标签和刻度之间的间隔;label_rotation=0,标签旋转的角度;label_format="",浮点值和整值标签的格式;italic=0,标签数字斜体;c=None,标签数字颜色;draw_box=True,在颜色条周围绘制边框;above_text=None,参数未说明below_text=None,参数未说明nan_text="NaN",参数未说明categories=None,制作类别标度条,输入列表的格式为[value, color, alpha, textlabel];
2.4 未实装或阉割的功能
2.4.1 鼠标操作性
c.pickable(value=None) 设置或访问对象的可选取性(是否可以被鼠标选择)。
c.draggable(value=None) 设置或访问对象的可拖拽性。
这两个值可以设置和获取成功,但是展示时没有实际效果。
2.4.2 事件
c.add_observer(event_name, func, priority) 添加一个回调函数,事件触发时被调用。
c.invoke_event(event_name) 主动触发事件。
通过add_observer添加事件,绑定回调函数后,可以通过invoke_event触发这个事件。
事件名称可以任意填。但是它会发出警告:事件名称不合法,应该用VTK规定的事件名。
VTK中事件名是根据触发条件起的,如:KeyPress、MouseMove。但是即使填这些名字,在演示的窗口无法通过鼠标和键盘的操作触发事件。
2.4.3 相机设置
c.use_bounds(value=None) 设置当前相机在重置时是否忽略对象边界。
设定这个选项,并变换相机位置后,再使用plotter.reset_camera,在展示窗口无实际效果。
相关文章:
Python的3D可视化库 - vedo (2)visual子模块 基本可视化行为
文章目录 1. visual模块的继承关系2. 基类CommonVisual的方法2.1 获取对象信息2.1.1 对象本身信息2.1.2 对象的查找表2.1.3 对象标量范围2.1.4 对象缩略图 2.2 呈现对象2.2.1 在窗口显示1.2.2 对象可见性 2.2.3 对象颜色2.2.4 对象透明度 2.3 添加标度条2.3.1 2D标度条2.3.2 3D…...
Java AIO(NIO.2)
Java AIO(Asynchronous I/O,异步I/O),也被称为NIO.2,是Java平台提供的一种处理异步输入/输出操作的机制。作为Java NIO(New I/O)的扩展,AIO引入了一些新的API和特性,旨在…...
Flink 常用问题及常用配置(有用)
一、Flink 常用问题及常用配置 参数 示例 说明 execution.checkpointing.interval 3min Checkpoint 触发间隔 state.backend rocksdb / filesystem 用于设置statebackend类型, 默认会以内存为statebackend(无法支持大状态) taskmanager.memory.jvm-overhead.max 204…...
RocketMQ: 消息过滤,通信组件,服务发现
消息过滤 1 ) 简单消息过滤 /*** 订阅指定topic下tags分别等于 TagA 或 TagC 或 TagD */consumer.subscribe("TopicTest1", "TagA || TagC || TagD");如以上代码所示,简单消息过滤通过指定多个 Tag 来过滤消息,过滤的动作在服务器进…...
linux ubuntu的脚本知
目录 一、变量的引用 二、判断指定的文件是否存在 三、判断目录是否存在 四、判断最近一次命令执行是否成功 五、一些比较符号 六、"文件"的读取和写入 七、echo打印输出 八、ubuntu切换到root用户 N、其它可以参考的网址 脚本功能强大,用起来也…...
HTTP有哪些风险?是怎么解决的?
一、风险 HTTP是通过明文传输的,存在窃听风险、篡改风险以及冒充风险。 二、如何解决 HTTPS在HTTP的下层加了一个SSL/TLS层,保证了安全,通过混合加密解决窃听风险、数字签名解决篡改风险、数字证书解决冒充风险。 (1࿰…...
3.12MayBeSomeLinearAlgebra
X是M*(D1),XT为(D1)*M Ω是一行D1列,X乘以欧米噶是M行D1列 行是说样本个数,列是特征数量 如果是小样本,那么可能会出现特征数量大于样本个数 如果MD*DM就是M*M,...
学习日志015--python单链表
创建 class Node:def __init__(self,data):# 数据域self.data data# 链接域self.next Noneclass LinkList:def __init__(self,):# 初始化头节点self.head None# 记录链表的长度self.size 0 增加 #头插def insert_head(self,value):# 创建新节点node Node(value)q self…...
如何在Windows右键新建菜单中添加自定义项
Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\.py] "Python.File"[HKEY_CLASSES_ROOT\.py\ShellNew] "NullFile"""[HKEY_CLASSES_ROOT\Python.File] "FriendlyTypeName""文本.py"[HKEY_CLASSES_ROOT\Python.Fil…...
Spring Boot 3.0废弃了JavaEE,改用了Jakarta EE
Spring Boot 3.0废弃了JavaEE,改用了Jakarta EE 历史背景 javax变成Jakarta的主要原因是因为Java EE项目从Oracle转移到了Eclipse Foundation,并改名为Jakarta EE。 JavaEE是从Java 1.2版本开始推出的Java企业级开发平台,最初的名称是J2EE(J…...
pdf文档动态插入文字水印,45度角,旋转倾斜,位于文档中央,多行水印可插入中文
一行水印 /*** param inputFile 你的PDF文件地址* param outputFile 添加水印后生成PDF存放的地址* param waterMarkName 你的水印* return*/public static boolean waterMark(String inputFile,String outputFile, String waterMarkName){try {PdfReader reader new PdfRead…...
[ 渗透测试面试篇-2 ] 针对大规模资产的攻击思路
🍬 博主介绍 👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…...
深入解析 Web 应用中的 CHIPS(Partitioned Cookie Attribute)
深入解析 Web 应用中的 CHIPS(Partitioned Cookie Attribute) 最新发现flask3.1.0 的版本引入了新的特性:对CHIPS的支持。不少同学对这个可能有点陌生,本文带大家了解一下。 为了在隐私保护和功能需求之间取得平衡,Goo…...
从搭建uni-app+vue3工程开始
技术栈 uni-app、vue3、typescript、vite、sass、uview-plus、pinia 一、项目搭建 1、创建以 typescript 开发的工程 npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project2、安装sass npm install -D sass// 安装sass-loader,注意需要版本10,…...
归并排序与逆序对问题(C语言版)
一、引言 归并排序是一种高效且稳定的排序方法,而逆序对问题是算法领域的一个经典问题,本文教大家如何实现归并排序,以及如何使用归并排序去结果逆序对问题 二、归并排序 归并排序思想 分解:将待排序的数组分成两半,…...
网络爬虫总结与未来方向
通过深入学习和实际操作,网络爬虫技术从基础到进阶得以系统掌握。本节将全面总结关键内容,并结合前沿技术趋势与最新资料,为开发者提供实用性强的深度思考和方案建议。 1. 网络爬虫技术发展趋势 1.1 趋势一:高性能分布式爬虫 随…...
C++ 核心数据结构:Stack 与 Queue 类深度解析
🌟快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 🌟 目录 💯前言 💯Stack 类 (一)Stack 类的概念与特点 (二&#x…...
Python枚举类详解:用enum模块高效管理常量数据
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 在编程中,常量的管理是一个关键环节,合理的管理常量可以提高代码的可读性和可维护性。Python的enum模块提供了一种有效的方式来组织常量数据,通过枚举类(Enum)将相关的常量值集合在一起,使代码更具结…...
企业OA管理系统:Spring Boot技术深度探索
4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…...
汽车免拆诊断案例 | 2012款路虎揽胜运动版柴油车加速无力
故障现象 一辆2012款路虎揽胜运动版车,搭载3.0T柴油发动机(型号为306DT),累计行驶里程约为10.2万km。车主进厂反映,车辆行驶中加速无力,且发动机故障灯异常点亮。 故障诊断 接车后试车,发动…...
手把手教你用llama.cpp的RPC功能,把旧笔记本变成大模型推理服务器(附性能对比)
用llama.cpp的RPC功能将旧笔记本改造成大模型推理服务器的完整指南 1. 为什么需要分布式推理环境? 当我在2023年第一次尝试在个人笔记本上运行7B参数的大语言模型时,即使经过量化处理,生成每个token仍需要近10秒——这种体验简直令人崩溃。但…...
Plumbum管道与重定向完全教程:构建复杂Shell命令链
Plumbum管道与重定向完全教程:构建复杂Shell命令链 【免费下载链接】plumbum Plumbum: Shell Combinators 项目地址: https://gitcode.com/gh_mirrors/pl/plumbum Plumbum是一个强大的Python库,它让您在Python中编写shell脚本般简洁的代码&#x…...
SPI Flash性能翻倍秘籍:RT-Thread下W25Q的QSPI模式实战
SPI Flash性能翻倍秘籍:RT-Thread下W25Q的QSPI模式实战 在IoT设备开发中,存储性能往往是系统瓶颈之一。传统SPI接口的Flash存储器虽然成本低廉,但在高速数据读写场景下显得力不从心。本文将深入探讨如何通过QSPI模式充分释放W25Q系列Flash的潜…...
智能提取B站字幕:告别手动抄录的高效开源工具
智能提取B站字幕:告别手动抄录的高效开源工具 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 还在为手动记录B站视频字幕而烦恼?BiliBiliC…...
别再只会用FFT了!用MATLAB的czt函数实现窄带信号高分辨率频谱分析
别再只会用FFT了!用MATLAB的czt函数实现窄带信号高分辨率频谱分析 在信号处理领域,频谱分析是最基础也是最重要的技术之一。传统上,工程师们习惯使用快速傅里叶变换(FFT)来获取信号的频域信息。然而,当面对…...
如何突破教育资源壁垒?智能解析工具让电子课本获取效率提升200%
如何突破教育资源壁垒?智能解析工具让电子课本获取效率提升200% 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。 …...
别再死记硬背MIPI状态转换图了!用Python脚本模拟单向/双向Data Lane状态机
用Python脚本动态解析MIPI状态机:从理论到实践的可视化之旅 每次打开MIPI协议文档看到那些密密麻麻的状态转换图,是不是感觉像在解读外星密码?作为嵌入式开发者,我们需要的不是死记硬背那些LP-11→LP-01的箭头指向,而…...
告别Putty和串口助手:这款LVGL开发的LCOM,如何成为我的嵌入式开发调试新宠?
告别Putty和串口助手:这款LVGL开发的LCOM,如何成为我的嵌入式开发调试新宠? 作为一名嵌入式开发者,每天与各种开发板、单片机打交道是家常便饭。调试过程中,串口通信工具就像我们的"第三只手",从…...
Phi-3-mini-4k-instruct-gguf步骤详解:supervisor服务管理与错误日志定位方法
Phi-3-mini-4k-instruct-gguf步骤详解:supervisor服务管理与错误日志定位方法 1. 模型概述 Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型GGUF版本,特别适合问答、文本改写、摘要整理和简短创作等场景。这个开箱即用的解决方案已…...
3步革新Windows任务栏:TranslucentTB打造个性化桌面体验
3步革新Windows任务栏:TranslucentTB打造个性化桌面体验 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 在视觉主导的数字时代…...
