VTK 学习笔记 - 天行健

原文出处:http://shenaodong.bokee.com/viewdiary.15510859.html


VTK学习笔记1

基于VTK User Guide和VTK Textbook学习
Vtk user guide
组织:分为三部分,part i通用介绍,如VTK安装方法;part ii是核心部分,提供了大量的示例;part iii介绍高级应用,如何创建自己的类。
HOW TO USE VTK
vtk创建者和应用者。创建或修改必须熟悉C++,并且知悉VTK的编程约定;对于应用者可以从TCL,PYTHON,VB,JAVA,VC等中选择自己熟悉的语言,但需熟悉VTK的对象接口及其关系。
ADDITION RESOURCES
The Visualization Toolkt An Object-Oriented Approach to 3D Graphics(2rd Edition):该书详细描述了VTK中的多个算法,数据结构等。
http://public.kitware.com/:提供有在线手册,FAQ和用户邮件列表等
http://public.kitware.com/VTK/doc/nightly/html:在线VTK文档
http://www.barre.nom.fr/vtk/links.html:Sebastien Barre的网站
Installation
Windows
直接下载安装文件,执行setup.exe
安装后文件包含5个部分:
vtkNNCore:用于Windows的VTK DLL
vtkNNCpp:用于VC++的文件和库
vtkNNTcl:用于Tcl的文件和库
vtkNNJava::用于Java的文件和库
vtknnPython::用于Python的文件和库
CMake:从源码构建VTK的工具
源码安装
System Overview
对于VTK的系统的概述:介绍基本系统概念和对象模型抽象
VTK由两个基本子系统构成:已编译C++类库和已解释的封装器用于其他语言,如Tcl,java,Python等
VTK本身是基于OO模型构建的,因此仅需理解主要对象就可以构建应用系统:图形模型Graphics Model和可视化模型Visualization Model
The Graphics Model
下面是一些常用的核心对象:
vtkActor, vtkActor2D, vtkVolume--vtkProp和/或vtkProp3D的子类
vtkLight--灯光
vtkCamera--镜头,照相机
vtkProperty, vtkProperty2D--
vtkMapper, vtkMapper2D--vtkAbstractMapper的子类
vtkTransform--
vtkLookupTable, vtkColorTransferFunction--vtkScalarsToColors的子类
vtkRender
vtkRenderWindow
vtkRenderWindowInteractor
可以通过对上述对象的组合形成场景Scene。
Props表示在场景所见到的物体。三维场景中的通常是vtkProp3D对象,如vtkActor,vtkVolume等;二维场景中的则通常是vtkActor2D对象。
Props不能直接表示其几何形状,通过其相关的mappers表示。
Props还可以通过属性对象控制其外观,如颜色,灯光,绘制方式等。
Actors和Volumes具备内部转换对象vtkTransform,其封装了4*4的变换矩阵,可以调整其几何参数(位置,朝向和缩放)。
灯光vtkLight对象用于设置场景中的灯源,只能用于3D场景。
相机对象vtkCamera控制3D物体如何投影成2D图形。只在3D场景有必要设置。可以控制几何参数以及投影方式:正交投影和透视投影。
绘图器vtkMapper对象以及相关的查找表vtkLookupTable对象用于变换和绘制几何图形。mapper提供了可视化管道和图形模型之间的接口。
渲染器vtkRenders对象和渲染窗口vtkRenderWindow对象用于管理图形引擎和计算机视窗系统之间的接口。一个渲染窗口可以同时支持多个渲染器。渲染器作图的区域即为视口viewport。
场景交互可以通过vtkRenderWindowInteractor对象完成。操作相机,拾取物体,激活用户定义的方法,进入或退出透视投影以及设置actors的某些属性。
上 述描述的类通常都有特殊行为的子类,如vtkAssembly, vtkFollower,vtkLODActor均是vtkActor的子类。vtkAssembly允许层次式组织actors;vtkFollwer 是一个总是面向指定相机的actor,尤其对于文本和广告显示是十分有用的;vtkLODActor是允许改变角色actors的几何表示的actor
图像数据ImageData:vtkImageData
矩阵线性数据Rectilinear Grid:vtkRectilinearGrid,其数据组织形式是行列方向线性增长
结构化数据vtkStructuredGrid,无结构化数据点,多边形数据vtkPolyData,无结构化栅格数据vtkUnstructuredGrid


VTK学习笔记2--The Visualization Model


图形管道的作用是将图形数据转换成图片。可视化管道的作用是将信息转换成图形数据。换句话说,就是可视化管道是用于构造几何表达,而后经由图形管道渲染。
VTK使用数据流的形式转换,其中涉及两个基本对象:vtkDataObject和vtkProcessObject。

DataObject数据对象:

    表示不同类型的数据。数据的组织形式由vtkDataSet对象表示。由几何和拓扑结构(点和穴)组成。

DataSet数据集:图像数据ImageData:vtkImageData

矩阵线性数据Rectilinear Grid:vtkRectilinearGrid,其数据组织形式是行列方向线性增长
结构化数据vtkStructuredGrid,无结构化数据点,多边形数据vtkPolyData,无结构化栅格数据vtkUnstructuredGrid

属性数据:单个数据Scalar,3D方向和幅度Vector:(u, v, w);3D方向Normal:(nx, ny, nz), |n|=1,n维索引数据到文理的映射Texture Coordinate,n*n矩阵Tensor,阵列数据vtkFieldArray,其中每一列可以是不同类型的数据。

Cell:是点的拓扑组织,构成数据集的基本形式,用作点之间的插值信息。

处理对象vtkProcessObject:也称作过滤器,滤波器,将已有数据处理形成新的数据。代表了系统所用的算法。Process和数据对象连接在一起形成可视化管道,即数据流网络。


--------             --------               ---------            --------

|Source             |             |Filter            |               |Filter    N           |            |Mapper         |
|                               |--- |                        |---   |                           |---|                     |---------Graphics Interface
|Data Object    |             |Data Ojbect   |               |Data Object      |              |                     |
--------              --------               ---------            --------
源Source对象:通过读取文件或重构数据对象产生数据。
过滤器Filter:将输入数据处理后生成新的数据,其中输入或输出数据可以单个,或多个Source object
绘图器Mapper:位于图形模型中,将数据转成图形数据(可由图形引擎渲染)
Writer:是一种Mapper,可以将数据写入文件或输出流中。


VTK学习笔记3--重要技术

  1. 管道拓扑:使用方法aFilter->SetInput(anotherFilter->GetOutPut());的不同变体来构成。多输入和多输出时类似。
  2. 控制管道执行的机制:仅执行必须更新的部分,使用懒惰赋值方法Lazy evaluation(当数据被请求时才求值)。
  3. 管道组装:必须满足前后两级滤波器的输出与输入兼容。(这对于编译型语言可以在编译时检查,解释型则会到运行时出错)
  4. 管道执行:决定数据是否缓存或保留。这对于系统性能至关重要。VTK使用引用计数方法确定数据对象的生存期,并提供方法关启数据缓存或截取流数据片段。


你可能感兴趣的:(VTK专栏)