第1章 虚拟现实的基本概念 1
1.1 虚拟现实的概念 1
第一篇 虚拟现实技术概述 1
1.2 虚拟现实系统的特征 2
1.2.1 沉浸性(Immersion) 3
1.2.2 交互性(Interaction) 3
1.2.3 构想性(Imagination) 4
1.3 虚拟现实的发展 5
第2章 虚拟现实系统的组成和分类 8
2.1 虚拟现实系统的组成 8
2.1.1 输入系统 10
2.1.2 输出系统 10
2.1.4 虚拟现实软件 11
2.1.3 虚拟环境数据库 11
2.2 虚拟现实系统的分类 13
2.2.1 桌面虚拟现实系统 13
2.2.2 沉浸式虚拟现实系统 13
2.2.3 分布式虚拟现实系统 14
2.3 几个典型的虚拟现实系统的介 14
2.3.1 VIDEOPLACE系统 15
2.3.2 VIEW系统 15
2.3.3 Dialogue系统 17
2.3.4 SuperVision系统 18
2.3.5 CAVE系统 20
3.1.1 实时三维计算机图形技术 26
3.1 概述 26
第3章 虚拟现实硬件设备及其相关技术 26
3.1.2 立体显示 27
3.1.3 用户(头、眼)的跟踪 27
3.1.4 手及手势、人体姿势的跟踪 27
3.1.5 立体声及语音输入输出 28
3.1.6 触(力)觉反馈 28
3.2 立体显示技术及设备 28
3.2.1 眼睛的立体视觉 29
3.2.2 双目视差——立体成像的基础 30
3.2.3 立体图像的产生与显示 31
3.2.4 视觉显示设备 32
3.2.5 显示方法及效果 35
3.3.1 声音方向的确定 37
3.3 听觉技术及设备 37
3.3.2 录制三维声音 38
3.3.3 虚拟声音的产生 39
3.4 触觉、力觉技术及设备 41
3.4.1 触摸的感觉 41
3.4.2 触觉与运动感觉的关联 42
3.4.3 虚拟触觉的重要性及复杂性 42
3.4.4 触觉和力反馈的装置 43
3.4.5 力反馈的效果 45
3.5 数据手套 46
3.6 鼠标的演变 49
3.7 数据衣 50
4.2 分布式虚拟环境系统dVS 52
第4章 虚拟环境的开发环境与平台 52
4.1 桌面虚拟环境系统VRT 52
4.3 世界工具包WTK 54
4.3.1 虚拟环境的合成 54
4.3.2 仿真管理程序 55
4.3.3 宇宙中的对象 56
4.4 实时三维视景数据库建摸和优化工具MultiGen 59
4.5 实时三维视景管理软件OpenGVS 60
4.6 实时视景仿真驱动系统Vega 62
4.6.1 LynX图形环境 62
4.6.2 场景图管理 63
4.6.3 API应用程序接口 63
4.7 视景开发系统Vtree SDK 64
4.6.5 Vega Class Recorder记录和重放场景 64
4.6.4 AudioWorks2声音仿真 64
4.7.1 VTree应用编程接口 65
4.7.2 三种层次的开发功能 65
第5章 人机交互系统的设计 67
5.1 人机交互技术的发展历程 67
5.2 人机交互部分的组成及基本原理 68
5.2.1 硬件系统 70
5.2.2 软件系统 73
5.2.3 用户界面系统 76
5.3 系统集成 79
6.1.1 VRT组件 85
6.1 VRT简介 85
第6章 建立虚拟世界 85
第二篇 桌面虚拟环境系统平台VRT 85
6.1.2 VRT编辑器 86
6.1.3 VRT浏览器 88
6.2 VRT开发步骤 89
6.2.1 准备阶段 89
6.2.2 实现阶段 90
6.2.3 出版发布阶段 91
6.3 构造模型 91
6.3.1 Shape Editor 91
6.3.2 World Editor 99
6.3.3 纹理映射 107
6.3.4 Distance的概念 109
6.4 视点 110
6.4.1 视点控制的任务 111
6.4.2 “虚拟人”的设计 111
6.4.3 视点控制方式的设计 112
第7章 SCL 114
7.1 什么是SCL 114
7.2 SCL变量、数组和过程 114
7.2.1 变量类型 114
7.2.2 数组 115
7.2.3 过程 115
7.2.4 条件结构 116
7.2.5 内置函数 117
7.2.6 触发SCL 118
7.3 帧等待 119
7.4 编程实例 120
7.4.1 控制旋转 120
7.4.2 改变纹理 120
7.4.3 建立形状 121
7.4.4 使用声音 122
7.4.5 建立物体 122
第8章 世界集成 124
8.1 世界的内部集成 124
8.1.1 控制界面的总体布局 124
8.1.2 各种资源的创建 125
8.2.1 从另一个世界装载一个世界 126
8.1.3 快捷键的设置 126
8.2 世界的外部集成 126
8.2.2 基于网络集成世界 127
8.3 优化世界 130
8.4 VRT中虚拟世界发布的三种方式 131
第9章 VRT SDK编程 133
9.1 SDK概述 133
9.1.1 SDK应用程序类型 133
9.1.2 VRT、API和应用程序模块之间的关系 133
9.1.3 API接口 134
9.2 SCL命令的工作过程 135
9.2.1 栈与栈内数据类型 135
9.2.2 SCL命令的执行序列 136
9.2.3 编译器记录 137
9.3 VRT两级编程体系 138
9.3.1 VRT编程体系 138
9.3.2 VRT SDK应用程序的实现 139
9.4 VRT SDK编程实例 139
9.4.1 一个简单的实例——Example1 139
9.4.2 获取屏幕的宽度和高度值——Example2 142
9.4.3 SCL和串口设备——Example3 144
第三篇 实时视景仿真工具平台——MultiGen和OpenGVS 146
第10章 基于多边形的建模工具——MultiGen 146
10.1 MultiGen概述 146
10.1.1 MultiGenCreator简介 146
10.2 MultiGen Creator的构成 147
10.1.2 MultiGen Creator应用范围 147
10.1.3 MultiGen Creator系统需求 147
10.2.1 数字地形海拔数据模块(DTED) 148
10.2.2 数字特征分析数据(DFAD)转换模块 149
10.2.3 纹理模块(Texture) 149
10.3 MultiGen Creator的基本环境 150
10.3.1 MultiGen的参考书 150
10.3.2 MultiGen Creator的主界面 150
10.3.3 在3D世界中漫游 151
10.3.4 MultiGen Creator的基本建模模块功能概述 152
10.4 层次结构视图 155
10.4.1 Open Flight结构 155
10.4.3 数据模型的层次目录结构 157
10.4.2 层次结构视图 157
10.5 构建模型 158
10.5.1 实时模型构建时一些好的经验 158
10.5.2 构建一个房子 159
第11章 通用漫游引擎构造工具——OpenGVS 185
11.1 OpenGVS简介 185
11.2 系统的软件结构 187
11.2.1 OpenGVS软件层次 187
11.2.2 OpenGVS的软件模块 188
11.3 系统的软件规则 191
11.4 一个简单的OpenGVS程序实例 192
11.4.1 导入数据库模型 193
11.4.2 Step#0,即User0.c 194
11.4.3 进一步分析 197
11.4.4 Step#1,即 User1.c 198
11.4.5 Step#2,即User2.c 201
11.4.6 例子总结 205
11.5 相机 206
第四篇 虚拟现实技术的应用 210
第12章 一个虚拟变电所培训系统的设计实例 210
12.1 概述 210
12.2 建模 211
12.3 细节等级(LOD,Level of Detail)管理技术 215
12.3.1 引入的原因 215
12.3.2 LOD管理技术的含义 215
12.3.3 LOD的切换选择标准 216
12.3.4 树的LOD表示 218
12.4 虚拟实体操纵技术 219
12.4.1 基于鼠标的人机交互 219
12.4.2 基于数据手套的人机交互 226
12.5 系统的集成与发布 237
第13章 虚拟现实技术在建筑漫游中的应用 240
13.1 虚拟建筑漫游简介 240
13.2 场景数据库的构建 241
13.2.1 选择合适的建模工具 241
13.2.2 确定场景数据库的树状层次结构 241
13.3 大庆石油学院新校区模型的构建 242
13.3.1 大庆石油学院新校区模型的树状层次结构 242
13.2.3 场景数据库的构建过程 242
13.3.2 地形模型的构建 243
13.3.3 其它模型的构建 244
13.3.4 模型集成 247
13.3.5 建模中常见的问题 249
13.4 通用漫游引擎的实现 249
13.4.1 通用漫游引擎框架结构 250
13.4.2 场景数据库加载 251
13.4.3 输入映射与解释 251
13.4.4 视点控制 252
13.4.5 碰撞检测 253
13.4.6 地形匹配技术 255
附录 VRT SCL命令集 259
参考文献 280