VTK技术介绍
1.VTK的管线技术
VKT的可视化过程就是数据在管线中流动,被管线不同的对象处理,最终以图形的方式表现出来。可视化模型就是把用户输入的原始数据,经过变换,成为图形模型可以接受的VTK自定义的数据集的过程。
处理对象包括:
(1) vtkDataSource(源对象)
数据生成的源头,数据来源主要包括从磁盘读取数据文件,如VTK所支持的各种格式文件生成数据源对象,这种源对象被称为读源对象,或者利用数学方法生成源对象,如利用多个四边形构建一个圆柱体,这种对象被称为程序源对象。
(2) vtkFilter (过滤器对象)
对源对象进行处理,生成新的数据集输出,原始的数据能够转换成为可以直接用某种算法进行处理的形式。
(3) vtkMapper (映射器对象)
映射器对象主要作用是将经过 Filter处理后的应用数据映射成图形模型可以绘制的几何数据,或者以磁盘文件的形式进行输出。它是可视化模型和图形模型之间的接口。
VTK 的特点之一就是对于任何经行可视化的数据都是通过Actor(角色)的形式在窗口中表现出来,所以图形模型主要包括如下部分:
(1)建立actor,使用vtkActor类来绘制。
通过vtkActor的 SetMapper()方法设置可视化模型的vtkMapper。
(2)建立 renderer,使用vtkRender类将角色在窗口中显示出来。
通过方法AddActor()把上述的 vtkActor添加进来以供显示。
(3)建立renderwindow(绘制窗口),使用vtkRenderWindow类来绘制。
vtkRenderWindow通过方法 AddRenderer()添加到绘制窗口中。通常使用类vtkRenderWindowInteractor对目标图形进行交互操作。
2. VTK的数据集
在管线中流动的数据对象,我们称之为数据集。
在 VTK中,数据集的几何数据表示为Points (点集),拓扑关系表示为Cell(单元),属性数据包括Scalar(标量)、Vector(向量)、Normal(法线)、Texture(纹理)等。
在VTK中数据集的类型主要按构成数据集的几何数据和单元来划分,主要的数据集类型包括:Structured Points(结构化点集)、Unstructured Points (非结构化点集)、Poly Data(多边形数据集)、Structured Grid(结构化网格数据集)、Unstructured Grid(非结构化网格数据集)、Rectilinear Grid(线性网格数据集)等几大类,各类的表现形式如下图所示。
(1) Structured Points
按规则排列的点的集合。点的排列和坐标轴平行,形成方形的点阵。vtkStructuredPoints 的父类是vtkImageData,vtkImageData是vtkDataSet的子类。
(2) Unstructured Points
不规则地分布在空间的点集。非结构化点集具有不规则的几何结构,但不具有拓扑结构,用离散点来表达,通常,这类数据没有固定的结构,是由一些可视化程序识别和创建的。
(3) Poly Data
在VTK中多边形数据集是由顶点、多顶点、线、多线、多边形各三角带构成,多边形数据是非结构化的,并且多边形数据集的单元在拓扑维度上有多种变化,顶点、线和多边形构成了用来表达0、1和2维几何图形的基本要素的最小集合,同时用多顶点、多线和三角形带单元来提高效率和性能,特别是用一个三角形带表达N个三角形只需要用N+2个点,但是用传统的表达方法需要用3N个点。vtkPolyData的父类是vtkPointSet,vtkPointSet是vtkDataSet的子类。
(4) Structured Grid
具有规则的拓扑结构和不规则的几何结构,但是单元没有重叠或交叉。vtkStructuredGrid的父类是vtkPointSet。
(5) Unstructured Grid
非结构化网格集是最常见的数据集类型,它的拓扑结构和几何结构都是非结构化的,在此数据集中所有单元类型都可以组成任意组合,所以单元的拓扑结构从零维延伸至三维,在 VTK中任一类型的数据集都可用非结构化网格来表达。vtkUnstructuredGrid的父类是vtkPointSet。
(6) Rectilinear Grid
是排列在矩形方格中的点和单元的集合,线性网格的拓扑结构是规则的,但其几何结构只有一部分是规则的,也就是说,它的点是沿着坐标轴排列的,但是两点间的间隔可能不同。vtkRectilinearGrid的父类是vtkDataSet。
3.可视化数据集部分的 VTK类列表