VV TT KK 用用 户户 手手 册册
翻 译 整 理 : 陈 恒
甘肃省科学院自动化研究所
VTK 用户手册
文档控制
文档控制
文档控制文档控制
变更记录
日期
20090408
20090408
作者
陈恒
陈恒陈恒陈恒陈恒
审 核(此处必须手签)
1.0
版本
变更说明
初版初版初版初版
发布发布发布发布
审核人
单位/职务
日期
批 准(此处必须手签)
日期
批准人
单位/职务
安全控制
归 档
密级说明
传阅范围
实验室内部
实验室内部
实验室内部
实验室内部
归档日期
20090410
归档人
陈恒陈恒陈恒陈恒
修改范围
档案管理员
第 i 页
VTK 用户手册
目目目目 录录录录
1 系统概述
系统概述..........................................................................................................................................1
系统概述
系统概述
1.1 系统架构 .................................................................................................................................1
1.1.1 图形模型.........................................................................................................................2
1.1.2 可视化模型.....................................................................................................................3
1.2 创建应用程序 .........................................................................................................................8
2 VTK 使用基础
使用基础..............................................................................................................................20
使用基础
使用基础
2.1 创建一个简单的示例 ...........................................................................................................20
2.2 使用 VTK 交互功能 .............................................................................................................22
2.3 过滤器 ...................................................................................................................................24
2.4 控制相机 ...............................................................................................................................25
2.4.1 创建相机.......................................................................................................................26
2.4.2 简单的操作方法...........................................................................................................26
2.4.3 控制观察方向...............................................................................................................27
2.4.4 透视及正交投影...........................................................................................................27
2.5 控制光源 ...............................................................................................................................27
2.6 控制场景中的物体(3D PROPS)........................................................................................28
2.6.1 指定物体的空间位置...................................................................................................28
2.6.2 Actros.................................................................................................................................29
2.6.3 物体的层次细节...........................................................................................................30
2.6.4 组装...............................................................................................................................30
2.6.5 使用纹理.......................................................................................................................31
2.6.6 拾取...............................................................................................................................33
VTK 中的坐标系统 ..............................................................................................................35
2.7
2.8
VTKACTOR2D ........................................................................................................................36
2.9 注释 .......................................................................................................................................36
2.9.1 2D Annotation....................................................................................................................36
2.9.2 3D Annotation and vtkFollower ........................................................................................38
2.10 特定绘图 ...............................................................................................................................38
2.10.1 颜色图例.......................................................................................................................39
2.10.2 绘制平面图表...............................................................................................................39
2.10.3 显示物体的边界尺寸...................................................................................................40
2.10.4 标识属性数据...............................................................................................................42
2.11 数据变换 ...............................................................................................................................43
3 可视化技术
可视化技术....................................................................................................................................44
可视化技术
可视化技术
3.1 可视化 VTKDATASET 类数据 ................................................................................................44
3.1.1 颜色映射.......................................................................................................................46
3.1.2 轮廓提取.......................................................................................................................49
3.1.3 符号化...........................................................................................................................51
3.1.4 流线技术.......................................................................................................................53
3.1.5 流面...............................................................................................................................57
第 ii 页
VTK 用户手册
3.1.6 切割...............................................................................................................................59
3.1.7 数据合并.......................................................................................................................61
3.1.8 附加数据(Appending Data).....................................................................................62
3.1.9 探查(Probing) ...............................................................................................................62
3.1.10 为等值面分级着色.......................................................................................................65
3.1.11 提取单元数据的子集...................................................................................................67
3.1.12 提取单元作为多边形数据(vtkPolyData).....................................................................69
3.2 可视化多边形数据 ...............................................................................................................72
3.2.1 手动创建vtkPolyData ..................................................................................................72
3.2.2 生成表面法线...............................................................................................................75
3.2.3 多边形消减技术...........................................................................................................76
3.2.4 平滑网格 Smooth Mesh ...............................................................................................79
3.2.5 裁减数据.......................................................................................................................80
3.2.6 创建纹理坐标...............................................................................................................83
3.3 可视化结构网格数据集 .......................................................................................................85
3.3.1 手动创建结构化网格数据集.......................................................................................85
3.3.2 提取计算平面...............................................................................................................87
3.3.3 对结构化网格数据二次采样.......................................................................................89
3.4 可视化线性网格数据 ...........................................................................................................90
3.4.1 手动创建线性网格数据...............................................................................................90
3.4.2 提取计算平面...............................................................................................................91
3.5 可视化非结构网格数据 .......................................................................................................92
3.5.1 手动创建非结构化网格数据.......................................................................................92
3.5.2 提取部分网格数据.......................................................................................................94
3.5.3 对 vtkUnstructuredGrid 提取轮廓值...........................................................................96
4 可视化图像及三维体数据
可视化图像及三维体数据............................................................................................................96
可视化图像及三维体数据
可视化图像及三维体数据
4.1
VTKSTRUCTUREDPOINTS 数据的发展历史 ...........................................................................97
4.2 手动创建 VTKIMAGEDATA 数据............................................................................................98
4.3 图像数据的二次采样 ...........................................................................................................99
4.4 二维图像的三维显示 .........................................................................................................102
4.5 体绘制 .................................................................................................................................103
4.5.1 一个简单的例子.........................................................................................................104
4.5.2 为什么有多种体绘制技术.........................................................................................106
4.5.3 创建 vtkVolume 类......................................................................................................107
4.5.4 使用vtkPiecewiseFunction 类....................................................................................107
4.5.5 使用vtkColorTransferFunction 类.............................................................................109
4.5.6 使用vtkVolumeProperty 类设定透明度和颜色值.....................................................109
4.5.7 使用vtkVolumeProperty 控制阴影............................................................................ 110
4.5.8 创建vtkVolumeMapper 映射器.................................................................................. 112
4.5.9 切割体数据................................................................................................................. 113
4.5.10 剪取体数据................................................................................................................. 114
4.5.11 用射线投射法进行体绘制......................................................................................... 115
4.5.12 二维纹理映射法体绘制............................................................................................. 117
第 iii 页
VTK 用户手册
5 VTK 数据接口对象
数据接口对象.................................................................................................................... 117
数据接口对象
数据接口对象
5.1 数据数组 ............................................................................................................................. 118
5.2 数据集对象 .........................................................................................................................121
5.3
VTKDATASET 数据接口 ......................................................................................................122
VTKIMAGEDATA 类的数据接口..........................................................................................123
5.4
VTKPOINTSET 的数据接口 ..................................................................................................124
5.5
5.6
VTKPOLYDATA 的数据接口.................................................................................................125
VTKCELL 的数据接口..........................................................................................................127
5.7
6 建立模型
建立模型......................................................................................................................................127
建立模型
建立模型
6.1 隐模型 .................................................................................................................................127
6.1.1 定义隐函数.................................................................................................................127
6.1.2 对隐函数采样.............................................................................................................129
6.2 挤压 .....................................................................................................................................132
6.3 表面重构 .............................................................................................................................133
6.3.1 Delaunay 三角网.............................................................................................................133
6.3.2 高斯抛雪球.................................................................................................................139
6.3.3 杂乱点集构建表面.....................................................................................................141
7 与视窗系统交互
与视窗系统交互..........................................................................................................................142
与视窗系统交互
与视窗系统交互
7.1
VTKRENDERWINDOW 交互类型 ..........................................................................................142
7.2 交互方针 .............................................................................................................................143
7.3 在 WINDOW 系统/VC++中使用 VTK 进行交互................................................................144
8 VTK 对象说明
对象说明............................................................................................................................144
对象说明
对象说明
8.1 对象结构图 .........................................................................................................................144
8.1.1 基础对象.....................................................................................................................145
8.1.2 单元对象.....................................................................................................................145
8.1.3 数据集对象.................................................................................................................146
8.1.4 可视化流水线对象.....................................................................................................146
8.1.5 源对象.........................................................................................................................146
8.1.6 过滤器.........................................................................................................................147
8.1.7 映射器.........................................................................................................................148
8.1.8 图形对象.....................................................................................................................149
8.1.9 体绘制.........................................................................................................................150
8.1.10 图像处理对象.............................................................................................................151
8.1.11
OpenGL 绘制对象......................................................................................................152
8.1.12 拾取对象.....................................................................................................................153
8.1.13 变换对象层次图.........................................................................................................153
8.2 过滤器 .................................................................................................................................154
8.2.1 源对象.........................................................................................................................154
8.2.2 图像过滤器.................................................................................................................155
8.2.3 可视化过滤器.............................................................................................................158
8.2.4 映射器对象.................................................................................................................162
8.2.5 角色对象.....................................................................................................................163
第 iv 页
VTK 用户手册
9 可视化流水线
可视化流水线..............................................................................................................................164
可视化流水线
可视化流水线
9.1 概述 .....................................................................................................................................164
9.1.1 数据可视化示例.........................................................................................................164
9.1.2 功能模型.....................................................................................................................165
9.1.3 可视化模型.................................................................................................................166
9.1.4 对象模型.....................................................................................................................166
9.2 可视化流水线 .....................................................................................................................166
9.2.1 数据对象.....................................................................................................................166
9.2.2 过程对象.....................................................................................................................166
9.3 流水线拓扑结构 .................................................................................................................167
9.3.1 流水线的连接.............................................................................................................167
9.3.2 循环机制.....................................................................................................................168
9.4 流水线执行 .........................................................................................................................168
9.5 数据接口 .............................................................................................................................169
9.6 综合应用 .............................................................................................................................170
9.6.1 隐含控制执行.............................................................................................................170
9.6.2 多输入输出.................................................................................................................171
9.7 可视化流水线示例 .............................................................................................................172
9.7.1 简单球体.....................................................................................................................172
9.7.2 弯曲球体.....................................................................................................................173
9.7.3 符号化处理.................................................................................................................174
9.7.4 隐藏球体.....................................................................................................................175
10 基本数据表达
基本数据表达 .........................................................................................................................177
基本数据表达
基本数据表达
10.1 可视化数据的特点 .............................................................................................................177
10.2 数据对象 .............................................................................................................................177
10.3 数据集 .................................................................................................................................178
10.3.1 单元.............................................................................................................................178
10.3.2 属性数据.....................................................................................................................183
10.4 数据集可视化 .....................................................................................................................186
10.4.1 数据集类型.................................................................................................................186
10.4.2 数据可视化方法.........................................................................................................189
11 功能算法
功能算法 .................................................................................................................................194
功能算法
功能算法
11.1 概述 .....................................................................................................................................194
11.2 标量算法 .............................................................................................................................195
11.2.1 颜色映射.....................................................................................................................195
11.2.2 提取轮廓.....................................................................................................................196
11.2.3 标量数据的确定.........................................................................................................197
11.3 矢量算法 .............................................................................................................................197
11.3.1 方向线和方向符号.....................................................................................................198
11.3.2 变形.............................................................................................................................198
11.3.3 位移绘制.....................................................................................................................199
11.3.4 时间动画.....................................................................................................................200
第 v 页
VTK 用户手册
11.3.5 流线.............................................................................................................................200
11.4 模型算法 .............................................................................................................................201
11.4.1 源对象.........................................................................................................................201
11.4.2 隐函数.........................................................................................................................202
11.4.3 隐式建模.....................................................................................................................203
11.4.4 符号化.........................................................................................................................203
11.4.5 剪切.............................................................................................................................204
11.5 综合应用 .............................................................................................................................204
11.5.1 过程对象设计.............................................................................................................204
11.5.2 颜色映射.....................................................................................................................206
11.5.3 隐函数.........................................................................................................................207
11.5.4 提取轮廓.....................................................................................................................207
11.5.5 剪切.............................................................................................................................208
11.5.6 符号化.........................................................................................................................208
11.5.7 流线.............................................................................................................................208
11.5.8 抽象过滤器.................................................................................................................209
第 vi 页
VTK 用户手册
1 系统概述
本章的主要目的对 VTK 系统进行概括性的介绍,并且提供了一些基本的信息,让用户能
用各种开发语言(C++、TCL、Java、Python)创建应用程序,在本章开始的时候,主要介绍
VTK 系统的基本概念和对象模型,在本章的最后,用一些示例程序说明如何用 VTK 构建应用
系统。
1.11.11.11.1 系统架构
系统架构
系统架构
系统架构
VTK 系统主要由 C++类库、解释包装层(对 C++类库进行包装,便于 TCL、Java 等语言
使用)两个基本子系统构成,见图 3-1。
图 1-1 VTK 组成
采用这种架构的优势是我们能使用 C++语言建立高效的算法,用其他的脚本语言(如
TCL、Python)可以进行快速的开发,当然,如果精通 C++,也可以用 C++语言建立应用程
序。
VTK 是一个基于面向对象的系统,提高 VTK 开发效率的关键因素是建立一个好的、易
于理解的、优化的对象模型,我们根据对象模型,很容易把各种对象组合起来,构建应用程
序,在本手册中我们尽量提供一些对用户有帮助的示例程序,在示例程序中介绍如何应用对
象构建可视化程序,最好的办法是用户可以通过示例代码或网站获取更多的 VTK 对象功能
描述信息。
在本章的剩下部分,介绍构成 VTK 系统的两种对象模型:图形模型和可视化模型,这
部分的内容相对来说,是比较高级的内容,建议你在看这部分内容时,多看示例程序的代码。
第 1 页