VTK和三维可视化建模的理论基础真是很多很多,啃教程的时候会感觉比较头疼。但是感觉只要抓住主要脉络就好。以下是自己的一些总结:
ps:下面的“[书]”指《The_Visualization_Toolkit-An_Object_Oriented_Approach_to_3D_Graphics-3rd_Edition.pdf》,必备教程,请从第一篇里边提到的svn里下。
3.1 VTK 可视化基本流程
[书P.50]可视化的目的是把数据转换成图元(graphics primitives),继而再把图元渲染(render)为图像(image)。这句话涵盖了可视化的两大过程:Data Transformation(数据转换) 和 Rendering(渲染)
3.1.1 把数据转换成图元 —— Data Transformation
对于Data Transformation,我们需要有两个方面的考虑:
①.数据的处理,它表示了数据转换过程中我们对数据所做的操作。如勾轮廓(outline)、提取等值面(surface contour)、取切平面(Extract Plane)、取等值线(Line Contour)等等。
②.数据的模型,它表示了数据转换过程中,以什么样的内部结构描述、储存数据和图元。
[书P.100-101]为了从面向对象的角度描述Data Transformation,在多数时候,vtk将数据的描述、储存方式(②)和处理方式(①)进行了结合和抽象,封装成各个Algorithm类。这些Algorithm的对象(又叫Process Objects)相互连接使用,就描述了一个数据转换的流程,称为“pipeline”。根据在pipeline中所起不同作用,这些Algorithm类的对象又分为三类:
[书P.102]
1> Source,标志pipeline的起始。无输入,1-n个输出。
• 根据参数产生数据的,叫procedural objects
• 连接到外部数据的,叫reader objects
2> Filter,描述pipeline的处理过程,有1-n个输入,1-n个输出。
3> Mapper,标志pipeline的结束,1-n个输入,是数据转换的终止。
• 一般的Mapper对象会将数据转换为图元(graphics primitives),它们一方面是Data Transformation的终结,另一方面连接着Graphics Model,标志着图形绘制的开始。
• 另一种是将数据输出为文件的Mapper,称为writer objects。
3.1.2 把图元(graphics primitives)渲染为图像 —— Rendering
这个过程的概念相对简单。我们记住渲染一个3D场景的几大要素就可以了,这些要素组成了“Graphics Model”。在vtk中,它们体现为:
①.vtkCamera - 相机、代