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使用引用计数方法确定数据对象的生存期,并提供方法关启数据缓存或截取流数据片段。
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使用引用计数方法确定数据对象的生存期,并提供方法关启数据缓存或截取流数据片段。
相关文章推荐
- Paraview与VTK学习笔记(三)
- VTK学习笔记:数据集和单元集合介绍
- 4.20 VTK学习笔记
- Paraview和vtk的学习笔记(一)
- VTK学习笔记:数据集之多边形数据集
- VTK学习笔记之使用vtkMarchingCubes
- VTK学习笔记:使用VTK交互功能
- VTK学习笔记-1
- VTk学习笔记--vtkInteractorStyleRubberBand2D
- Paraview与VTK学习笔记(四)
- Paraview与VTK学习笔记(七)sources篇
- VTK学习笔记(1)
- VTK学习笔记1
- VTK学习笔记1—VTK安装及源码编译(Winxp + VS2010 + CMake2.8.6 + VTK5.8)
- VTK学习笔记-2-TIFF图像数据的重切片
- vtk学习笔记 --- 判断三角形相交
- VTK学习笔记之图像处理
- VTK学习笔记:数据集之结构化点集
- VTK学习笔记:数据集之非结构化网格集
- Paraview与vtk学习笔记(二)