VTK有两个子系统组成:一个是编译生成的C++类库,一个是通过Java,Tcl,Python语言来使用这些类的解释包。
VTK是通过数据流的方法,实现变信息为图形数据的。
数据流一般为:
source——filter——mapper——actor——render——renderwindow——interactor。
Actor用来在场景中表现一个可视化实体,也可以成为3D图形的描绘实现,主要用于对图形的描绘。
Actor类还包含一些属性,用来对显示的对象进行设置,如Actor->GetProperty->SetColor(1,1,1,)表示白色,也就是将绘制的对象着色为白色。
Camera在VTK中可以理解为视点(FocalPoint),即观察者的位置,或者称为虚拟照相机实现3D视图。
操作方法比较简单,强调的使另外两个重要的方法:
Azimuth(150)表示Camera的视点位置沿着顺时针旋转150角度;
Elevation(60)表示Camera的视点位置沿着向上方向旋转60角度。
Filter是一种数据处理机制,有一个或者多个输入,但仅有一个输出。其目的是对图形图像数据进行处理,以便得到我们期望的数据。
要理解工作原理,首先明确几个类型:
1. vtkSource(数据源)
这个就好比一个剧本里面的角色,让演员知道要演的是什么人物。
数据源有:vtkConeSource,vtkSphereSource,vtkOutlineSource等等。
它们都继承与vtkPolyDataAlgorithm类,该类用于提供不同的类型的数据源。
2. vtkMapper(映射器)
它就像是一个剧本,应该如何塑造角色的装扮。
映射器有:vtkDataSetMapper,vtkMultiGroupPolyDataMapper,vtkPolyDataMapper.
它们都继承于vtkMapper类。所有的数据对象都要通过映射器Mapper映射到vtkActor中。
3. vtkActor(演员)
有了剧本,有了角色,得找个真人来演出这个剧本了。
该类继承于vtkProp3D,有4个子类:vtkFollow,vtkLODActor,vtkMesaActor,vtkOpenGLActor.
4. vtkRenderer(渲染器)
负责管理场景的渲染过程,这个过程就相当于对演员进行化妆并布置场景,组成场景的对象包括Prop、相机(vtkCamera)和光照(vtkLight),一个vtkRenderWindow中可以有多个vtkRenderer对象。
该类继承于vtkViewport,有2个子类:vtkMesaRender, vtkOpenGLRender.
该类的一个主要作用是设置vtk渲染窗口vtkRenderWindow的背景颜色。
vtkRenderer::AddActor(); // 该方法用于将vtkProp类型的对象添加到渲染场景中。
vtkRenderer::SetBackground(); // 该方法用于设置渲染场景的背景颜色。
5. vtkRenderWindow(窗口)
这个就相当于个舞台,把准备好的演员放进去,准备表演了;
该类继承于vtkWindow,有2个子类:vtkMesaWindow,vtkOpenGLWindow.
6. vtkRenderWindowInteractor(窗口交互器)
这个像摄像机,用于捕捉演员的动作,然后传给导演看。
该类的继承关系在vtkRenderWindowInteractor文章中已给出。
7. vtkInteractorObserver(观察者)
有点导演的意思,导演通过观看录像后,做出一系列调整
该类的继承关系在vtkRenderWindowInteractor文章中已给出
总结: