VTK

VTK基础教程(1)- vtkPolyData 介绍 目录 VTK的编译与环境搭建 VTK一般渲染流程 VTK数据类型-vtkPolyData 使用vtk自带的多边形数据 使用自己创建的数据 添加顶点颜色 添加面颜色 VTK的编译与环境搭建 这部分目前已经有了大佬做了成熟的傻瓜式配置,大家可以参考这篇文章:VTK+VS2019(或其他版本均可) 傻瓜式一站式 配置_Nancy_fairy的博客-CSDN博客_vs2019 vtk VTK一般渲染流程 这部分的介绍也很多,大家可以参考这篇文章:VTK笔记-了解VTK_黑山老妖的博客. 阅读详情

一、简要介绍
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_divfix: 这个比较重要,就是以后要安装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_divfix设定的目录下。这个时候,把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,最好的解决的难题的方法是通过vtk mail list 、qq、论坛、google等方式。

VTK使用指南:介绍 本章讨论了开发大型和/或复杂软件系统的一些问题,并描述了面向对象设计如何解决其中的许多问题。本章定义了面向对象建模和设计中使用的关键术语,并通过一个真实世界的例子进行了工作。本章最后简要介绍了一些面向对象的语言以及与面向对象可视化相关的一些问题。 阅读详情

相关推荐

VTK修炼之道1_初识VTK

1.VTK是什么? Visualization ToolKit 3D计算机图形学、图象处理及可视化工具包 VTK使用C++、面向对象技术开发;基于OpenGL,封装了OpenGL中的功能,屏蔽细节、便于交互、易于使用提供多种语言接口C++ 、Java 、Tcl、 Python 等;可在Windows 98/NT, SGI, Linux,  Sun, HP等系统编译

沈春旭的博客 1万+

VTK 基本介绍

VTK(Visualization Toolkit)是 Kitware 公司发布的开源免费软件系统,受到国内外高等院校与科研机构的欢迎,广泛地应用于计算机图形学、图像处理与三维可视化等领域。VTK 独立于系统的图形界面接口(GUI),可方便的嵌入到其他的相关软件中。同时开发人员可以基于 VTK 独立的基础类库开发自己的库函数,拓展 VTK 的应用范围。 VTK 采用面向对象思想,基于 OpenGL 开发出目标函数库。它将将一些常用的算法封装为类的形式,用户在开发过程中可以直接调...

钢铁男儿 2万+

基于C++的VTK8学习笔记4(VTK体绘制)

第七章 VTK体绘制 实例59:体绘制管线(光线投影法体绘制) #include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL2); VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2); //错误:no override found for 'vtkRayCastImageDisplayHelper'. VTK_MODULE_INIT(vtkRenderingFreeType); VT

qq_32809093的博客 4640

VTK修行之相见恨晚

开启我的VTK之路

保持分享欲 2343

VTK交互

说到VTK交互,马上会想到的就是vtkRenderWindowInterator。他是VTK的交互类 可以响应各种的鼠标/键盘/时钟等消息事件。今天阅读了大量资料,关于如何给交互器增加或更改交互事件。在这里梳理一下,给以后做个参考。 在一篇VTK官方文档翻译中 看到大的方向先分为两大类(参考文献1):VTK两种不同的方法控制交互:(1)使用vtkInteractStyle的子类 (2)添加Obse

cfqcfqcfqcfqcfq的博客 5484

Mac下安装VTK6.2,并在Qt上使用VTK

VTK的安装 打开Qt Creator创建新工程 对新建工程配置OpenCV路径链接 编译运行例子 References最近要在mac运行一个Qt工程,需要使用OpenCV+ITK+VTK,搞了好久才搞定。我只想说,vtk+itk在mac上的资料真心少,虽然osx和linux的安装配置大体一样,但是就是那些许差异埋得坑真是磨人(特别是对于身为新手而言,泪奔啊´╮(╯﹏╰)╭ 。所以搞定之后打算

MingjaLee's Blog 6085

安装VTK

需要的环境及文件 平台:win10 已安装好的Visual Studio,建议2017及2019。vs主要是用来编译VTK,最后生成我们想要的库文件,头文件之类的。 已安装好的Qt,建议版本5.9或5.12 cmake-gui,如未安装可参照下面的教程。cmake是用来把下载下来的VTK源码配置生成vs的解决方案的,好让vs去打开编译。 1.下载VTK和cmake VTK下载地址:...

TiredWind的博客 1万+

VTK: VTK Error 问题集

总结一下VTK使用过程中的一些错误:            1、非编译错误           这部分错误并不是因为你错误使用VTK类或者是逻辑问题而导致的错误,而是因为缺失一些初始化的头文件而导致的错误          需要在main函数中先添加初始化头文件: #include            错误一:VTK Error: no override found for 'v

cfqcfqcfqcfqcfq的博客 5984

VTK笔记-了解VTK

最近,重新学习了VTK相关内容,网上资料质量参差不齐,自己从多处搜集资料,整理记录之; VTK简介 Vtk,(visualization toolkit)是一个开源的免费软件系统,主要用于三维计算机图形学、图像处理和可视化。Vtk是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的,包含有大约250,000行代码,2000多个类,还包含有几个转换界面,因此也可以自由的通过Java,Tcl/Tk和Python各种语言使用vtk。 视觉化工具函式库(VTK,Visualization Toolkit)

黑山老妖的博客 7151

VTK:基于Qt的VTK右击菜单实现

前面试过在Qt中实现右击菜单Qt右击菜单  现在尝试在嵌套在Qt中的VTK窗口实现右击菜单 原有方式不能成功。原因也很简单:在VTK窗口发送的是VTKEvent 所以Qt中的 contextMenuEvent(QContextMenuEvent *event) 不会处理该事件。所以要另谋出路 翻阅VTK文档发现了一个实现右击菜单的实例 贴出来与大家分享: void GUI4::popup(v

cfqcfqcfqcfqcfq的博客 2462

VTK:如何检查当前的VTK版本——实战演练

首先引入VTK库,然后定义一个函数来获取版本号,并最终在代码中进行调用和输出。这个方法简单易懂,如果你需要查看当前使用的VTK版本号,就可以尝试使用以上代码。在使用VTK进行编程开发的过程中,经常需要检查当前使用的VTK版本号。本文将介绍如何通过编写代码来获取当前正在使用的VTK版本号。是VTK库自带的一个类,它包含了许多静态方法,可以用于获取VTK的版本信息。如果上面的代码可以正常运行并显示出一个立方体,那么说明我们成功地获取了当前使用的VTK版本号。VTK:如何检查当前的VTK版本——实战演练。

techDM的博客 939

VTK 学习笔记

VTK 是什么 VTK,Visualization Tool Kit,可视化工具包。 VTK 是一个用于图像处理、三维图形、体绘制(通过模拟光线穿越半透明物体时的能量变化来绘制物体,即采用体光照模型对三维体数据场进行直接显示)、可视化的开源软件系统。 VTK 架构 VTK 库的框架结构 vtkObject -> vtkSource -> vtkFilter -> vtkMapper -> vtkActor -> vtkRenderer vtkObject vtkObject 是

TEDxPY 3388

STM32N6570-DK ISP调试

将下载线接入STLINK V3EC接口,将BOOT1拨码拨至右边,即将其置为H,上电或已经上电的按复位,打开STM32CubeProgrammer,设置start address:0x70000000。板子消耗电流较大,即使缩短数据线接了USB供电依然不能正常点亮显示屏,最终通过板上CN2端子加了外部5V供电,仍然需要560mA的外部电流。3.烧录bin文件:STM32N6_ISP_IQTune_App_revC01-v1.1.0-trusted.bin。

liu的博客 1059

VTK随笔十三:QT与VTK的交互

本文以VTK 读入一幅 JPG 图像,然后在 Qt 界面上使用 VTK 显示该图像为例,演示QT与VTK的交互。

u012959478的博客 3911

halcon 深度学习标注_Halcon deep learning之目标检测笔记(一)

设置输入输出的路径输入路径有两个,一个是图像路径HalconImageDir,一个是Json文件路径PillBagJsonFile。这两个参数用于后续在图像路径中读取coco文件。输出路径首先定义一个新的文件夹路径,用于存放样本和模型文件等数据。设置基于深度学习的目标检测模型的路径,该模型文件以.hdl结尾。设置样本数据文件夹ExampleDataDir:'detect_pills_data'数据...

weixin_27885313的博客 2694

图解电动汽车:电动汽车的分类

前面《电动汽车简介》中简单介绍了电动汽车的分类,主要包括混合动力电动汽车(HEV)和纯电动汽车(BEV)两大类。其中,混合动力汽车又可分为非插电式混合动力汽车、插电式混合动力汽车(PHEV)以及增程式电动汽车(REEV)。 主要分类 简单来说,各类电动汽车的特点如下。 纯电动汽车(BEV)就是指动力来源完全由电能提供,由电动机驱动的汽车,并且电能储存在电池中。 混合动力汽车(HEV)则是指动力来源可以是化石燃料,也可以是电能,并且电能除了可以存储在电池中,还可以由化石能源转化而来。 非插电式混合动力汽车

程序员「阿基米东」的编程之旅 3081

VTK| VTK下载和编译,以及VTK+VS配置

VTK介绍、下载和编译,以及VS项目如何配置VTK。

qq_40306845的博客 2639

论文必备 - YOLO26热力图可视化,支持指定模型,指定显示层,设置置信度,以及9种可视化实现方式

本文带来的是YOLO26热力图可视化功能,支持指定模型,指定显示层,设置置信度,以及9种可视化实现方式。我们经常看到一些论文里绘制了不同的热力图,一方面能够直观的感受其模型的有效性,另一方面也丰富了论文内容。特别是在使用了注意力模块的网络中,热力图就可以验证注意力机制是否真正聚焦到了预期的重要特征上,以便对模型的有效性和合理性进行评估。例如Centralized Feature Pyramid for Object Detection这篇文章中展示的,就很能够表达作者改进后的模型相比之前模型的优越性。在项目

Limiiiing的博客 423

Qt creator 配置VTK

Qt+VTK

AmorQas的博客 3633

ROCm rocr-libhsakmt分析系列1-2:多GPU跨卡VRAM访问机制分析

本文基于ROCr-Runtime的libhsakmt库源码,深入分析了多GPU系统中跨设备内存访问的实现机制。主要内容包括: 实现流程概述:通过P2P拓扑发现、统一虚拟地址空间、页表映射和硬件转发四个步骤,实现零拷贝的跨GPU内存访问。

图形/计算GPU的驱动与虚拟化技术分享园地 2486

基于STM32、HAL库的TCA9555PWR I/O扩展器驱动程序设计

define TCA9555_ADDR_BASE 0x20 // 基础地址 (A0=A1=A2=0)* @param direction: 方向 (0=输出, 1=输入)* @param direction: 方向 (0=输出, 1=输入)* @param polarity: 极性 (0=正常, 1=反转)* @param polarity: 极性 (0=正常, 1=反转)

corlin6688的博客 517

VTK学习之一(基本介绍、一个简单的VTK例子)

这篇主要讲一个VTK的简单例子,加深自己对VTK的理解。 前记 学习vtk就是觉得pcl中封装的PCLVisualizer功能有限。学习vtk主要是看《VTK图形图像开发进阶》张晓东、罗火灵编著这本书,还有就是水灵的视频。水灵的视频更加老一点,不是很影响对vtk的基本理解,我是看了一遍书之后再看水灵的视频,还是看视频理解来的更加深刻。 水灵用的版本是vtk5.6版本,东灵用的是vtk6.0版本,我用的版本是vtk8.0。 VTK介绍 VTK全称Visualization...

qq_42570058的博客 1万+

ROS2 多机器人导航仿真入门教程(一)

RMF 是建立在 ROS 2 基础上的一系列可重复使用、可扩展的库和工具,可实现任何类型机器人系统的异构机群的互操作性。RMF 利用标准化的通信协议与部署机器人的基础设施、环境和自动化系统进行通信,以优化关键资源(如机器人、电梯、门、通道等)的使用。它通过资源分配和通过 RMF 核心(将在本书后面详细介绍)防止共享资源冲突,从而为系统增加智能。RMF 灵活而强大,几乎可以在任何通信层上运行,并与任何数量的物联网设备集成。RMF 的架构设计允许随着环境自动化水平的提高而扩展。

2506_90492529的博客 1653

VTK初学-抄书笔记

数据可视化主要通过计算机图形学的方法,以图形、图像等形式清晰有效地传递、表达信息。随着数据获取手段的多样化以及数据规模的不断增长,数据可视化日益彰显其重要地位。从20世纪90年代起,针对数据可视化编程的工具包应运而生,VTK是其中最具代表性的工具包之一。我这里用的并不是CMake,正如我上面说的那样环境和教材不太一样。但我还是想着记一下毕竟不一定什么时候就能用到。对于使用VTK的开发人员而言,CMake是一个必须了解的工具,CMake的产生与发展也与VTK息息相关。

qq_51627050的博客 2552

[SoC]SoC验证中bootcode与firmware相关验证经验总结

本文总结了SoC验证中bootcode和firmware的验证经验。重点介绍了两种数据加载方法:1)使用Verilog系统函数$readmemh/$readmemb直接写入ROM/ARAM,需注意文件路径、格式和斜杠方向;2)通过Memory Hierarchy在initial块中操作,需要添加适当延时并注意路径拼接。文章还提供了在testcase phase中先读取数据到HASH再写入SRAM的示例,并强调加载后需使能edc_bypass以避免ECC错误。验证过程中需特别注意文件位置、格式要求及路径处理等

元直的博客 2493

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

000:VTK的安装(VTK 编译 + 运行第一个例子)

VTK-医学图像处理,主要基于VTK来显示医学图像,并进行必要的处理。在显示医学图像的过程中讲解背后的计算机图形学知识,理解VTK背后的行为基础。本节为该系列文章的第一节,主要是VTK的编译和配置。

伍心的专栏 4423

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上一篇: DICOM命令集和数据集解析
下一篇: vc 动态链接库和静态链接库
littlening
博客等级 码龄17年 52粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值