您的位置:首页 > 编程语言 > C语言/C++

VTK学习之路——可视化管线的执行与数据集

2014-09-15 10:10 495 查看
   可视化管线的执行   

     VTK可视化流水线主要由数据对象和过程对象组成,这两种对象相互之间可以用多种方式连接在一起,构成可视化管线的拓扑结构,在构建可视化管线拓扑结构时,必须要保证管线上游的对象输出的数据类型和其下游对象接收的数据类型保持一致,如一个源对象输出的是一个多边形数据类型,而和其连接的过滤器对象只能接收规则格网类型的数据,那么可视化管线就不能正确地执行,所以,在构建可视化管线时,一定要注意对象输入、输出之间数据类型的匹配性。

   构建好可视化管线后,构成可视化管线的各个对象对数据的处理过程,成为可视化管线的执行,当管线中的过程对象或数据发生改变时,可视化管线都要重新执行,为了保证管线的执行效率,管线在执行过程中必须保持处理对象的同步,VTK采用隐式执行的方式保持同步,隐式执行的过程如下图所示:






隐式执行包含两个互逆的过程,在图中可以看到Execute()方法的执行是从左到右,UpDate()方法的执行是从右到左。


1、Execute()方法的执行

  当可视化管线中的对象创建的时间发生改变时,表示对象已经更新,这时Execute()方法被调用,执行过程为从源对象通过过滤器对象到映射器对象。




2、UpDate()方法的执行

  当图形系统请求绘制场景时,发出绘制请求(Render()),UpDate()方法被调用,请求管线中的每个对象更新数据,执行过程为映射器对象、过滤器对象、源对象依次调用Update()方法更新数据。


管线的隐式执行过程:

假设一个可视化管线由源对象、过滤器对象、映射器对象组成,其执行过程如下:

1)用户发出绘制场景的请求。

2)图形系统的角色(Actor)对象给映射器对象发送场景将要绘制的信息,管线开始执行。

3)映射器对象调用Update()方法,然后过滤器对象、源对象依次调用Update()方法。

4)源对象调用Update()方法后,开始比较当前被修改的时间和最后执行的时间,如果当前被修改的时间比最后被执行的时间更新,说明源对象最近被修改过,还未执行,于是调用Execute()方法开始执行流水线.

5)过滤器对象及映射器对象开始比较它们的修改时间和最后的执行时间,根据比较的结果决定是否调用Execute()方法。

可视化管线在执行过程中,提供了循环反馈机制、类型检查机制和内存均衡等,下面分别对这几种机制进行说明:

1)
循环反馈机制 

  在可视化流水线中引入反馈循环机制,用于将过程对象的输出数据变成输入数据反馈给过程对象,作为过程对象的输入数据,如下图所示,Integrate过滤器对初始输入的数据处理后,再将输出的数据反馈给Probe过滤器。








2)类型检查机制

  类型指处理对象所能处理的数据类型,各种处理对象所能接收、处理和输出的数据类型是各不相同的,所以,在建立归管线的连接时,要明确所连接的处理对象所能接收和输出的数据类型,在VTK中,对输入数据类型的控制提供了两种方法,一种是建立单一数据类型处理的过程对象,只能处理单一的数据类型,另一种是建立数据类型检查机制,对数据类型进行检查,只有处理数据类型相互兼容的过程对象才能相互连接。




数据集

数据可视化的特点

对数据可视化是VTK的主要功能,可视化模型的主要任务是对各种被可视化的数据进行组织和管理,形成具有一定结构形态的数据,然后映射到图形系统进行可视化处理,数据在可视化管线中流动的时候,每经过一次处理,数据都会从一种形态转变成另外一种形态,在VTK中,数据可视化具有如下的特点:

1、离散性

  VTK可视化的数据都是离散的数据,这些离散的数据都是从一个无限的空间进行采样而得到的,用有限的离散数据近似的表达一个无限的空间,如对于二次方程y=x2,分别计算xi(i=1,2,...n)n个点的y值,形成n个离散点(x1,y1,....xn,yn),然后把这些点用连续的线段连接起来,构成要绘制的方程,用有限的离散点表现连续的空间,常用插值、二次、三次曲面、样条函数等算法对离散点进行处理。


2、数据的结构是规则(结构化)的或是不规则(非结构化)的

  构成结构化数据的离散点之间具有一定的层次关系,如格网数据结构就是结构化的数据,离散数据点之间具有很强的逻辑关系,非结构化数据的离散点之间没有逻辑关系,常用于表现性质差异变化比较大的数据,如不均匀物体的密度等信息。


3、数据具有一定的空间尺度

  VTK可视化的数据具有一定的空间尺度,如点表现为0维,一维的线、二维的面和三维的体等,对于不同维度的数据,VTK提供了不同的可视化方法。


数据集


在VTK可视化管线中的数据对象,称为数据集,数据集主要由组织结构和数据属性两部分组成,如下图所示:









  组织结构主要有几何数据和数据之间的拓扑关系组成,拓普关系描述了数据之间的一种固定的构成关系,在VTK中,这种构成关系被称为单元,几何数据用空间位置坐标表示,描述了数据在空间的位置,也描述了数据拓扑空间关系,如TIN数据由多个三角形构成,三角形被称为单元,描述这些单元所在空间的数据点就是几何数据。属性数据主要描述几何数据或单元数据的相关属性信息,如在地质应用中,常用属性数据表示某一个空间位置点的地层。

  在VTK应用中,数据集的构成是很重要的内容,只有了解了这些,才能更好的构建自己需要可视化的数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  vtk vs2010 c++ 笔记 学习