VTK-vtkInformation

news2024/11/16 15:27:21

前言:本博文主要介绍vtk中的接口vtkInformation的应用,以及vtkInformation的衍生用法,希望对各位小伙伴有所帮助,谢谢!

目录

vtkInformation介绍

描述:

Information中接受的类型:

 方法

vtkInformation在vtk中的应用

PipeLine Information

Port Information

Request Information

Data Information

Algorithm Information

vtkProp的方法SetPropertyKeys/GetPropertyKeys


vtkInformation介绍

描述:

用于存储vtkAlgorithm输入/输出信息。

vtkInformation表示vtkAlgorithm的一个输入或一个输出的信息和/或数据。它从键映射到几种数据类型的值。该类的实例收集在vtkInformationVector实例中,并传递给vtkAlgorithm::ProcessRequest调用。实例在特定输入或输出上引用的信息和数据定义了向vtkAlgorithm实例发出的请求。

Information中接受的类型:

 方法

以vtkInformationStringKey为例说明vtkInformation提供的方法

  //@{
  /**
   * Get/Set a string-valued entry.
   */
  void Set(vtkInformationStringKey* key, const char*);
  void Set(vtkInformationStringKey* key, const std::string&);
  const char* Get(vtkInformationStringKey* key);
  void Remove(vtkInformationStringKey* key);
  int Has(vtkInformationStringKey* key);
  //@}

vtkInformation在vtk中的应用

信息对象是整个VTK管道中用来保存各种信息的基本容器。所有信息对象都是vtkInformation类的实例。它们是异构的神经键到值映射,其中键的类型决定值的类型。以下是使用信息对象的位置的枚举。

PipeLine Information

管道信息对象保存管道执行的信息。它们存储在vtkExecutive或子类的实例中,可以通过vtkExecutive::GetOutputInformation()方法访问。每个输出端口有一个管道信息对象。它包含一个指向相应端口上的输出vtkDataObject的条目(如果已创建)。

vtkDataObject包含一个指向其相应的管道信息对象的指针,可通过vtkDataObject::GetPipelineInformation()访问。管道Information对象还保存了当过滤器执行和生成器生成输出时将填充数据对象的内容的信息。所包含的实际信息由输出数据类型和所使用的执行模型决定。输入连接的管道信息对象可以通过方法vtkExecutive::GetInputInformation()访问,它们是管道信息对象在与输入端口相连的输出端口上。

Port Information

端口信息对象保存有关输出端口上产生和输入端口使用的数据类型的信息。它们由vtkAlgorithm的实例存储。每个输入端口有一个输入端口信息对象,每个输出端口有一个输出端口信息对象。它们可以通过vtkAlgorithm::GetInputPortInformation()和vtkAlgorithm::GetOutputPortInformation()方法访问。端口信息对象通常被创建和填充通过vtkAlgorithm的子类来指定过滤器的接口。

Request Information

请求信息对象保存有关发送到执行或算法的特定请求的信息。有一个条目表明正在发送什么请求,可能还有其他条目提供有关特定请求的其他详细信息。这些信息对象不能通过任何公共方法访问,而是传递给实现请求的ProcessRequest()方法。

Data Information

数据信息对象保存有关当前存储在vtkDataObject中的内容的信息。每个数据对象中有一个数据信息对象,可通过vtkDataObject::GetInformation()访问。实际包含的信息由数据对象类型决定。

Algorithm Information

algorithm信息对象保存vtkAlgorithm实例的信息。每个算法对象都有一个算法信息对象,可通过vtkAlgorithm::GetInformation()访问。实际包含的信息由算法对象类型决定。

vtkProp的方法SetPropertyKeys/GetPropertyKeys

设置/获取属性键。属性键可以被一些渲染通道消化。例如,用户可以将道具标记为阴影映射渲染通道的阴影施法者。键被记录在渲染通道类中。初始值为NULL。

现对vtkActor对象增加一些辅助的属性,比如Name,Part Number等属性。

错误示例

//在创建vtkActor时添加Name属性
vtkActor* actor = ...;
vtkInformationStringKey* key = new vtkInformationStringKey("Name", "Merge");
vtkInformation* info = vtkInformation::New();
info->Set(key, strName.toStdString().c_str());
actor->SetPropertyKeys(info);
//获取刚添加的属性信息,结果OK
const char* name = actor->GetPropertyKeys()->Get(key);
int has = actor->GetPropertyKeys()->Has(key);

//在Picker获取选取Actor对象时,获取Name属性
if (nullptr != picker->GetActor()->GetPropertyKeys())
{
    vtkInformation* info = nullptr;
    info = picker->GetActor()->GetPropertyKeys();

    int nKeys = info->GetNumberOfKeys();

    vtkInformationStringKey* key = new vtkInformationStringKey("Name", "Merge");
    int has = info->Has(key);//结果为-1;
    const char* name = info->Get(key);//name为空
}

错误分析:在Picker获取属性时,又重新新建了Key,故无法获取相应的属性。

解决方案:在公共函数中,添加属性键

正确示例

//.h文件
static vtkInformationStringKey* MODEL_NAME();
//.cpp文件
vtkInformationKeyMacro(zx3DModel, MODEL_NAME, String);

//使用方法
vtkInformation* info = vtkInformation::New();
info->Set(zx3DModel::MODEL_NAME(), "name");
actor->SetPropertyKeys(info);

const char* name = info->Get(zx3DModel::MODEL_NAME());

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构与算法系列之堆排序

💗 💗 博客:小怡同学 💗 💗 个人简介:编程小萌新 💗 💗 如果博客对大家有用的话,请点赞关注再收藏 🌞 堆的概念和结构 如果有一个关键码的集合K { , , &…

关于万物悦享推广案例

关于万物悦享推广案例 项目介绍 万物悦享是一家改变传统消费模式的公司,致力于让消费者在衣食住行都能把消费变成开心享受的事情。该公司通过消费增值、绿色积分、12倍通证强制出局、卷轴和撸实现这一目标。在通证经济下,消费者可以通过获得通证再赚回…

容器技术 — Cgroups 与 Namespaces 支撑实现的操作系统虚拟化

目录 文章目录 目录操作系统虚拟化(容器技术)的发展历程ChrootCgroupsCgroup SubsystemsCgroup FilesystemCgroup HierarchyCgroups 的操作规则Cgroups 的代码实现 NamespacesUTS namespacePID namespaceIPC namespaceMount namespaceNetwork namespaceU…

Blender2023超好用的插件合集,还不抓紧用起来

Blender对于艺术家或电影制作人来说不再是一个陌生的名字。Blender 拥有一套全面的工具和一个用户友好的界面,使初学者和专业人士都可以使用它。全球开发人员和用户社区不断更新新功能和改进。此外,有这么多可用的工具和插件,Blender可以定制…

项目经理高效时间管理6大原则及技巧

1、 ( 10 2 ) * 5法则 项目经理以10分钟为一个周期,每个周期休息2分钟,这样1小时重复5次,就可以保障我们目标明确但精神和身体上的精力不会透支。 10分钟周期内,需要全心全意做一件事,进入全身心投入工作状态&#xf…

Kerberos从入门到精通以及案例实操系列(二)

5、安全集群使用说明 5.1、用户要求 具体要求以下使用说明均基于普通用户,安全集群对用户有以下要求: 集群中的每个节点都需要创建该用户该用户需要属于hadoop用户组需要创建该用户对应的Kerberos主体 实操,此处以atguigu用户为例&#x…

Spring Boot 系统初始化器详解

Spring Boot 3.x系列文章 Spring Boot 2.7.8 中文参考指南(一)Spring Boot 2.7.8 中文参考指南(二)-WebSpring Boot 源码阅读初始化环境搭建Spring Boot 框架整体启动流程详解Spring Boot 系统初始化器详解 自定义系统初始化器 Spring Boot 有多种加载自定义初始化器的方法&am…

账号长久不用、归属不明......企业要如何管理这些失控的账号?

据报道,谷歌将于今年底开始删除2年未使用个谷歌个人账号。理由是,谷歌发现,如果一个账户在一定时间内未被使用,那么该账户被入侵的概率更大。 这些长时间未使用的账号使用的密码一般都是比较老的或重用的密码,关联密码…

Linux之tar归档命令

目录 Linux之tar归档命令 定义 语法格式 参数及作用 常用选项 创建(非压缩的)包文件 ​编辑 创建带压缩的包文件 列出包文件中的文件列表 提取包文件到指定目录 tar打包时排除 --exclude -X或--exclude-from Linux之tar归档命令 定义 用于打…

全面的软件测试

1 全过程的软件测试图解 传统的软件测试,开发人员完成任务之后,最后交付给测试人员,这种模式下,测试人员不能及早发现需求阶段的缺陷,同时测试工作的开展也滞后了,产品质量得不到有效的过程控制和分析&…

echarts折线图使用记录

1项目中引入echarts文档api介绍,链接地址如下 https://echarts.apache.org/handbook/zh/basics/import 2 官网基础样例介绍,链接地址如下 https://echarts.apache.org/handbook/zh/get-started/ 3 基本折线图介绍内容及链接 3.1 最简单的折线图 3.2 笛卡尔坐标系中…

【Python】Step Into Python Class

【Python】Step Into Python Class Before All Python作为一门面向过程兼容面向对象的语言,在面向对象中,使用class关键字来申明一个类。 But,是不是应该深入考虑一下这个class的底层实现过程呢?(不考虑CPython&…

msvcp110.dll丢失怎么修复(一键修复办法)

msvcp110.dll是C编程中非常重要的库文件之一。它实现了运行时库的大部分功能,并提供了许多标准库和其他功能的具体实现,如多线程编程和IO操作等。提高程序的运行效率和稳定性。下面是详细解决msvcp110.dll丢失问题的方法跟msvcp110.dll文件的介绍。 msvc…

npm install报错 -> npm ERR! Unexpected token ‘.‘ 报错解决办法

原因: 我遇到这个问题的场景是用nvm1.1.7的版本安装了16.x以上的node, 然后再下载依赖的时候就报错了 总结一下就是nvm版本太低了,他的里面没有集成高版本node导致的 解决: 我们把nvm版本换到最新的就可以了 1. 卸载掉当前所有的node nvm …

ABIDE Preprocessed 结构态MRI数据集介绍及下载

ABIDE数据集介绍及下载 ABIDE Prerocessed项目是在ABIDE I 项目的基础上发展而来,主要是对ABIDE I中采集到的原始数据进行了一定的预处理和初步的特征提取。针对于fMRI和sMRI数据有着不同的处理方式,本次主要对其中提供的sMRI预处理结果进行介绍&#xf…

Python程序设计基础:标识符、变量与赋值、输入输出

文章目录 一、标识符二、变量与赋值三、输入输出 一、标识符 Python对每个标识符的命名存在要求: 1、每个标识符必须以字母或下划线“_”开头,后跟字母、数字或下划线的任意序列。根据这个规则,以下都是Python中的合法名称:a&…

excel如何实现识别文本在对应单元格填上数据?

要实现 Excel 识别文本在对应单元格填上数据,有以下两种方法: 方法一:使用 VLOOKUP 函数 1. 在 Excel 工作表中,输入一个表格,列名为对应的文本,行名为不同条目。 2. 准备输入数据,在一个新的…

python使用requests+excel进行接口自动化测试

在当今的互联网时代中,接口自动化测试越来越成为软件测试的重要组成部分。Python是一种简单易学,高效且可扩展的语言,自然而然地成为了开发人员的首选开发语言。而requests和xlwt这两个常用的Python标准库,能够帮助我们轻松地开发…

LInux之find查找

目录 LInux之find查找 定义 详解 格式 参数及作用 详解 1.按照文件名搜索 2.按照文件大小搜索 3.按照修改时间搜索 4.按照权限搜索 5.按照所有者和所属组搜索 6.按照文件类型搜索 7.逻辑运算符 8.其他选项 -exec参数 获取到该目录中所有以host开头的文件列表 如在…

【测试入门】测试用例经典设计方法 —— 因果图法

01、因果图设计测试用例的步骤 1、分析需求 阅读需求文档,如果User Case很复杂,尽量将它分解成若干个简单的部分。这样做的好处是,不必在一次处理过程中考虑所有的原因。没有固定的流程说明究竟分解到何种程度才算简单,需要测试…