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子模块包含了管理对象及其属性的可视化和外观的基类。
这些类可以单独实例化,但是没有用处。一般是由子类的实例调用它们封装的方法。

以下是继承自这个模块的类的子类:

pointcloud
grids
volume
shapes
mesh
assembly
visual
CellCenters
Points
TetMesh
UnstructuredGrid
RectilinearGrid
StructuredGrid
Volume
many shapes
Text2D
Mesh
Assembly
PointsVisual
ImageVisual
VolumeVisual
CommonVisual
MeshVisual
Actor2D

创建一个球体和立方体,用于后续测试:

import vedo
# 半径为0.7的球体
s = vedo.Sphere(r=0.7)
# 立方体
c = vedo.Cube()
# 使用窗口展示图形,N表示渲染空间的数目,size控制窗口大小
vedo.show([s, c], N=2, size=(800, 300))

在这里插入图片描述
后面使用cs来表示这些类或其子类实例化的对象。


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赋值,但是没有意义。一般在使用cmapbuild_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,在展示窗口无实际效果。

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

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

相关文章

Typora+PicGo+云服务器搭建博客图床

文章目录 前言一. 为什么要搭建博客图床?1.1 什么是图床?1.2 为什么要搭建博客图床? 二. 安装软件三. 配置阿里云OSS3.1 注册,开通对象储存3.2 创建bucket3.3 找到你的地域节点3.4 accessKeyId和accessKeySecret3.5 给你的阿里云账户充值 四. 配置4.1 配…

下载安装Android Studio

(一)Android Studio下载地址 https://developer.android.google.cn/studio 滑动到 点击下载文档 打开新网页 切换到english ![](https://i-blog.csdnimg.cn/direct/b7052b434f9d4418b9d56c66cdd59fae.png 等待一会,出现 点同意后&#xff0…

【LSTM实战】跨越千年,赋诗成文:用LSTM重现唐诗的韵律与情感

本文将介绍如何使用LSTM训练一个能够创作诗歌的模型。为了训练出效果优秀的模型,我整理了来自网络的4万首诗歌数据集。我们的模型可以直接使用预先训练好的参数,这意味着您无需从头开始训练,即可在自己的电脑上体验AI作诗的乐趣。我已经为您准…

大语言模型---梯度的简单介绍;梯度的定义;梯度计算的方法

1. 梯度介绍 如果我们在一座山上(一个山的坡度有很多,陡峭的,平缓的),想要从山顶下山。而梯度就像告诉我们如何沿着最陡的下坡路线走,以尽快到达山脚(最低点)。 2. 梯度的定义 梯度…

鸿蒙学习高效开发与测试-测试工具(5)

文章目录 1、单元测试2、集成测试1. UI 测试框架2. DevEco Testing 测试平台2.1 稳定性测试2.2 场景化性能测试2.3 回归测试2.4 基础质量测试服务3. 命令行测试工具3.1 DevEco Testing SmartPerf3.2 DevEco Testing wukong3、专项测试1. 应用与服务体检2. 专项测试云测平台鸿蒙…

NFS搭建

NFS搭建 单节点安装配置服务器安装配置启动并使NFS服务开机自启客户端挂载查看是否能发现服务器的共享文件夹创建挂载目录临时挂载自动挂载 双节点安装配置服务器安装配置服务端配置NFS服务端配置Keepalived编辑nfs_check.sh监控脚本安装部署RsyncInofity 客户端 单节点安装配置…

基于CNN+RNNs(LSTM, GRU)的红点位置检测(pytorch)

1 项目背景 需要在图片精确识别三跟红线所在的位置,并输出这三个像素的位置。 其中,每跟红线占据不止一个像素,并且像素颜色也并不是饱和度和亮度极高的红黑配色,每个红线放大后可能是这样的。 而我们的目标是精确输出每个红点的…

使用 Elastic 收集 Windows 遥测数据:ETW Filebeat 输入简介

作者:来自 Elastic Chema Martinez 在安全领域,能够使用 Windows 主机的系统遥测数据为监控、故障排除和保护 IT 环境开辟了新的可能性。意识到这一点,Elastic 推出了专注于 Windows 事件跟踪 (ETW) 的新功能 - 这是一种强大的 Windows 原生机…

leetcode刷题记录(四十二)——101. 对称二叉树

(一)问题描述 . - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/symmetric-tree/description/给你…

LeetCode 力扣 热题 100道(九)反转链表(C++)

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 方法一:迭代法 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNod…

取电快充协议芯片,支持全协议、内部集成LDO支持从UART串口读取电压电流消息

H004D 是一款支持全协议的受电端诱骗取电协议芯片,支持宽电压输入 3.3V~30V,芯片内部集成LDO,可输出 3.3V电压, 支持 通过UART 串口读取电压电流,支持定制功能,芯片采用QFN_20封装,线路简单,芯片…

FreeRTOS——事件标志组

一、概念与应用 1.1概念 事件是实现任务与任务或任务与中断间 通信的机制,用于同步,无数据传输。(注意与二值信号量区分) 与信号量不同的是,事件可以实现一对多、多对多的同步,即一个任务可以等待多个事…

window11编译pycdc.exe

一、代码库和参考链接 在对python打包的exe文件进行反编译时,会使用到uncompyle6工具,但是这个工具只支持python3.8及以下,针对更高的版本的python则不能反编译。 关于反编译参考几个文章: Python3.9及以上Pyinstaller 反编译教…

【100ask】IMX6ULL开发板用SPI驱动RC522模块

目录 一、问题汇总: 1.无法寻卡 2.寻卡不稳定 二、修改设备树 三、驱动程序 四、测试程序 1.rc522_ap.c 2.rc522_app.h 3.rc522_test.c 4.Makefile 前言: CSDN上大部分对于RC522的文章都是正点的,虽然文章写的挺详细,两…

springboot购物推荐网站的设计与实现(代码+数据库+LW)

摘要 随着信息互联网购物的飞速发展,一般企业都去创建属于自己的电商平台以及购物管理系统。本文介绍了东大每日推购物推荐网站的开发全过程。通过分析企业对于东大每日推购物推荐网站的需求,创建了一个计算机管理东大每日推购物推荐网站的方案。文章介…

小R的二叉树探险 | 模拟

问题描述 在一个神奇的二叉树中,结构非常独特: 每层的节点值赋值方向是交替的,第一层从左到右,第二层从右到左,以此类推,且该二叉树有无穷多层。 小R对这个二叉树充满了好奇,她想知道&#xf…

高精度计算题目合集

高精度计算题目合集 1168:大整数加法 1168:大整数加法 1168:大整数加法 高精度加法原理: a,b,c 都可以用数组表示。这些都是基于c语言的算术运算符形成的运算。 c 3 ( c 1 c 2 ) % 10 c_3(c_1c_2)\%1…

【2024APMCM亚太赛A题】完整参考论文与代码分享

A题 一、问题重述二、问题分析问题一:水下图像分类问题二:退化原因建模问题三:针对单一退化的图像增强方法问题四:复杂场景的综合增强模型问题五:针对性增强与综合增强的比较 三、问题假设退化特征独立性假设物理模型普…

VMware虚拟机(Ubuntu或centOS)共享宿主机网络资源

VMware虚拟机(Ubuntu或centOS)共享宿主机网络资源 由于需要在 Linux 环境下进行一些测试工作,于是决定使用 VMware 虚拟化软件来安装 Ubuntu 24.04 .1操作系统。考虑到测试过程中需要访问 Github ,要使用Docker拉去镜像等外部网络资源,因此产…

C0030.Clion中运行提示Process finished with exit code -1073741515 (0xC0000135)解决办法

1.错误提示 2.解决办法 添加环境变量完成之后,重启Clion软件,然后就可以正常调用由mingw编译的opencv库了。