0%

vtk流水线

vtk中的流水线

在VTK中将原始数据转换为我们看到的屏幕上的一幅图像,要经过许多步骤的处理,这些步骤由众多的VTK的对象共同协调完成,就好象生产线上加工零件一样,每位工人都负责一部分的工作,整条生产线就能将原材料制作成产品。因此在VTK中,这种对象之间协调完成工作的过程被称作流水线(Pipeline)。

原始数据被转换为图像要经过两条流水线:

  • 可视化流水线(Visualization Pipeline):它的工作是将原始数据加工成图形数据。通常我们需要可视化的数据本身并不是图形数据,例如某个零件内部各个部分的温度,或者是流体在各个坐标点上的速度等等。
  • 图形流水线(Graphics Pipeline):它的工作是将将图形数据加工为我们所看到的图像。可视化流水线所产生的图形数据通常是三维空间的数据,如何在二维的屏幕上显示出来就需要图形流水线的加工了。

映射器(Mapper)则是可视化流水线的终点,图形流水线的起点,它将各种派生类能将众多的数据映射为图形数据以供图形流水线加工。

让我们对照一下前面的的圆锥的例子:ConeSource的对象通过程序内部计算输出一组描述圆锥的数据(PolyData):然后,PolyData通过PolyDataMapper映射器将数据映射为图形数据。在这个例子中,可视化流水线由ConSource和PolyDataMapper组成。

图形数据依次通过Actor、Renderer最终在RenderWindow中显示出来,这一部分就是图形流水线。

  • Actor : 表示润色场景中的一个实体。它包括一个图形数据(mapper),并且具有描述实体的位置、方向、大小的属性。
  • Renderer : 表示润色的场景。它包括多个需要润色的Actor。在圆锥的例子中,它只包括一个表示圆锥的Actor。
  • RenderWindow : 表示润色用的图形窗口,它包括一个或者多个Render。在圆锥的例子中,它只包括一个Renderer。
  • RenderWindowInteractor : 给图形窗口提供一些用户交互功能,例如平移、旋转、放大缩小。这些交互式操作并不改变Actor或者图形数据的属性,只是调整场景中的照相机(Camera)的一些设置而已。