您的位置:首页 > 其它

VTK 学习笔记 - 天行健

2010-11-17 11:29 281 查看
原文出处: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--重要技术

管道拓扑:使用方法aFilter->SetInput(anotherFilter->GetOutPut());的不同变体来构成。多输入和多输出时类似。

控制管道执行的机制:仅执行必须更新的部分,使用懒惰赋值方法Lazy evaluation(当数据被请求时才求值)。

管道组装:必须满足前后两级滤波器的输出与输入兼容。(这对于编译型语言可以在编译时检查,解释型则会到运行时出错)

管道执行:决定数据是否缓存或保留。这对于系统性能至关重要。VTK使用引用计数方法确定数据对象的生存期,并提供方法关启数据缓存或截取流数据片段。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: