基于VTK的数值模拟结果可视化

更新时间:2024-03-12 作者:用户投稿原创标记本站原创 点赞:8094 浏览:31826

摘 要 : VTK是三维重建方面一个大型的函数库,其应用日益广泛.在对数值模拟软件进行开发时,需要对曲线、等值线、三维场等结果数据进行可视化.在VC环境下通过VTK类库的调用实现了数值模拟可视化模块的开发.首先对VTK进行了源码编译和环境配置.以VTK对曲线数据的读取和可视化为例,介绍了通过C++对VTK库的调用方法,并给出了可视化结果,通过VTK对灯光、色彩及方位等的控制进一步增强了结果的可视化效果.结果表明,应用VTK类库进行数值模拟结果可视化模块的开发具有效率高、效果好、交互性强的特点.

关 键 词 : 函数库; 结果数据可视化; 数值模拟软件开发; VTK

中图分类号: TN91134; TP391.41 文献标识码: A 文章编号: 1004373X(2013)06001504

0 引 言

科学计算可视化在各个领域得到越来越广泛的应用,可视化是运用计算机图形学和图像处理技术将科学计算过程及计算结果的数据转换为图形及图像在屏幕上显示出来并进行交互处理的理论方法和技术[1].在众多的可视化工具中,VTK以其简便、易用等特点得到越来越多的应用.

VTK是在三维函数库OpenGL 的基础上采用面向对象的设计方法发展起来的.它将在可视化开发过程中经常遇到的细节屏蔽起来,并将一些常用的算法进行了封装.VTK具有强大的三维图形功能和非常好的流(streaming)和高速缓存(caching)的能力[2],支持基于网络的工具和多种着色,支持对多种数据类型进行处理,代码具有良好的可移植性.VTK以其优良的性能成为数据场可视化研究领域的有力工具[35].

在对数值模拟结果进行可视化时,需要对曲线、等值线、三维场等结果数据进行可视化.在VC环境下通过VTK类库的调用实现了结果可视化模块的开发.

1.VTK的特点及使用方法

1.1 VTK简介

VTK是美国Kitware公司开发的一套C++类库,它吸收了众多优秀的图像处理和图形生成算法,可方便地对数据集进行各种变换和操作,是一个计算机图形、可视化技术及图像处理软件系统.它包含一个C++库以及若干个中间层的解释语言(如Tcl/Tk,Ja,Python)[6].VTK一般把数据表示成场数据,它能够支持和处理包括有规则的或无规则的点阵、图形、体原数据等多种表示格式的数据.数据集是带有拓扑和几何结构的数据对象,除了空间结构,数据集还附带有属性数据.属性数据包括:标量、矢量、张量、法向、纹理坐标以及场数据等.

VTK的优点是:它是开源、免费的,易于生成自己的库,可以用解释性语言编写程序;它是面向对象的,具有不受约束的库平台和大量高级、有用的运算法则;软件系统具有完整性,具有广阔的用户群体,并且具有商业支持.它的缺点有:它不是一个超高速的图形引擎,只有C++源代码,而不具有其他解释性语言的源代码;规模较大,对系统要求较高.

VTK在早期主要用于医学影像的可视化,目前开始应用于工业缺陷检测、雷达图像或电磁场的三维可视化及图像配准、图像分割等领域.VTK作为一种通用的可视化类库,在科学和工程界有着越来越广泛的应用.

VTK的使用步骤一般为:读取或产生数据,筛选或过滤数据、呈现数据并与之交互.vtkObject是工具集中大多数对象的基类,它为跟踪修改时间、调试、打印和事件调用等提供方法.vtkSource为可视化流程的开始,它为整个可视化流程定义具体的行为和接口,如读取、生成数据等.vtkFilter利用各种Filter算法将原始数据进行滤波,以便后续算法的处理.vtkMapper将经过各种filter处理后的应用数据映射为几何数据,即将原始数据转换成需要的图像数据.vtkActor类用来表达绘制场景中的一个实体,也就是绘制场景中的演员,几何数据的属性通过SetMapper()方法将几何数据的属性告诉演员,vtkActor类为数据设置颜色、材质、反射等属性.然后通过vtkRender类将结果通过vtkRenderwindow在窗口中显示出来.最后通过vtkRenderWindowInteractor对演员进行交互操作.

1.3 VTK的安装

VTK的安装分两种方式.如果用户仅仅是希望使用它来打开特定格式的文件(如TCL文件),即程序应用的低级用户而言,只需要简单地下载VTK的安装包,单击Setup.exe进行安装即可.对于类的开发者而言,即程序应用的高级用户,建议使用源码编译的方法,这样可以通过Debug跟踪VTK源码,不仅可以发现VTK源码的缺陷从而发行自己的VTK版本,而且可以更好地理解VTK开发包的结构层次.

2.应用VTK进行数值模拟结果可视化

(1)vtkSpline:如果用于画线的点是有顺序的,可以考虑使用vtkSpline这个类.vtkSpline 内插了一系列的数据点,每一个一维参数坐标t都对应一个惟一的值x.

(2)vtkCardinalSpline:通常样条线被用来由添加一系列参变的坐标值如data(t,x)通过赋值函数如vtkCardinalSpline::Evaluate()实现的.样条线可以被设置为封闭或打开.封闭的样条线通过连续函数和插值使得最后一个点到第一个点是连续的,只需设置ClosedOn属性即可实现而无需再复制第一个点.

(3)vtkLine:两点成线,vtkLine是vtkCell的一个具体实现,用来表示一条一维线.

(4)vtkPolyLine:vtkPolyLine是vtkCell的一个具体实现,用来表示一系列的一维线.

(6)vtkParametricSpline:vtkParametricSpline是一个用于一维插值样条线的参变函数.它将一个参数u通过三条插值样条线映射到一个三维点(x,y,z)上.这一族的一维线在[0,1]之间被参数化.

3.结 语

应用可视化工具VTK实现了数值模拟结果的可视化,重点介绍了VTK的曲线绘制,给出了多种曲线绘制的方法.与使用 OpenGL 相比,使用VTK效率更高,开发出的软件更加标准和规范[910].VTK作为科学计算可视化的一个重要工具,功能强大,使用灵活,在数值模拟可视化领域有着广泛的应用前景.

相关论文范文