3.2.1 VTK的两种对象模型
VTK 系统的两种对象模型:图形模型和可视化模型。
3.2.1.1 VTK图形模型
VTK图形模型由以下核心类组成:
- vtkActor、vtkActor2D、vtkVolume
- vtkLight
- vtkCamera
- vtkProperty,vtkProperty2D
- vtkMaper,vtkMapper2D – vtkAbstractMapper 的子类
- vtkTransform
- vtkLookupTable,vtkColorTransferFunction- vtkScalarsToColors的子类
- vtkRender
- vtkRenderWindow
- vtkRenderWindowInteractor
注意:这里并不是一个完整的包含所有类的列表,只是列出了最常用的类。
Props 表示在场景中能“看到”的东西(如场景中的地形、山脉、人物、花草等),如果Props 是 vtkProp3D 类型,它能操作 3D,如果 Props 是 vtkProp2D 类型,它能表现 2D 数据,Props 不能直接表现几何数据,在 VTK 中用 Mapper 表现几何数据,Props 能够引用 Property(属性)对象,Property 对象能够控制 Pros 的外观(如颜色、灯光、显示模式等), 在 Actors、Volumes 类中也有一个控制 Props 位置、方向的内部变换对象(vtkTransform),vtkActor是 vtkProper3D 的一个子类。
Lights(vtkLight)是用于表现和处理光线的,Lights 只用于三维,在二维中我们不使用光线。
相机类(vtkCamera)在绘制过程中,用相机类控制被绘制到场景中的物体的数量,相机类提供了一些方法控制相机的位置,同时相机类也控制透视投影和立体观察。
映射器类(vtkMapper)经常和查找表类(vtkLookupTable)一起对几何体进行变换和绘制,该类也是图形模型和可视化流水线之间的接口。
查找表类vtkLookupTable和 颜 色 变 换 类 tkColorTransferFunction是vtkScalarsToColors 类的子类,主要为映射的数据赋予不同的颜色。
绘制类(vtkRenderer)和绘制窗口类(vtkRenderWindow)管理图形引擎和计算机窗口系统之间的接口,绘制窗口是绘制图形的显示区域,多个绘制图形也许显示在一个绘制窗口中,但是,用户可以同时创建多个绘制窗口,绘制数据在绘制窗口显示的区域被称为视口,一个绘制窗口可以同时有多个视口。
vtkRenderWindowInteractor,这是一个操作相机对象和拾取工具的类,调用用户定义方法,进入/退出立体视角,并且修改 Actor 的一些属性。
3.2.1.2 VTK可视化模型
图形模型的主要作用是用图形描述几何体构成的场景,可视化流水线的主要作用是把几何数据(如立方体的顶点坐标)转换成图形数据和负责构建几何体,VTK 使用数据流的方式把几何体数据转换成图形数据,主要有两个基本类和数据转换相关,它们是:
- vtkDataObject
数据对象表达各种类型的数据,vtkDataObject 可以被看作是一个二进制大块(blob)数据,结构化的数据可以被认为是一个数据集(dataset) (vtkDataSet 类)。
VTK 中的数据对象类型
a 均匀网格 b 线性网格 c 结构网格 d 离散点 e 多边形 f 非结构网格
数据对象由几何和拓扑结构组成(点集和单元集), 同时数据对象与属性数据(例如缩放比例和向量)相关,这些属性数据用于描述数据对象中的点集和单元集的属性(对于一个办公桌而言,描述桌面的颜色、描述桌腿的颜色),单元集是数据对象的基本组成单位(如一个立方体对象由若干个三角形构成,这些三角形就是单元集,也可以称为图元),下图显示了VTK支持的各种属性数据。
VTK 中用于描述单元集和点集的属性数据
- vtkProcessObject
过程对象一般也称为过滤器,按照某种运算法则对数据对象进行处理,对数据对象的数据进行优化,过程对象表现系统中的几何形状,数据对象和过程对象连接在一起形成可视化流水线(例如,数据流网络),下图是一种可视化流程的描述。
数据对象和过程对象连接创建可视化流水线
在可视化流水线中,主要包括源对象、过滤器对象、映射器对象三种对象。
(1)源对象。源对象是可视化流水线的起点,源对象依据数据生成的方式,分为如下两种类型:
- 过程源对象:可以通过读数据文件的方式(读对象)产生数据。
- 程序源对象:也可以用数学表达式或其它的数学方法产生数据。
(2)过滤器对象。过滤器对象接收一个或多个数据对象作为输入,对数据对象处理之后生成一个或多个数据对象作为输出。
(3)映射器。映射器(Mapper)对象是可视化流水线的终点,是图形模型和可视化模型之间的接口,其主要作用是将数据对象转换成图形对象,然后由图形引擎绘制出来,复写器是映射器的一种类型,作用是将数据写入文件或流。