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) 设置一个颜色,或沿着标度值变化的一组颜色。
参数说明:

  • col,颜色或颜色组;
  • alpha,列表,用于指定沿着标量范围变化的透明度;
  • vmin,指定标量范围的最小值;
  • vmax,指定标量范围的最大值;

目前只有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的标度条,并加到场景中。可以使用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,在展示窗口无实际效果。

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

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

相关文章

Mysql案例之COALESCE函数使用详解

hello,大家好,我是灰小猿!最近在做一个三表关联查询的场景处理时,遇到了一个比较有用的MySQL函数,在这里记录一下,大概场景如下: 需求场景 场景:有一张object_rel表,表中…

机器学习—迁移学习:使用其他任务中的数据

对于一个没有那么多数据的应用程序,迁移学习是一种奇妙的技术,它允许你使用来自不同任务的数据来帮助你的应用程序,迁移学习是如何工作的? 以下是迁移学习的工作原理,假设你想识别手写的数字0到9,但是你没…

寻找用户推荐人(考点:ifnull)【SQL+Pandas】

今天尝试刷一下力扣的sql面试题&#xff0c;这个写法我也是第一次见 题目是 我们需要在这个表中查出referee_id&#xff01;2的 正确写法是 select name from customer where ifnull(referee_id,0) ! 2 -- 不等于还可以这么写&#xff1a;<>

【软件开发】如何理解异地多活?

本文转载自https://mp.weixin.qq.com/s/T6mMDdtTfBuIiEowCpqu6Q,对文章部分内容做二次修改。 文章目录 01 系统可用性02 单机架构03 主从副本04 风险不可控05 同城灾备06 同城双活07 两地三中心08 伪异地双活09 真正的异地双活10 如何实施异地双活11 异地多活总结在软件开发领…

探索PDFMiner:Python中的PDF解析利器

文章目录 **探索PDFMiner&#xff1a;Python中的PDF解析利器**1. 背景介绍&#xff1a;为何选择PDFMiner&#xff1f;2. PDFMiner是什么&#xff1f;3. 如何安装PDFMiner&#xff1f;4. 简单库函数使用方法4.1 提取文本4.2 获取页面布局信息4.3 提取表格数据4.4 提取图像 5. 应…

攻防世界Web-bug

打开链接 先注册一个账号 创建成功&#xff0c;会给一个UID5 抓包的user值就是UID:用户名的md5加密的编码 点击Manage时要求admin用户 利用改包把user改成admin 1:admin的md5值为4b9987ccafacb8d8fc08d22bbca797ba 还要把url上的UID改为1 存在逻辑漏洞&#xff0c;成功越权 …

LLM( Large Language Models)典型应用介绍 1 -ChatGPT Large language models

ChatGPT 是基于大型语言模型&#xff08;LLM&#xff09;的人工智能应用。 GPT 全称是Generative Pre-trained Transformer。-- 生成式预训练变换模型&#xff1a; Generative&#xff08;生成式&#xff09;&#xff1a;可以根据输入生成新的文本内容&#xff0c;例如回答问题…

柔性数组(C语言)

柔性数组是 C99 标准中引入的一种特殊的数组&#xff0c;它可以用作结构体的最后一个成员&#xff0c;以便动态分配内存时灵活管理数组的大小。 1. 柔性数组的定义 柔性数组是结构体的最后一个成员&#xff0c;声明时不需要指定大小。例如&#xff1a; struct FlexibleArray {…

图像处理实验报告

实验一 图像处理的MATLAB基础 实验目的&#xff1a;熟悉数字图象处理的基本软件工具和操作 实验内容&#xff1a;Matlab应用复习&#xff0c;矩阵产生、操作&#xff1b;矩阵运算以及字符运算。 1.利用增量产生向量[0,2,4,6,8,10]。 2.利用magic(n)函数产生7维魔鬼矩阵A&am…

NLP论文速读(MPO)|通过混合偏好优化提高多模态大型语言模型的推理能力

论文速读|Dynamic Rewarding with Prompt Optimization Enables Tuning-free Self-Alignment of Language Models 论文信息&#xff1a; 简介&#xff1a; 本文探讨的背景是多模态大型语言模型&#xff08;MLLMs&#xff09;在多模态推理能力上的局限性&#xff0c;尤其是在链式…

如何更改手机GPS定位

你是否曾想过更改手机GPS位置以保护隐私、玩游戏或访问受地理限制的内容&#xff1f;接下来我将向你展示如何使用 MagFone Location Changer 更改手机GPS 位置&#xff01;无论是在玩Pokmon GO游戏、发布社媒贴子&#xff0c;这种方法都快速、简单且有效。 第一步&#xff1a;下…

Java项目实战II基于微信小程序的图书馆自习室座位预约平台(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 在知识爆炸的时代&#xff0c;图书馆和…

图像处理 - 色彩空间转换

色彩空间转换的含义与原理 色彩空间转换是指将一种颜色模型或表示方式中的颜色数据映射到另一种颜色模型中的过程。色彩空间&#xff08;Color Space&#xff09;本质上是一个三维坐标系统&#xff0c;每个点都表示图像中的某种颜色。在实际应用中&#xff0c;由于不同的色彩空…

web——sqliabs靶场——第十三关——报错注入+布尔盲注

发现是单引号加括号闭合的 尝试联合注入 发现不太行&#xff0c;那尝试报错注入。 测试报错注入 unameadmin) and updatexml(1,0x7e,3) -- &passwdadmin&submitSubmit 爆数据库 unameadmin) and updatexml(1,concat(0x7e,database(),0x7e),3) -- &passwdadmin&a…

大语言模型中Softmax函数的计算过程及其参数描述

文章目录 概要Softmax的定义 概要 **Softmax 作用&#xff1a;**主要用于自注意层&#xff0c;作用是将输出映射成区间在(0,1)的值&#xff0c;并且做了归一化&#xff0c;所有元素的和累加起来等于1。 **Softmax使用场景&#xff1a;**Llama-7B模型中&#xff0c;其在自注意层…

Jmeter中的断言(三)

9--MD5Hex断言 功能特点 数据完整性验证&#xff1a;验证响应数据的 MD5 哈希值是否符合预期。简单配置&#xff1a;只需提供预期的 MD5 哈希值即可。灵活配置&#xff1a;可以设置多个断言条件&#xff0c;满足复杂的测试需求。 配置步骤 添加 MD5Hex 断言 右键点击需要添加…

后端开发如何高效使用 Apifox?

对于后端开发者来说&#xff0c;日常工作中少不了接口的设计、调试和文档编写。你是否也曾因接口文档更新不及时、测试工具分散而头疼不已&#xff1f;Apifox&#xff0c;这款全能型工具&#xff0c;或许能成为你的效率神器&#xff01; Apifox究竟有哪些功能能帮助后端开发者…

JMeter监听器与压测监控之 InfluxDB

1. 简介 在本文中&#xff0c;我们将介绍如何在 Kali Linux 上通过 Docker 安装 InfluxDB&#xff0c;并使用 JMeter 对其进行性能监控。InfluxDB 是一个高性能的时序数据库&#xff0c;而 JMeter 是一个开源的性能测试工具&#xff0c;可以用于对各种服务进行负载测试和性能监…

操作系统基础——针对实习面试

目录 操作系统基础什么是操作系统&#xff1f;简述其主要功能请举例几种不同类型的操作系统&#xff0c;并简要说明它们的特点 操作系统基础 什么是操作系统&#xff1f;简述其主要功能 一、操作系统的定义 操作系统&#xff08;Operating System&#xff0c;简称OS&#xff…

uni-app快速入门(十)--常用内置组件(下)

本文介绍uni-app的textarea多行文本框组件、web-view组件、image图片组件、switch开关组件、audio音频组件、video视频组件。 一、textarea多行文本框组件 textarea组件在HTML 中相信大家非常熟悉&#xff0c;组件的官方介绍见&#xff1a; textarea | uni-app官网uni-app,un…