VTK基础学习教程

· 参考自 VTK中文教程
· vtk框架结构与运行机制的探讨文档下载

VTK是什么?

VTK,全称是Visualization Toolkit,即可视化工具包。是一个开源、跨平台、可自由获取、支持并行处理的图形应用函数库。

VTK最早是作为Prentice Hall在1993年出版的《The Visualization Toolkit: An Object-Oriented Approach to 3D Graphics》一书的附件出现的。该书及相应的VTK软件由美国GE公司的三位研究人员:Ken Martin、Will Schroeder和Bill Lorensen用其闲暇时间合作编著与开发的,因此该软件的授权完全由这三位决定。由于其开放源码式的授权,该书一上市后,很快就建立起VTK的使用者及开发者社区交流平台,同时GE(特别是GE医疗系统)与其他数家公司也开始提供对VTK的支持。1998年,Will Schroeder和Ken Martin离开GE创立了Kitware公司(http://www.kitware.com)。有了Kitware的资金支持,VTK社区快速地成长,其在学术研究及商业应用领域都受到重用,例如Slicer生物医学计算软件使用VTK作为其核心,许多讨论研究VTK的IEEE论文出现。VTK也是许多大型研究机构,如Sandia,Los Alamos及Livermore国家实验室与Kitware的合作基础,这些研究中心使用VTK作为数据可视化处理工具。VTK同时也是美国国家卫生研究院(National Institutes of Health,NIH)创立的美国国家医学影像计算合作联盟(National Alliance for Medical Image Computing,NA-MIC,http://www.na-mic.org)的关键计算工具。

VTK能做什么?

三维计算机图形、图像处理及可视化是VTK主要的应用方向。通过VTK可以将科学实验数据如建筑学、气象学、医学、生物学或者航空航天学,对体、面、光源等等的逼真渲染,从而帮助人们理解那些采取错综复杂而又往往规模庞大的数字呈现形式的科学概念或结果。

VTK的特点

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

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

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

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

  5. VTK具有设备无关性,使其代码具有良好的可移植性。

  6. VTK中定义了许多宏,这些宏极大的简化了编程工作并且加强了一致的对象行为。

  7. VTK具有丰富的数据类型,支持对多种数据类型进行处理。

VTK的配置

中文详细配置教程

VTK的结构

VTK库的框架结构是什么样的?

vtk框架结构的对象模型图

VTK是在三维函数库OpenGL的基础上,采用面向对象的设计方法发展起来的。
它有2种不同的方式:图形模型可视化模型
图形模型是3D图形的抽象,
可视化模型是可视化的数据流程模型。

图形模型
图形模型如图所示,利用了3D图形系统简单易用的特点,同时也采用了图形用户接口(GUI)的方法。

整个图形模型表现了3D图形系统的本质特征,主要有9类基本对象:
渲染控制器、渲染窗口、渲染器、灯光、摄像机、角色、特性、映射、变换。

  1. Render master(渲染控制器)定义与设备无关的坐标计算方法,创建渲染窗口;
  2. render window(渲染窗口) 管理显示设备上的窗口,一个或多个绘制方法可在渲染窗口上创建一个场景;渲染窗口是用户图形界面,其中包括了设置渲染窗口的大小,产生立体显示效果等方法:
  3. Renderer(渲染器) 是管理光源照相机和绘制对象等的位置、属性等,提供了世界坐标系,观察坐标系及显示坐标系之间的转换;
  4. Lights(灯光) 可在场景中照亮绘制对象,可通过调用参数改变控制灯光的状态、照射角度、照射强度、颜色等,
    并支持点光源和平行光源。
  5. Camera(照相机) 是定义观察者的位置、聚焦点和其他有关属性,参数可由调用者根据需要设置。
  6. Actor(角色) 代表渲染场景中的绘制对象实体,通过参数调节可以设置角色的位置、方向、渲染特性、引用、纹理影射等属性,并可对角色进行缩放。
  7. Property(属性) 是说明几何物体的一些特性,实现三维图形真实感。
  8. Transform(变换) 是一个放置4×4变换矩阵的堆栈,可以进行各种操作。图形模型支持3D几何数据绘制、3D体数据绘制、2D几何文字、图像绘制。
  9. Mapper(映射、制图人) 指定了渲染数据和图形库中基本图元之间的联系,一个或多个角色可以使用相同的映射,有多个参数对其进行控制。

VTK应用程序的框架结构是什么样的?

vtk应用程序框架

VTK绘制管线(运行机制)

VTK采用的是Pipeline(管线)运行机制,几乎可以对任何类型的数据进行处理,并提供了许多相应的类对各种类型的数据进行转换或处理。

根据所要处理的原始数据类型
和所使用的算法
以及所要达到的结果的不同,可以设计自己的可视化流程,并由此选择不同的数据处理和转换的类,用数据通道将这些类连接起来,将原始数据类型转换为所采用的算法模块可以直接进行处理的数据类型,最终得到我们所需要的可视化的结果。所有的类和算法模块都是可扩充的,用户可以将自己开发的类或模块转换成系统可以接受的形式,并可替换或扩充原有的类,因此,VTK是一个开放的系统,可以扩展到任何应用领域。

可视化运行机制

VTK对体数据进行可视化的步骤如图2所示:
1. 按照所要处理的原始数据类型的不同选择不同的类。
vtkObiectVisualization Toolkit类库的基类,它为整个可视化流程提供基本的方法,
vtkSourcevtkObiect的派生类和vtkFilter的父类,它为整个可视化流程的开始比如读取数据等定义具体的行为和接口;
2. 过滤器接收数据源中的数据,进行各种不同的过滤操作。
vtkFiltervtkSource的派生类,它对数据进行各种处理,将原始数据经过各种过滤器的处理后,转换为可以直接用某种算法模块对其进行处理的形式;
3. 映射是将处理过的适当数据形式映射为几何数据。
vtkMapper也是vtkObiect的派生类,它将经过各种filter处理后的应用数据映射为几何数据,为原始数据与图像数据之间定义了接口。
4. 角色将可视化的数据在窗口中表现出来,在Visualization Toolkit中任何可视化的数据都是通过角色在窗口中表现出来的。
vtkActor类用来表达绘制场景 中的一个实体,它通过SetMappe()方法将几何数据的属性告诉角色
5. 最后通Actor通过vtkRender类将结果在窗口中显示出来。

英文看不习惯的话可以看这张图
vtk可视化模型

你可能感兴趣的:(VTK,vtk,可视化工具)