Windows下用CMake编译VTK及配置测试

作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

VTK是什么?

       VTK(visualization toolkit)是一个开源的免费软件系统,主要用于三维计算机图形学、图像处理和可视化。VTK是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的,包含有大约250,000行代码,2000多个类,还包含有几个转换界面,因此也可以自由的通过Java,Tcl/Tk和Python各种语言使用vtk。

       它以用户使用的方便性和灵活性为主要原则,具有如下的特点:

  1. 具有强大的三维图形功能。Visualization Toolkit 既支持基于体素Voxel-basedrendering 的体绘制Volume Rendering,又保留了传统的面绘制,从而在极大的改善可视化效果的同时又可以充分利用现有的图形库和图形硬件。

  2. Visualization Toolkit 的体系结构使其具有非常好的流streaming和高速缓存caching 的能力,在处理大量的数据时不必考虑内存资源的限制。

  3. Visualization Toolkit 能够更好的支持基于网络的工具比如Java 和VRML 。随着Web 和Internet 技术的发展VisualizationToolkit 有着很好的发展前景。

  4. 能够支持多种着色如OpenGL 等。

  5. Visualization Toolkit 具有设备无关性,其代码具有良好的可移植性。同时,官方也给出了各个编译器的技术文档与案例、教程。

  6. VTK应用程序使用Filter(过滤器)操作数据,每个过滤器检查其接受的数据并产生输出数据。多个Filter与数据源组成一个数据流网络。可配置的网络将原始数据转换为更易理解的模式。

  7. Visualization Toolkit 具有更丰富的数据类型,支持对多种数据类型进行处理。其核心数据模型能够表示几乎所有与物理科学相关的现实世界问题,适合涉及有限差分和有限元解决方案的医学成像和工程工作。

  8. 既可以工作于Windows 操作系统又可以工作于Unix 操作系统极大的方便了用户。

       通过VTK将科学实验数据如建筑学、气象学、医学、生物学或者航空航天学,对体、面、光源等等的逼真渲染,从而帮助人们理解那些采取错综复杂而又往往规模庞大的数字呈现形式的科学概念或结果。核医学成像:心脏SPECT图像(短轴视图)与心脏三维模型的融合。将仪器采集的实验数据通过计算机模拟成像,有助于发现医学问题。在航空航天方面,模拟飞行器轨道实验、风洞实验等,通过计算机模拟减少实际实验次数,可以降低成本,并可以多次实验找出问题。

下载与编译

       1)网站:Download | VTK,下载VTK压缩包。

我下载的版本是9.3,百度云地址:

链接:https://pan.baidu.com/s/1ZUdeWQOJuKAzf-VoC0Nueg 
提取码:4mgp 

       2)解压后如下图所示,还需要用CMake进行编译。

CMake安装和配置参考:https://zhaitianbao.blog.csdn.net/article/details/120222654

       3)安装好CMake后,按Win+R打开运行,输入cmd打开命令运行窗,输入cmake-gui,中间无空格,会出现cmake界面。source输入VTK的文件路径,build可以在其路径下创建个build文件夹,如下图所示。勾选advanced。

       4)点击configure配置,我是vs2017 x64,点确定就开始运行了。

​       5)configure第一次后应该要进行一次配置。BUILD_SHARED_ILBS打钩,为了后面生成库;CMAKE_INSTALL_PREFIX设置生成库的路径,建议是在VTK目录下创建个bin文件。

​       6)然后再次点击configure,只要有红色就再点,等没有红色后点击generate,生成完毕后build文件如下所示。点击sln进入项目。

       7)进入build文件夹,点击sln项目工程文件;选中ALL_BUILD,选择release/debug,再点击生成ALL_BUILD,此时会进行一段时间的编译操作;再选中INSTALL,点击仅生成,等待结束去看之前设置的bin文件夹,分别是DLL、头文件和LIB。

       8)至此,VTK库的编译已经结束。

配置与测试

       1)编辑环境变量,输入bin文件路径。

​       2)创建一个VS项目,可以单项目配置也可以全局配置,我喜欢每个项目独立开,各配置各的,就这样演示了。在项目设置中,包含目录中放include路径,库目录放lib路径。

​       3)链接器-输入-附加依赖项和lib名字全放进去,因为名字太多,可以找到lib目录,在路径框里输入cmd,这样可以快速定位到当前位置,然后输入下方命令,即可快速获取lib的名字排列。

dir /b *.lib>out.txt

       4)接下来,开始测试,输入下方代码,看看VS有没有异常提示,如果没有就直接运行,就ok啦。

#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
#include <vtkSmartPointer.h>
#include <vtkCylinderSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>int main() {// 创建圆柱体源vtkSmartPointer<vtkCylinderSource> cylinderSource = vtkSmartPointer<vtkCylinderSource>::New();cylinderSource->SetResolution(50); // 设置圆柱体的分辨率cylinderSource->SetHeight(3.0); // 设置圆柱体的高度cylinderSource->SetRadius(1.0); // 设置圆柱体的半径// 创建一个数据映射器vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();mapper->SetInputConnection(cylinderSource->GetOutputPort());// 创建一个演员vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();actor->SetMapper(mapper);// 创建一个渲染器vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();renderer->AddActor(actor);renderer->SetBackground(0.1, 0.2, 0.4); // 设置背景色为蓝色// 创建一个渲染窗口vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();renderWindow->AddRenderer(renderer);// 创建一个交互器vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();renderWindowInteractor->SetRenderWindow(renderWindow);// 开始渲染和交互renderWindow->Render();renderWindowInteractor->Start();return 0;
}

已编译好的库

百度云地址:

链接:https://pan.baidu.com/s/1Zyf2CsUp2nQ6TKf4HH84SA 
提取码:wdsb 

 

      VTK和OpenGL一样都是做三维计算机图形学的,不过OpenGL更通用,目前我刚加入医学领域,还有很多要学习的地方,有方便分享和记录的内容我会同步更新。

       以上就是“Windows下用CMake编译VTK及配置测试”的过程。 

       如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!

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

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

相关文章

Base64 编码 lua

Base64 编码 -- Base64 字符表 local base64_chars { A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,…

C#,动态规划(DP)N皇后问题(N Queen Problem)的回溯(Backtracking)算法与源代码

1 N皇后问题&#xff08;N Queen Problem&#xff09; 在N*N的方格棋盘放置了N个皇后&#xff0c;使得它们不相互攻击&#xff08;即任意2个皇后不允许处在同一排&#xff0c;同一列&#xff0c;也不允许处在与棋盘边框成45角的斜线上。 2 回溯算法 回溯算法实际上一个类似枚…

Linux软件高级编程-进程基本概念--day6

1.进程&#xff1a; 程序&#xff1a; 存放在外存的一段数据组成的文件 进程&#xff1a; 是一个程序动态执行的过程&#xff0c;包括进程的创建、进程的调度、进程的消亡 2.进程相关命令&#xff1a; 1&#xff09;top&#xff1a; 动态查看当前系统中所有进程信息&#xff08…

(Linux学习一):Mac安装vmWare11.5,centOS 7安装步骤教程

一。下载vmware 官网地址&#xff1a;下载地址 由于我的电脑系统是Mac 10.15.6版本系统&#xff0c;我下载的是VMware Fusion 11.5版本&#xff0c;13是最新版本不支持安装需要系统在11以上。 百度网盘下载地址: VMware Fusion 11 VMware Fusion 12 VMware Fusion 13 下载需要…

万界星空科技商业开源MES

一、万界星空科技商业开源MES系统概述&#xff1a; 万界星空科技免费MES、开源MES、商业开源MES、市面上最好的开源MES、MES源代码、适合二开的开源MES。 1.万界星空开源MES制造执行系统的Java开源版本。 开源mes系统包括系统管理&#xff0c;车间基础数据管理&#xff0c;计…

【管理咨询宝藏资料25】某能源集团五年发展战略报告

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏资料25】某能源集团五年发展战略报告 【关键词】战略规划、五年战略、管理咨询 【文件核心观点】 - LL应以快速做大做强为目标&#xff0c;专注…

五.AV Foundation 视频播放 - 标题和字幕

引言 本篇博客主要介绍使用AV Foundation加载视频资源的时候&#xff0c;如何获取视频标题&#xff0c;获取字幕并让其显示到播放界面。 设置标题 资源标题的元数据内容&#xff0c;我们需要从资源的commonMetadata中获取&#xff0c;在加载AVPlayerItem的时候我们已经指定了…

docker安装mongodb

1.使用docker安装mongo 1.1下载MongoDB镜像 docker pull mongo:4.4 1.2运行MongoDB容器 docker run -itd --name mongo -v /docker_volume/mongodb/data:/data/db -p 27017:27017 mongo:4.4 --auth 2.创建用户 2.1 登录mongo容器&#xff0c;并进入到【admin】数据库 dock…

kafka生产者

1.原理 2.普通异步发送 引入pom&#xff1a; <dependencies><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>3.0.0</version></dependency><dependency><g…

【wails】(6):使用wails做桌面应用开发,使用gin+go-chatglm.cpp进行本地模型运行,在windows上运行成功

1&#xff0c;整体架构说明 主要使用&#xff0c;参考的开源项目是&#xff1a; https://github.com/wailsapp/wails 前端项目&#xff1a; https://github.com/Chanzhaoyu/chatgpt-web 运行模型&#xff1a; https://github.com/Weaxs/go-chatglm.cpp 参考代码&#xff1a; h…

Python算法题集_实现 Trie [前缀树]

Python算法题集_实现 Trie [前缀树] 题208&#xff1a;实现 Trie (前缀树)1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【定义数据类默认字典】2) 改进版一【初始化字典无额外类】3) 改进版二【字典保存结尾信息无额外类】 4. 最优算法5. 相关…

JAVA集合进阶(Set、Map集合)

一、Set系列集合 1.1 认识Set集合的特点 Set集合是属于Collection体系下的另一个分支&#xff0c;它的特点如下图所示 下面我们用代码简单演示一下&#xff0c;每一种Set集合的特点。 //Set<Integer> set new HashSet<>(); //无序、无索引、不重复 //Set<…