我的第一个 VTK 程序

我的第一个 VTK 程序

  • 我的第一个 VTK 程序
    • VTK 可视化流程
    • 源程序
    • 运行结果

我的第一个 VTK 程序

环境:

  1. Visual Studio 2022 Commumity
  2. Qt 6.2.3 MSVC2019 64位
  3. VTK 9.3.0

不会Cmake编译VTK库?看这个:使用 Cmake 对 VTK-9.3.0 进行编译

不会在 VS2022里配置 VTK?看这个:VS2022+QT使用VTK教程

不会 VS2022 里配置 Qt?看这个:Visual Studio 2022 中 Qt 开发环境的搭建

VTK 可视化流程

在这里插入图片描述

源程序

中间遇到程序闪退,解决方法:VTK程序运行闪退解决方案

#include <vtkSmartPointer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkCylinderSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkProperty.h>
#include "vtkAutoInit.h"VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);int main()
{// 新建一个 Source 数据源对象vtkSmartPointer<vtkCylinderSource> cylinder = nullptr;cylinder = vtkSmartPointer<vtkCylinderSource>::New();// 设置属性cylinder->SetHeight(3.0); // 柱体高度cylinder->SetRadius(1.0); // 柱体半径cylinder->SetResolution(200); // 柱体横截面的边数// 新建一个 Mapper 映射器对象vtkSmartPointer<vtkPolyDataMapper> cylinderMapper = nullptr;cylinderMapper = vtkSmartPointer<vtkPolyDataMapper>::New();// 接受 cylinder 的输出,将数据映射为几何元素cylinderMapper->SetInputConnection(cylinder->GetOutputPort());// 新建一个 Actor 演示对象vtkSmartPointer<vtkActor> cylinderActor = nullptr;cylinderActor = vtkSmartPointer<vtkActor>::New();// vtkActor 派生自 vtkProp 类,渲染场景中数据的可视化表达是通过 vtkProp 的子类负责的// vtkProp 子类负责确定渲染场景中对象的位置、大小和方向信息cylinderActor->SetMapper(cylinderMapper);cylinderActor->GetProperty()->SetColor(0.0, 0.0, 1.0);// 创建一个 Renderer 渲染器对象,负责管理场景的渲染过程vtkSmartPointer<vtkRenderer> renderer = nullptr;renderer = vtkSmartPointer<vtkRenderer>::New();// 添加 vtkProp 类型的对象到渲染场景中renderer->AddActor(cylinderActor);// 设置渲染场景的背景颜色renderer->SetBackground(1.0, 1.0, 1.0);// 创建一个 Window 窗口对象,负责本地计算机系统中窗口创建和渲染过程管理vtkSmartPointer<vtkRenderWindow> window = nullptr;window = vtkSmartPointer<vtkRenderWindow>::New();window->AddRenderer(renderer);window->SetSize(600, 480); // 设置窗口大小window->Render();window->SetWindowName("Cylinder"); // 设置窗口标题// 新建一个 Interactor 交互器对象,提供平台独立的响应鼠标、键盘和时钟事件的交互机制vtkSmartPointer<vtkRenderWindowInteractor> interactor = nullptr;interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();// 设置渲染窗口,消息是通过渲染窗口捕获到的,所以必须要给交互器对象设置渲染窗口interactor->SetRenderWindow(window);// 新建一个交互器样式对象,该样式下,用户通过控制相机对物体作旋转、放大、缩小等操作vtkSmartPointer<vtkInteractorStyleTrackballCamera> style = nullptr;style = vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();// 定义交互器样式,默认的交互样式为 vtkInteractorStyleSwitchinteractor->SetInteractorStyle(style);interactor->Initialize();interactor->Start();// 使用了智能指针,不需要手动释放内存return EXIT_SUCCESS;
}

运行结果

其显示的一个多边形棱柱,其中可以通过cylinder->SetResolution(200)设置该柱体的边数,将这个值设置较大时,图中的轮廓已经看不清了。

在这里插入图片描述

在得到这个图像后,将鼠标左键放置在窗口内,长按并移动鼠标时能够旋转该柱体;滚动鼠标滚轮,可以缩放柱体;长按并按住shift时,可以通过鼠标拖动图像;另外,可以按P键观察到图中的红框。

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

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

相关文章

代码随想录算法训练营第二十五天|17.电话号码的字母组合、39.组合总和

文档链接&#xff1a;https://programmercarl.com/ LeetCode17.电话号码的字母组合 题目链接&#xff1a;​​​​​​​​​​​​​​https://leetcode.cn/problems/letter-combinations-of-a-phone-number/ 思路&#xff1a; 理解本题后&#xff0c;要解决如下三个问题&…

Apache Hive的基本使用语法(一)

一、数据库操作 创建数据库 create database if not exists myhive;查看数据库 use myhive; desc database myhive;创建数据库并指定hdfs存储 create database myhive2 location /myhive2;删除空数据库&#xff08;如果有表会报错&#xff09; drop database myhive;…

基于jsp+mysql+Spring的SpringBoot招聘网站项目

基于jspmysqlSpring的SpringBoot招聘网站项目&#xff08;完整源码sql&#xff09;主要实现了管理员登录,简历管理,问答管理,职位管理,用户管理,职位申请进度更新,查看简历 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀…

图的应用之关键路径

1.AOV网&#xff08;Activity On Vertex NetWork&#xff09; 用DAG图表示一个工程。顶点表示活动&#xff0c; < V i , V j > <V_i,V_j> <Vi​,Vj​>表示 V i V_i Vi​必须先于活动 V j V_j Vj​进行 2.拓扑排序 &#xff08;1&#xff09;拓扑排序定义 …

同一个主机配置多个SSH key

使用git时&#xff0c;我们可能一个git客户端使用多个git服务器&#xff0c;比如github&#xff0c;自建gitlab&#xff0c;gitee&#xff0c;为了防止提交混乱&#xff0c;所以需要一一对应生成公私钥。 第一步&#xff1a; 使用ssh-keygen生成多对密钥对&#xff0c;比如&…

静态NAT配置

静态NAT配置 配置命令&#xff08;详细&#xff09;&#xff1a;ip nat inside source static 协议 内部IP地址 端口 外部IP地址 端口 extendable 例如下图&#xff1a; 配置命令&#xff1a; 第一步&#xff08;说明通告地址&#xff09;&#xff1a;ip nat inside source sta…

Chrome浏览器 安装Vue插件vue-devtools

前言 vue-devtools 是一个为 Vue.js 开发者设计的 Chrome 插件。它可以让你更轻松地审查和调试 Vue 应用程序。与普通的浏览器控制台工具不同&#xff0c;Vue.js devtools 专为 Vue 的响应性数据和组件结构量身定做。 1. 功能介绍 组件树浏览&#xff1a;这个功能可以让你查…

信息工程大学第五届超越杯程序设计竞赛(同步赛)题解

比赛传送门 博客园传送门 c 模板框架 #pragma GCC optimize(3,"Ofast","inline") #include<bits/stdc.h> #define rep(i,a,b) for (int ia;i<b;i) #define per(i,a,b) for (int ia;i>b;--i) #define se second #define fi first #define e…

MySQL 索引失效场景总结

查询条件有 or 假设在 customer_name 字段设置了普通索引&#xff0c;执行以下 sql&#xff1a; # type: ref, possible_keys: idx_customer_name, key: idx_customer_name # idx_customer_name 索引生效 explain select id, customer_name, company_name from t_user_info w…

babyAGI(3)-COOPERATIVE_MODE

babyAGI中有cooperative模式&#xff0c;其核心是调用ray库&#xff0c;实现分布式多进程执行任务。 从BabyAGI的源码中&#xff0c;我们可以学习ray core的使用。 1. Ray核心概念 1.1 Tasks Ray 允许在单独的 Python 工作线程上异步执行任意函数。 这些异步执行的函数被称为…

JavaSE:继承和多态(下篇)

目录 一、前言 二、多态 &#xff08;一&#xff09;多态的概念 &#xff08;二&#xff09;多态实现条件 &#xff08;三&#xff09;多态的优缺点 三、重写 &#xff08;一&#xff09;重写的概念 &#xff08;二&#xff09;重写的规则 &#xff08;三&#xff09;重…

Ubuntu上安装d4rl数据集

Ubuntu上安装d4rl数据集 D4RL的官方 github: https://github.com/Farama-Foundation/D4RL 一、安装Mujoco 1.1 官网下载mujoco210文件 如果装过可以跳过这步 链接&#xff1a;https://github.com/deepmind/mujoco/releases/tag/2.1.0 下载第一个文件即可。我这里是在windo…

专升本-信息安全

信息安全&#xff1a; 1.信息安全的基本属性&#xff1a;保密性&#xff0c;完整性&#xff0c;可用性 信息本身的安全是指保证信息的保密性&#xff08;非授权用户不能访问信息&#xff09;&#xff0c;完整性&#xff08;信息正确&#xff0c;完整&#xff0c;违背篡改&…

win10怎么设置屏幕保护,win10设置屏幕保护方法

电脑屏幕保护的作用主要有三个,第一,可以防止电脑因无人操作而使显示器长时间显示同一个画面,导致加速老化而缩短显示器寿命。第二,防止你离开电脑后屏幕上的隐私被偷窥。第三,大幅度降低屏幕亮度,有一定的省电作用。而Win10系统中呢是可以设置屏幕保护的,如果你想了解具…

uniapp微信小程序消息订阅详解

一、微信公众平台申请订阅模板 注意&#xff1a;订阅信息 这个事件 是 当用户 点击的时候触发 或者 是 支付成功后触发&#xff0c; 用户勾选 “总是保持以上选择&#xff0c;不再询问” 之后或长期订阅&#xff0c;下次订阅调用 wx.requestSubscribeMessage 不会弹窗&#xf…

FastAPI+React全栈开发11 开始使用FastAPI

Chapter03 Getting Started with FastAPI 11 Summary FastAPIReact全栈开发11 开始使用FastAPI Arguably the most important part of our FARM stack is going to be the application programming interface(API). The AIP is the brain of our system, it implements the …

【最后一天!】月底 京东云服务器特价 价格更低 幻兽帕鲁、雾锁王国 32G仅210/3个月

本文纯原创&#xff0c;侵权必究 【云服务器推荐】价格对比&#xff01;阿里云 京东云 腾讯云 选购指南视频截图 《最新对比表》已更新在文章头部—腾讯云文档&#xff0c;文章具有时效性&#xff0c;请以腾讯文档为准&#xff01; 【腾讯文档实时更新】2024年-幻兽帕鲁服务器…

CSP:内容安全策略详解

在当今的网络安全环境中&#xff0c;内容安全策略&#xff08;Content Security Policy&#xff0c;简称CSP&#xff09;扮演着至关重要的角色。CSP是一种由浏览器实施的安全机制&#xff0c;旨在减少和防范跨站脚本攻击&#xff08;XSS&#xff09;等安全威胁。它通过允许网站…

这次彻底搞懂类加载器吧!!!

一、类加载过程 类加载过程分为&#xff1a;加载->链接->初始化 链接过程具体细分为&#xff1a;验证->准备->解析 二、类加载器 1、定义 类加载器是一个加载类的对象&#xff0c;它工作在类加载过程中的加载这一步&#xff0c;通过类的全类名获得该类的二进制…

蓝桥杯2014年第十三届省赛真题-猜字母

一、题目 猜字母 把abcd...s共19个字母组成的序列重复拼接106次&#xff0c;得到长度为2014的串。 接下来删除第1个字母&#xff08;即开头的字母a&#xff09;&#xff0c;以及第3个&#xff0c;第5个等所有奇数位置的字母。 得到的新串再进行删除奇数位置字母的动作。如此…