基于 Paraview 扩展与实现——(1)

        最近由于项目需求,需要调研paraview , 在国内的一些网站很难找到相关的知识,找到的也仅有一些简单代码的分析,但是对于如何去扩展和实现一些自己的项目的功能,还是有点难度的,关于官网提供的信息,基本上全是英文的,鄙人英文不是很过关,但是对于专业术语还是能看的懂的,当然在国内的知网上也参考了一下论文(如果牵扯到版权问题,还望原作者给我留言,我立即改正),感觉有些收获,现在把我对Paraview研究的一些资料分享出来,算是弥补一下国内在这一方面的不足吧,本人实属菜鸟一只,希望大牛能指点一二,目前正在一步步整理一个文档资料,大家如果有什么问题、建议或者思路可以给我留言!

写文章的事情总觉得费时费力,工作两年之后才认识到,在实际的项目开发中,有很多知识我们都已经碰到过了,但是在需要的时候有时候就是想不起来了,追其根源,还是我们没对知识点掌握牢靠,毕设时想着整理出一份完整的博客资料,但由于自己没能坚持,只写了几篇,目前的工作,时间不是那么紧张,有时间自己整理一下思路了,希望这次能够坚持下去,给自己加油!

1.1 Paraview简介

        ParaView 用 C++编写,基于 VTKVisualization ToolKit)开发,图形用户界面用 Qt 开发,Paraview 是开源软件、跨平台(windows/Unix)VTK(Visualization Toolkit)是一个开源,面向对象的计算机图形、可视化和图像处理的软件系统。VTK 从功能上分为 3D 计算机图形显示(Graphics Model),图像处理(Imaging Processing Model)和可视化处理(Visualization Model)。它包括了图形图像和可视化领域内的上百种算法,可以跨平台使用。VTK 构成一个程序库,用户可以很容易将其库函数嵌入到应用程序,从而建立独立的大型应用系统。

1.2 Paraview基本研究

        ParaView 是对二维和三维数据进行可视化的一个开源软件。它既可以运行于单处理器的工作站,又可以运行于分布式存储器的大型计算机。这样,ParaView既可以作为单处理应用程序,又可以通过把数据分布于多个处理器而并行处理大型数据。Paraview 基于开源软件 VTK,是一个可扩展的、开源的可视化并行计算环境。使用数据流处理大规模数据、支持算法的并行执行。

1.2.1ParaView 开源原则

1) 开发出资源开放、多平台的可视化应用程序;
2) 支持分布式计算模型以处理大型数据;
3) 创造一个开放的、可行的、直观的用户接口;

4) 开发一个基于开放标准的可扩展的结构;

1.2.2Paraview的特点

1) 开源、跨平台(windows/Unix)
2) 构建于开源 VTK 系统
3) 模块化的 GUI 支持用户工具
4) 通过 Tcl 脚本可在运行时扩展应用
5) 支持透明的多处理器,支持数据流
6) 容易加入 VTK 和用户定义的过滤器

1.2.3Paraview 可视化能力

1) 能读写多种数据格式,包括:Ensight, VTK, Plot3D, Wavefront, STL 等。
2) 支持多种元对象,包括:线,平面,球,点等。
3) 多种过滤器,包括:等值面,裁剪,剪切,轮廓和表面提取等。
4) 支持多种交互风格。
5) 支持拣选,支持层次细节(LOD)。
ParaView 使用 VTK 作为数据处理和绘制引擎,并且有一个由 Tcl/Tk 和 C++混合编写的用户接口。这种结构使得 ParaView 成为一种功能非常强大的可视化工具。ParaView 中,VTK 数据源和数据处理过滤器可以立即访问或通过简单的构造文件来添加,因此 ParaView 用户可以利用成百上千的数据处理和可视化算法。另外,使用 Tcl 脚本语言作为核心元素也允许用户和开发人员更改 ParaView 的处理引擎和用户接口来适应特定的需求。因为 ParaView 使用 VTK 作为数据处理引擎,包含了一些从 VTK 中引进的概念。

1.2.4Paraview 的重要概念

1) 对象:模拟系统中实体状态和行为的抽象

2) 数据对象:数据抽象。例如,当加载一个 Plot3D 文件后,该文件就通过一个数据对象来代表。

3) 过程对象:一个可视化的对象,也即一个过程或算法的抽象。例如,等值面提取算法就是由一个过程对象来实现。

4) 资源:一个过程对象至少产生一个输出。

5) reader:从一个或者多个数据文件中读取数据的资源对象。

6) 过滤器:一个至少需要一个输入并且产生一个输出的过程对象。过滤器包括:等高线过滤器,平面截取过滤器,流线过滤器,及小程度的抽取过滤器等。

7) 模块:在 ParaView 中,过程对象和相关的用于处理这些对象的用户接口成为模块。ParaView 模块包括 EnSightreader 模块,球模块,流线跟踪模块和 ParaView 数据写入模块。

8) 可视化管道:在 ParaView 中,过程对象互相联系形成一个可视化管道。管道中的每一个过程对象代表对某个数据的操作。

1.2.5支持的数据类型

        Paraview 是基于 VTK 的可视化平台,所以它所处理的数据就是 VTK 能处理的数据集,这些数据集包括:

 基于 Paraview 扩展与实现——(1)_第1张图片

(1)图像数据:一幅图像是点和单元的集合体,它们分布在一个规则、矩形的格子上。格子的行、列和平面相当于世界坐标系中的 x-y-z 

(2)矩形网格:矩形数据结构是分布在一个规则的格子上的点和单元的集合。格子的行、列、平面相当于世界坐标系中的 x-y-z 坐标。尽管数据结构的拓扑结构规则,但其几何结构仅是部分规则。也即是说,点是按坐标进行分布,但点与点之间的距离则不尽相同。

(3) 结构化的网格:一个结构化的网格带有规则的拓扑结构和不规则的几何结构。网格可以歪曲为任何外形,只要其中单元不迭加或交叉。结构化网格的拓扑结构通过设定一个三维的向量(nx,ny,nz)来隐式代表。几何结构通过使用一系列的点坐标来显式表示。

(4) 非结构化网格:大部分数据结构的格式都是非结构化网格。其拓扑和几何结构都是完全非结构化。在一个非结构化的网格里,任一个单元类型都可以以任意的形式组合。

(5) 多边形数据:多边形数据是几何初始量的集合体,用绘制工具来产生显示的图像。多边形数据结构包括点,线,多边形线,多边形和三角带。

1.2.6 支持的文件类型

(1) ParaView 文件:这是 ParaView 所默认的文件形式。由这种 reader 所创建的数据对象可以是由 ParaView 所支持的类型中的任一种(多边形,图像,矩形,结构化网格或非结构化的)。文件的扩展名是.pvd。这种格式的文件支持空间分区数据和多块数据。

(2)VTK 文件VTK 所使用的基于 XML 文件格式。由这种 reader 所创建的数据对象可以是由 ParaView 所支持的任一种。其文件扩展名是:对多边形数据.vtp,对图像数据 vti,对矩形数据.vtr,对结构化网格.vts,对非结构化网格.vtu.

(3)并行VTK文件:这是一种VTK所使用的基于XML文件格式的并行版本。并行的 VTK 文件包括了关于数据空间分布的信息,并且可能指到多个VTK 文件。由这种 reader 所创建的数据对象是 ParaView 所支持的任一种。文件扩展名是:多边形为.pvtp,图像数据为.pvti,矩形数据为.pvtr,结构化网格为.pvts,非结构化网格为.pvtu.

(4)继承的 VTK 文件:这是遗留下来的 VTK 文件格式,以.vtk 为扩展名。由这种 reader 所创建的数据对象是 ParaView 所支持的任一类型。

(5)并行的继承文件:继承的 VTK 文件格式,所有的数据类型都按同一扩展名而保存。由这种 reader 所创建的数据对象可能是 ParaView 所支持的任一种。

(6)ensight 文件CEI 的 Ensight 所使用的文件格式。支持 ASCII 和二进制EnSight6 和 EnSight Gold 文件格式。这些文件的扩展名为.case。由这种reader 所创建的数据对象是由 ParaView 所支持的任何一种类型。这种格式同样支持多部分和时间信息。

(7) PLOT3D 文件:这种文件格式最初在 NASA 开发测绘包时开始使用。

ParaView 默认其扩展名为:几何文件.xyz,方案文件.q。它仅支持结构化网格数据格式。Paraview 还支持 Stereo Lithography 文件(.stl),BYU 文件(.g)POP Ocean 文件(.pop)Protein Data Bank 文件(.pdb)XMol (.xyz)文件,XDMF(.xmf)文件等。Paraview 支持的文件类型非常广泛,这也是 Paraview 能够在各个方面得到广泛应用的重要原因。


你可能感兴趣的:(Paraview,可视化)