第1章 虚拟现实入门 1
1.1 什么叫虚拟现实 2
1.1.1 虚拟现实概念 2
1.1.2 虚拟现实诞生的背景 3
1.1.3 虚拟现实发展历史及大事件 5
1.2 什么叫增强现实 9
1.3 什么叫混合现实 10
1.4 虚拟现实系统的三个基本特征 11
1.5 虚拟现实系统的分类 11
1.6 虚拟现实系统的组成 13
第2章 虚拟现实系统的硬件设备 15
2.1 虚拟现实输入设备 16
2.1.1 三维空间跟踪器 16
2.1.2 漫游和操纵设备 18
2.1.3 手势接口 19
2.2 虚拟现实输出设备 22
2.2.1 图形显示设备 22
2.2.2 三维声音显示设备 26
2.2.3 触觉反馈设备 26
2.3 虚拟现实硬件设备的几个问题 28
2.3.1 虚拟现实设备的技术指标 28
2.3.2 虚拟现实设备三大影响因素 29
2.3.3 虚拟现实硬件设备未来发展 31
第3章 虚拟现实开发工具综述 33
3.1 虚拟现实开发软件及平台 34
3.1.1 Virtools 34
3.1.2 Quest 3D 35
3.1.3 VR-Platform 36
3.1.4 Unity 3D 36
3.1.5 Unreal Engine 4 37
3.2 语言类虚拟现实工具 38
3.2.1 高级着色器利器:HLSL 38
3.2.2 虚拟现实建模语言:VRML 38
3.2.3 三维图像标记语言:X3D 38
3.3 视觉类虚拟现实工具及应用 39
3.4 触觉类虚拟现实工具 41
3.4.1 Haptics 41
3.4.2 Teslasuit 41
第4章 虚拟现实项目的工作流程及注意事项 43
4.1 虚拟现实项目的工作流程 44
4.1.1 虚拟现实项目制作所需资料列表 45
4.1.2 虚拟现实项目制作时间节点表 45
4.2 模型制作规范 47
4.3 材质贴图规范 48
4.4 模型烘焙及导出 48
4.5 文件备份标准 50
第5章 虚拟现实的应用与展望 53
5.1 VR应用领域综述 54
5.1.1 VR军事应用 56
5.1.2 VR医疗研究与应用 60
5.1.3 VR艺术和娱乐领域应用 63
5.1.4 VR虚拟旅游 69
5.1.5 VR教育应用 73
5.2 VR未来应用展望 74
第6章 C#基础介绍 77
6.1 C#概述及其开发环境 78
6.1.1 什么是C# 78
6.1.2 C#与Unity的应用 79
6.1.3 学习C#的准备工作 80
6.2 变量 84
6.2.1 什么是变量 84
6.2.2 变量的数据类型 84
6.2.3 变量的声明 90
6.2.4 常量 90
6.3 表达式与运算符 91
6.3.1 表达式 91
6.3.2 运算符 91
6.3.3 运算符优先级 97
第7章 C#流程控制基础 99
7.1 语句顺序执行 100
7.1.1 调试演示 100
7.1.2 选择分支语句 101
7.1.3 循环语句 105
7.2 函数 108
7.2.1 函数的由来 109
7.2.2 定义函数 109
7.2.3 函数的返回值与函数类型 110
7.2.4 函数的调用 110
7.2.5 函数的形参与实参 111
7.2.6 Main()函数 112
7.2.7 结构函数 114
7.2.8 函数的重载 116
7.3 字符串和数组 116
7.3.1 字符串类string的使用 116
7.3.2 可变字符串类StringBuilder的使用 119
7.3.3 数组的定义 121
7.3.4 数组类型 122
7.3.5 数组的基本操作 125
7.3.6 静态数组 126
7.3.7 动态数组 128
第8章 C#面向对象 133
8.1 定义类 134
8.1.1 类的定义 134
8.1.2 构造函数和析构函数 137
8.1.3 类的使用 140
8.1.4 类的可访问性——访问修饰符 143
8.1.5 嵌套类 145
8.2 对象 147
8.2.1 类和对象的关系 147
8.2.2 对象定义 148
8.2.3 对象的用法 149
8.3 属性 152
8.3.1 C#中的属性 153
8.3.2 属性的组成 153
8.3.3 属性的使用 157
8.4 类的面向对象特性 159
8.4.1 面向对象概述 159
8.4.2 类的继承 159
8.4.3 类的封装 162
8.4.4 类的多态 163
8.5 委托和事件 164
8.5.1 什么是委托 164
8.5.2 使用委托 165
8.5.3 什么是事件 166
8.5.4 事件的使用 166
第9章 C#异常处理和简单案例 171
9.1 异常处理 172
9.1.1 异常处理概述 172
9.1.2 异常处理语句 172
9.2 Unity 3D简单案例 176
9.2.1 Unity 3D简介 176
9.2.2 Unity 3D学习 177
9.2.3 Unity 3D简单案例 177
第10章 三维虚拟样板间装修设计平台开发实例 181
10.1 概述 182
10.1.1 三维家装虚拟样板间装修设计的意义与价值 182
10.1.2 国内外虚拟样板间装修设计的发展 182
10.1.3 UGUI系统概述 188
10.2 虚拟样板间的策划及准备工作 192
10.2.1 虚拟样板间的交互设计 192
10.2.2 使用Unity开发前的准备工作 193
10.3 在Unity中搭建场景 203
10.3.1 导入模型、贴图及布置灯光 203
10.3.2 创建UI布局 211
10.4 设置摄像机 215
10.4.1 设置自主摄像机 215
10.4.2 设置自动游历摄像机 217
10.5 编写交互及UI功能脚本 219
10.5.1 更换地面及壁纸 219
10.5.2 创建新家具 227
10.5.3 移动家具 229
10.5.4 切换镜头及退出等UI控制 234
1O.5.5 家具交互开发 240
10.5.6 样板间全景三维透视展示 243
10.6 添加背景音乐 245
10.7 发布程序 246
第11章 沉浸式虚拟体验在《逃离废墟》中的应用开发实例 251
11.1 概述 252
11.1.1 VR沉浸式体验的意义与价值 252
11.1.2 iTween插件 253
11.1.3 Oculus头戴式头盔 259
11.2 《逃离废墟》的策划及模型制作 262
11.2.1 《逃离废墟》项目开发背景与需求分析 262
11.2.2 《逃离废墟》的场景设计 264
11.2.3 使用Unity开发前的准备工作 265
11.3 在Unity中搭建场景 273
11.4 设置摄像机 276
11.4.1 设计摄像机的游历路线 276
11.4.2 设置自动游历摄像机 277
11.5 添加背景音乐 281
11.6 发布程序 281
第12章 桌面级虚拟现实体验在汽车工业仿真中的应用 287
12.1 概述 288
12.1.1 桌面虚拟现实系统的回顾 288
12.1.2 桌面虚拟现实系统显示技术及其意义和价值 289
12.1.3 桌面虚拟现实系统的交互设备 289
12.1.4 zSpace桌面级虚拟现实体验系统介绍 290
12.2 项目策划 296
12.2.1 项目开发背景 296
12.2.2 项目需求分析 296
12.2.3 项目UI设计 297
12.2.4 交互功能设计 297
12.3 项目插件及资源导入 298
12.3.1 创建工程 298
12.3.2 SDK和插件的下载与导入 299
12.3.3 模型资源导入 300
12.4 搭建场景 300
12.4.1 开场场景搭建 300
12.4.2 主场景模型和摄像机处理 303
12.4.3 场景UI设计 304
12.5 项目逻辑设计 305
12.5.1 项目UI逻辑设计 305
12.5.2 触控笔逻辑设计 314
12.5.3 汽车逻辑设计 320
12.5.4 场景管理类 326
12.5.5 zView效果制作 330
12.6 互动程序发布 337
第13章 Unity与Arduino硬件传感器的VR赛车交互控制开发案例 341
13.1 概述 342
13.1.1 传感器的意义与价值 342
13.1.2 Arduino单片机 343
13.2 VR赛车项目开发的需求分析 343
13.3 配置搭建虚拟现实赛车工程环境 347
13.3.1 创建赛车模型和场景环境 347
13.3.2 制作模型贴图 352
13.3.3 调整Unity场景及赛车模型 355
13.3.4 配置Oculus环境 359
13.3.5 赛车仿真模拟系统与镜头控制 361
13.4 Arduino环境搭建 371
13.4.1 Arduino基本编码规则 372
13.4.2 Arduino通信方式 373
13.4.3 Arduino通信示例 373
13.5 Unity与Arduino硬件传感器的VR赛车通信控制开发 374
13.5.1 Arduino采集传感器数据 374
13.5.2 Unity通信并解析摇杆数据 376
13.6 发布程序 379