如何安装vtk入门篇

2023-11-06

--转载

原来写过一些文字,觉得没有用。现在发现很多朋友学习vtk起步很难,自己又把它拿出来,改了改贴出来,同时也帖在自己的blog里。希望对新手有帮助:)

我这里使用的是vtk5.0,介绍如何安装在windows和linux上,都是我实践过的流程。

自己用vtk有两三年了,不精不专,但多少有些收获,一时兴起,写一些 vtk安装的文字。我选用的version是最新的稳定版本5.0,其实所有的内容都可以从vtk官方网站
http://vtk.org上获得。

一、简要介绍

VTK(Visualization Toolkit)是一款用于二次开发的可视化工具包,在世界上同类产品中最有影响,基本上可以作为可视化领域的规范。

VTK的历史和现状:

1993 年12月,GE的Will Schroeder, Ken Martin两个人写了一本书: The Visualization Toolkit: An Object-Oriented Approach to 3D Graphics,VTK作为这本书的配套软件赠送。由于VTK的出色表现,人们对软件的关注程度远远超过了书,没有几年时间VTK就拥有了巨大的用户群。VTK现在是由kitware公司维护,以开源的形式开发,全世界所有的人都可以加入到开发者的行列。现在VTK的稳定版本是5.0,nightly 版本每天都会有更新。

VTK的特点:

Open Source。采用CVS版本控制

跨平台。支持Windows、Unix、Linux、Mac等多种平台

功能强大。适合几乎所有的可视化领域,从医学可视化到数据可视化,都能找到VTK的用户

支持多种语言开发。c语言当然不用说了,还包括脚本语言,如TCL、Python,也支持Java

具有强大的开发团队。包括多家开发单位,具有商业化的维护,具有来自全世界使用者的智力资源:)

二、安装前的准备

因为VTK是开源的,我们能从官方网站上得到它的源码,又因为它是跨平台的,我们就要对源码进行一些包装,才能被gcc vc6.0等不同编译器所接受。VTK使用的跨平台工具是CMake,它也是kitware公司的产品,可以从官方主页上获取。

很多人不清楚cmake到底是干什么的,我这里想解释解释。我们下载的vtk源码都是用c++编写的,是一个大的工程,无论在什么平台,用什么编译器,你都要告诉编译器该如何去编译这么一个庞然大物。工程文件是工程的一般组织形式,比如 vc6.0下面是dsw文件,gcc下可以把makefile看成这么一个东西。这些工程体系告诉编译器该干什么,需要什么样的参数等,好,cmake就是这样一个用来生成适合不同编译器所需要的工程文件的工具。 cmake为什么知道那些编译参数呢,这不得不提CMakeList.txt这个文件,正是这个文件,提供了这些信息,还句话说,如果没有 CMakeList.txt,我们就不能使用cmake。有人又会问,如果不用cmake,可以编译vtk吗?那当然可以,比如在vc中,可以建立一个新的工程,把文件一个个往里面添加,编译选项也要自己加,在linux下,就自己写makefile,当然,这个方法几乎是无法实现的,就算实现,在今后的开发过程中还会遇到很多麻烦。所以,还是乖乖用cmake吧!

安装前,需要获得下面的文件,我这里以vtk5.0为例,在winxp+vc6.0和linux+gcc下实现

linxu:

预安装gcc3.0

vtk-5.0.0.tar.gz vtk的源码

vtkdata-5.0.0.tar.gz vtk例子所需要的数据

cmake-2.4.3-Linux-i386.tar.gz cmake程序,现在从官网上下载,是免编译的

windows:

预安装vc6.0

vtk-5.0.0.zip vtk的源码

vtkdata-5.0.0.zip vtk例子所需要的数据

CMSetup243-win32.exe cmake安装程序

上面不同系统下,vtk源码以及data其实是一样的,只不过使用了不同大包工具。另外,cmake版本的选择是根据vtk版本来定的,比如vtk5.0所需要的最低cmake版本好像是2.0,这里我们索性用更新的2.4。

三、windows下的vtk安装

1、安装cmake

这个应该很简单吧,windows下安装软件是傻瓜化的,运行CMSetup243-win32.exe,不停地点击下一步就行了

2、解压两个压缩包,建立所需文件夹

我不喜欢直接在源码里编译,而是另外建立一个bin文件夹。比如我把c:\vtk\作为我们的主目录,将vtk源码解压在vtk5.0这个文件夹中,把 data解压在vtkdata这个文件夹中,再建立一个空的文件夹取名为bin。注意,.\vtk5.0下面,应该就是一大堆文件夹和文件,.\ vtkdata下面应该也可以发现几个子文件夹。

3、运行cmake

首先,将源码和编译工作目录两个目录添好,在这个例子中,sourse code目录是c:\vtk\vtk5.0\,build 目录是c:\vtk\bin\。

再按configure按钮,cmake软件会让你选择需要使用的编译器,这里我们选vc6.0,然后,cmake就会对系统进行扫描了,停下来之后,我们就可以修改cmake选项了。

修改cmake选项。这个环节还真不好说,一般vtk的初学者只需要用默认设置就行了。我只提醒一些比较重要的选项:

build_examples: 就是询问是否编译vtk中的例子,如选则on,就要花时间把vtk的例子编译一遍,我一般不选

build_testing: test code 就是vtk开发者用来测试 vtk代码的一些测试代码,我们常常把它们当成学习vtk的例子,与build_examples类似,是否编译他们,看个人喜好。

build_shared_libs: 如果设置为off,就只会生成lib文件,用于开发肯定是够了。如果设置为on,将会多生成dll文件。他们的区别不是我这里说得清楚的,反正如果用静态库编程,应用程序可以独立运行,尺寸也比较大,如果用动态库编程,应用程序必须找到动态库才能运行,但尺寸可以做得比较小

cmake_install_prefix: 这个比较重要,就是以后要安装vtk的路径。有些人又要问,我编译完了不就可以用vtk了吗,为什么还要安装?对,不安装其实可以,安装的好处就是可以从 1G多的文件中提取出.h .lib .dll等精华,安装在指定目录下,并修改系统环境变量

vtk_data_root: 一般地,cmake可以自己找到vtkdata的路径,但如果没有,把c:\vtk\vtkdata\填上即可,告诉cmake,vtk需要的数据都在哪里

vtk_use_parallel: 对于想用vtk做并行计算的朋友,要把这个选上,对于只想学学vtk的,保持默认off

vtk_use_guisupport: 很多人把vtk安装好了,却无法运行vtk中与mfc混合编程的例子,提示错误都是缺少vtkmfc.lib,问题就出在这个选项,我们必须把它设置为 on,再次configure之后,会出现一个新的选项vtk_use_mfc,把它也设置为on就行了。

提示:在cmake中,有些选项是依赖于另一些选项的,比如vtk_use_guisupport和vtk_use_mfc,当我们禁用vtk_use_guisupport,vtk_use_mfc是看不到的。

修改完cmake选项以后,不停的按configure按钮,直到没有选项显示为红色,而且此时,ok按钮可用,点击ok按钮,就可以生成vc的工程文件了。

4、用vc6.0编译

用vc6.0打开bin目录下的vtk.dsw文件,因为文件很多,打开速度会有些慢。打开后,直接build。编译的用时和计算机性能,以及cmake中的一些选项有关,一般1个小时内可以完成。结果保存在.\bin\bin目录下。

编译也会出现不成功的时候,就要看编译器提示的错误类型来处理了!

5、安装

用vc6.0 打开bin目录下的install.dsp文件,不用理会提示的错误,直接build。编译结果就会安装在cmake_install_prefix设定的目录下。这个时候,把c:\vtk目录删除都行。当然,建议保留,也许以后还要更改cmake选项,再次修复编译呢。cmake会检查到改动,只处理改动过的地方,没有改动过的就不要重新编译了。

四、在linux下的vtk安装

linux下安装和windows下安装思路是一样的,我这里假设你已经基本熟悉linux的基本操作。

1、安装cmake

现在从官方网站上下载的cmake是免编译的,我们可以直接在cmake源码的bin文件夹下找到ccmake这个可执行文件。就算没有编译,自己动动手,编译一下吧。另外,最好把ccmake命令加入到系统可搜索的范围内,这样就能直接运行ccmake命令了。

2、解压两个压缩包,建立所需文件夹

同window下安装,指定一个主目录,比如~/vtk/,建立三个文件夹,解包。

3、cmake

cd ~/vtk/bin/

ccmake ../vtk5.0

修改cmake的选项也参考前面windows下的vtk安装,因为linux下的cmake是文字界面,所以操作起来不直观,功能还是没有少的。

4、编译

cd ~/vtk/bin/

make

make命令可以看成是gcc编译器调用makefile文件,进行编译

5、安装

cd ~/vtk/bin/

sudo make install

这里之所以用sudo,是因为一些文件的读写需要root权限

五、总结

学习vtk最好的教材是vtk user guide和the visualization toolkit,最好的解决的难题的方法是通过vtk mail list 、qq、论坛、google等方式。

enjoy vtk!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何安装vtk入门篇 的相关文章

  • hashmap为什么用红黑树_HashMap

    以下面试题从看准 牛客 以及大量大厂面经中收集而来 面向真实面试 一 面试题总览 面试题整理后分为三大模块 分别是数据结构 扩容以及线程安全 同样梳理HashMap的时候也可以从这三个角度展开 下面这些问题相信大家在面试过程中也会被经常问到
  • 3D引擎--可移植到Android的开源的引擎

    随着android在全球的风靡 越来越多的人将自己的目光投向搭载android的 移动设备 但由于手持设备的局限性 怎样利用有限的资源来达到很好的体验 是设备厂商必须要考虑的问题 其中炫目的界面就是可以增加用户体验的一种方式 这其中 3D效
  • js按拼音查询结果集

    let strChineseFirstPY YDYQSXMWZSSXJBYMGCCZQPSSQBYCDSCDQLDYLYBSSJGYZZJJFKCCLZDHWDWZJLJPFYYNWJJTMYHZWZHFLZPPQHGSCYYYNJQYXX
  • 【Linux】权限管理,谁动了我代码?!

    目录 一 shell命令以及运行原理 二 Linux用户权限 1 su 用户切换 三 权限管理 1 理解 2 用户 3 文件类型 4 文件基本权限 5 设置文件权限方法 1 chmod 修改文件访问权限 2 chown 修改文件拥有者 3
  • TypeError: check() missing 1 required positional argument: 'self'

    TypeError check missing 1 required positional argument self TypeError check 缺少1个必需的位置参数 self 出现原因 1 没有实例化类直接引用 问题解决参考 ht
  • GLSL学习笔记---内置变量

    GLSL学习笔记 GLSL语言内置的变量 包括内置的顶点属性 attribute 一致变量 uniform 易变变量 varying 以及常量 const 一方面加深印象 另一方面今天的文章可以为以后的编程做查询之用 顶点属性 指顶点的信息
  • 【POC公开】CVE-2021-1675: Windows Print Spooler远程代码执行漏洞通告

    赶紧点击上方话题进行订阅吧 报告编号 B6 2021 062902 报告来源 360CERT 报告作者 360CERT 更新日期 2021 06 29 1 漏洞简述 2021年06月29日 360CERT监测发现安全研究人员在GitHub上
  • 三种方法构建Java树形结构,Stream真的厉害

    小熊学Java网站 https javaxiaobear gitee io 每周持续更新干货 建议收藏 平时大概率我们会构建一些树形结果返回给前端 比如菜单结构 部门列表 文件结构等 我们一般想到的就是利用递归来循环构建 现在 就我个人解决
  • 二值网络——开启小而快神经网络时代

    摘要 这种使用浮点计算的神经网络要求的大存储空间和大计算量 严重阻碍了其在手机 手表和移动机器人等设备上的应用 二值神经网络设法让计算主要在正1或负1间进行 几十倍地降低了网络大小和计算量 但一直以来难以达到高预测准确率 最新的进展大幅提高
  • E1接口介绍

    E1 通道本来设计用来传输电话的 每个 E1 带宽 2 048M 可以传 30 路电话 后来扩大的应用范围 可以用作传网络 串口等不同的业务 E1 是一个基本的传输单元 其最终还是通过光纤来传输的 如 PDH 光端机 就是用来传 E1 的
  • WSL2:开发环境安装

    写在前面 主要是记录一下如何安装和搭建基于WSL2的开发环境 参考博文 搭建优雅的Windows终端 Windows terminal scoop starship 一 安装WSL2 以管理员身份运行CMD 执行以下命令即可WSL和Linu
  • 26段简短代码带你零基础入门Python

    01 运行方式 本文示例代码使用的Python版本为Python 3 6 运行Python代码有两种方式 一种方式是启动Python 然后在命令窗口下直接输入相应的命令 另一种方式就是将完整的代码写成 py脚本 如hello py 然后在对
  • 最新版 dubbo-admin 0.3.0 版本安装配置教程,如何才能正确打开

    首先是资源的下载 进入该链接 https github com apache dubbo 然后往下翻 找到这里 点进去 然后这里我直接下载压缩包 解压以后 包里的内容 这里需要关注的有这两三个包 选中的 server是后端包 ui是前端包
  • three.js设置Geometry顶点位置、顶点颜色数据

  • 鸡和兔子共36脚100Matlab,matlab习题集精选.pdf

    matlab习题集精选 Matlab 习题 2014 12 Matlab 习题 1 MATLAB 操作基础 1 1用一元二次方程求根公示解方程x 2 2 x 3 0 的根 1 2三角形边长分别为3 4 5 求其面积 1 2 0 1 0 1
  • git 常见命令——将本地仓库推送到远程仓库的相关流程

    目录 1 初始化项目 2 建立本地仓库和远程仓库的连接 3 已有项目只需克隆项目到本地 无需进行前两步 4 创建并切换分支 4 1 查看当前分支 4 2 切换分支 4 3 常见分支类型有 4 4 在切换分支的时候 将当前分支修改的内容 同步
  • Outlook 错误号 0x800CCC0B,怎么解决?

    正常设置了OUTLOOK EXPRESS等邮件客户端软件后 若发信不正常 OUTLOOK EXPRESS会给您一个错误信息 这个错误信息里面会包含一个错误码根据错误码与下表进行比较 一般都可以找出大多数问题的解决办法 错误码 意义 0x80

随机推荐

  • 如何优雅的写单词_lduoj_kmp

    如何优雅的写单词 Description 单词背多少了 心里还没有点数了 还有多长时间考试你知道吗 你说 单词背到第几章了 呜呜呜 别骂了别骂了 再骂人傻了 在深知单词的重要性之后 PushyTao下定决心要好好背单词 为了防止在考试的时候
  • AngularJS之组件化篇

    AngularJS组件化 将页面中可以重复使用的标签封装成一个组件 方便这一部分UI重复使用 类似于JS中的函数 封装了一部分处理代码 通过函数调用就可以重复使用这些代码 组件可以用 component 注册 在 angular modul
  • java--基础--16.5--IO流--BufferedWriter,BufferedReader

    java 基础 16 5 IO流 BufferedWriter BufferedReader 1 字符流 字符流 字符流 字节流 编码表 字符输入流 Reader 抽象类 int read 一次读取一个字符 int read char ch
  • NXP i.MX RT1052介绍

    1 NXP i MX RT1052 连载之 MCU 简介 1 KiFF的博客 CSDN博客 2 NXP i MX RT1052 连载之 Boot 简介 2 KiFF的博客 CSDN博客 重要 3 i MXRT单片机 Cortex M7 i
  • 1-1、Lua总结开篇

    一 序言 最近在开发物联网相关的探针业务 用于对机顶盒中的网络数据进行嗅探并处理以获取用户行为数据 然后提供给大数据平台 由此 我们可以看到物联网很大一部分功能是为大数据服务的 采集 物 中的数据提供给大数据平台 而进一步讲 大数据的数据提
  • 华为OD机试真题 Java 实现【最短木板长度】【2022Q4 100分】,附详细解题思路

    一 题目描述 小明有 n 块木板 第 i 1 i n 块木板长度为 ai 小明买了一块长度为 m 的木料 这块木料可以切割成任意块 拼接到已有的木板上 用来加长木板 小明想让最短的木板尽量长 请问小明加长木板后 最短木板的长度可以为多少 二
  • FDFS如何卸载

    之前在安装FDFS的时候 有些 sample文件没有生成 我也不知道是不是安装的问题 所以只有是卸载重装 重装后 问题解决 1 停止trackerd服务 sudo service fdfs trackerd stop 2 停止storage
  • Vue.js2+Cesium1.103.0 三、模型加载与切割

    Vue js2 Cesium1 103 0 三 模型加载与切割 Demo 模型加载 const tileset new Cesium Cesium3DTileset url https lab earthsdk com model 3610
  • VMware推免费服务器版虚拟软件

    VMware宣布将免费推出服务器版虚拟软件VMware Server 而其beta版本已经可以下载 作为商业版VMware GSX Server的继任者 VMware Server for Linux Windows允许用户同时运行多个操作
  • JUC并发编程(多线程进阶整理)

    JUC并发编程 要想学习JUC就必须了解 java util concurrent 包的工具类 其中包含 java util concurrent 并发包 java util concurrent atomic 并发原子包 java uti
  • 什么是STC89C52单片机

    STC89C52是一个低功耗 高性能CMOS 8位单片机 片内含8k Bytes ISP In system programmable 的可反复擦写10000次的Flash只读程序存储器 器件采用ATMEL公司的高密度 非易失性存储技术制造
  • 旋转框目标检测mmrotate v1.0.0rc1 之RTMDet训练DOTA(二)

    1 模型rotated rtmdet的论文链接与配置文件 注意 我们按照 DOTA 评测服务器的最新指标 原来的 voc 格式 mAP 现在是 mAP50 IN表示ImageNet预训练 COCO表示COCO预训练 与报告不同的是 这里的推
  • 多重背包问题大全(超详细)

    题目 有N种物品和一个容量为V的背包 第i种物品最多有n i 件可用 每件费用是c i 价值是w i 求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量 且价值总和最大 首先多重背包问题可以转换为01背包来解决 关键就是如何转换 我
  • 联合目标检测和语义分割——学习笔记

    联合目标检测和语义分割 目标检测 目标检测是一种与计算机视觉和图像处理相关的计算机技术 用于检测数字图像和视频中特定类别的语义对象 例如人 建筑物或汽车 的实例 然而现实中物体的尺寸 姿态 位置都有很大的差异 甚至还可能出现重叠现象 这使得
  • vue--el-tree懒加载数据并且实现树的过滤

    树的样式 过滤效果 过滤代码实现 1 如果这里的树数据是全加载 即可使用element ui中的设置 进行前端过滤 element ui对应的组件位置
  • 究竟什么是token??

    基于服务器验证方式的验证流程 我们都是知道HTTP协议是无状态的 这种无状态意味着程序需要验证每一次请求 从而辨别客户端的身份 在这之前 程序都是通过在服务端存储的登录信息来辨别请求的 这种方式一般都是通过存储Session来完成 随着We
  • Java并发编程学习10-任务执行与Executor框架

    Java并发编程学习系列 任务执行与Executor框架 任务执行 1 串行地执行任务 2 显式地为任务创建线程 3 无限制创建线程的不足 Executor框架 1 基于 Executor 的 Web 服务器 2 执行策略 3 线程池 4
  • 2019最新 国内唯一的Android从程序员到架构师全套教程

    课程目标 国内唯一的Android从程序员到架构师全套视频教程 适用人群 Android开发至少两年经验的IT工程师 想深入了解Android开源平台的资深工程师 Android项目团队技术管理者 课程概述 遵循敏捷的迭代过程 从思想 方法
  • (二)Rocketmq目录结构及设计目标

    文章目录 一 目录结构 二 设计理念与目标 2 1设计理念 2 2设计目标 一 目录结构 1 broker broker模块 2 client 消息客户端 包含消息生产者 消费者相关类 3 common 公共包 4 dev 开发者信息 非源
  • 如何安装vtk入门篇

    转载 原来写过一些文字 觉得没有用 现在发现很多朋友学习vtk起步很难 自己又把它拿出来 改了改贴出来 同时也帖在自己的blog里 希望对新手有帮助 我这里使用的是vtk5 0 介绍如何安装在windows和linux上 都是我实践过的流程