构成VTK系统有两种对象模型:可视化模型和图形模型
1. 可视化模型
数据对象由几何和拓扑结构组成(点集和单元集) | ||
vtkDataObject(点集和单元集) | vtkImageData | Image Data |
vtkRectilinearGrid | Rectilinear Grid | |
vtkStructuredGrid | Structured Grid | |
vtkPolyData | Unstructured Points/Polygonal Data | |
vtkUnstructredGrid | Unstructured Grid | |
属性数据(用于描述数据对象中的点集和单元集的属性) | ||
Scalar | single data value | |
Vector | 3D direction and magnitude | |
Normal | 3D direction | |
Texture coordinate | n-dimensional index into teture map | |
Tensor | n*n matrix | |
vtkProcessObject (过程对象也称为过滤器,按照某种运算法则对数据对象进行处理,表现系统中的几何形状。) | source | 通过读数据文件或数学表达式计算结果产生数据 |
在可视化流水线中,主要包括源对象、过滤器对象、映射器对象三种对象。 |
filter | 接收一个或多个数据对象作为输入,对数据对象处理之后生成一个或多个数 据对象作为输出。 |
mapper | 可视化流水线的终点,是图形模型和可视化模型之间 的接口,其主要作用是将数据对象转换成图形对象, 然后由图形引擎绘制出来,复写器是映射器的一种类型,作用是将数据写入文件或流。 |
2. 图形模型
vtkActor、vtkActor2D、vtkVolume | :都是 vtkProp和/或vtkProp3D的子类。 Props 表示在场景中能“看到”的东西(如场景中的地形、山脉、人物、花草等),如果Props (如 vtkActor ) 是 vtkProp3D 类型,它能操作 3D,如果 Props 是 vtkProp2D 类型,它能表现 2D 数据。Props但不能直接表现几何数据,需用Mapper来表现。 |
vtkLight | :用于表现和处理光线的,Lights 只用于三维,在二维中我们不使用光线。 |
vtkCamera | :在绘制过程中,用相机类控制被绘制到场景中的物体的数量,相机类提供了一些方法控制相机的位置,同时相机类也控制透视投影和立体观察。 |
vtkProperty,vtkProperty2D | :Property 对象能够控制 Pros 的外观 (如颜色、灯光、显示模式等),供Property对象引用。 |
vtkTransform | :变换对象 |
vtkMaper,vtkMapper2D | :vtkAbstractMapper 的子类,映射器类,用于表现几何数据。经常和查找表类(vtkLookupTable)一起对几何体进行变换和绘
制,该类也是图形模型和可视化流水线之间的接口。 |
vtkLookupTable,vtkColorTransferFunction | :vtkScalarsToColors 的子类,主要为映射的数据赋予不同的颜色。 |
vtkRender,vtkRenderWindow | :管理图形引擎和计算机窗口系统之间的接口,绘制窗口是绘制图形的显示区域,多个绘制图形也许显示在一个绘制窗口
中,但是,用户可以同时创建多个绘制窗口,绘制数据在绘制窗口显示的区域被称为视口,一个绘制窗口可以同时有多个视口。 |
vtkRenderWindowInteractor | :一个操作相机对象和拾取工具的类,调用用户定义方法,进入/退出立体视角,并且修改Actor 的一些属性。提供与图形对象的交互。 |
上述的许多对象均有子类,例如,vtkAssembly、vtkFollower 和 vtkLODActor 都是vtkActor 的子类,vtkAssembly 类用于将多个角色对象相互组合,构成一个复杂的对象实体,vtkFollower 是一个用于总是面对一个特定 camera(对布告板和文字非常有用) 的演示者,vtkLODActor 类用于在不同的层次表现物体细节的程度。
图中说明了 Render()方法发起对数据的请求后,数据通过流水线向左传递,一直传递到源对象(流水线的起点),然后从源对象开始直到映射器对象,流水线中的每个对象依次检查需要处理的那部分数据是否已经过期,如果过期调用 Update()方法更新数据,这样保证流水线末端的数据总是最新的数据,接着 Actor 对象(角色)将绘制这些数据。