Unity VR虚拟现实完全自学教程
作者:邵伟
出版时间: 2019年版
内容简介
本书是 VR 自学爱好者的一本入门书,全书共 16 章,全面讲述了在制作 VR 应用程序的过程中所必备的软/硬件知识。硬件层面以 HTC VIVE 为主要硬件平台,同时介绍了两款配合其使用的外部设备―― VIVE 追踪器和 Leap Motion;软件层面以制作 VR 应用程序的核心工作流程为主线,以 Unity 为游戏引擎,从 VR 交互原则、材质、UI、编程开发、调试优化等方面逐步展开介绍各工作环节的主要内容。同时,本书辅以丰富的案例项目,重点介绍了 SteamVR、InteractionSystem、VRTK 等必备插件在实际项目中的使用方法,帮助读者快速上手制作属于自己的 VR 应用程序。本书适合对制作 VR 应用程序感兴趣的人员,以及有志于从事 VR 软件开发工作的人员阅读,同时也适合院校及培训虚拟现实机构相关专业的师生参考。
目录
第 1 章 VR 行业概述 /1
1.1 VR 介绍 /1
1.2 VR 技术应用案例 /1
1.3 VR 技术当前面临的挑战 / 5
1.3.1 硬件价格 / 5
1.3.2 运算及显示能力 /5
1.3.3 交互 / 5
1.3.4 移动性 /6
1.3.5 内容 / 7
1.3.6 小结 / 7
第 2 章 Unity VR 概述 / 8
2.1 Unity VR / 8
2.1.1 图形渲染 /8
2.1.2 真实物理引擎 / 9
2.1.3 多 VR 平台原生支持 /9
2.1.4 丰富的资源 /10
2.1.5 对开发者友好 /10
2.1.6 不断更新的 Unity 版本 / 11
2.2 使用 C#脚本进行 VR 交互开发 /12
第 3 章 当前主流 VR 硬件 / 13
3.1 HTC VIVE / 13
3.2 Oculus Rift / 13
3.3 Gear VR / 14
3.4 Cardboard /14
3.5 Daydream 平台 15
3.6 逐渐崛起的 VR 一体机 / 16
3.6.1 Oculus Go 和小米 VR 一体机 /17
3.6.2 HTC VIVE Focus /18
3.7 未来展望 /18
第 4 章 VR 应用程序开发工作流程 /20
4.1 资源准备 /20
4.2 模型优化及重拓扑 /23
4.3 展 UV 的过程 / 24
4.4 材质贴图制作 /25
4.5 将资源导入 Unity / 25
4.6 导入开发工具包 /26
4.7 场景搭建 /26
4.8 设置光照环境 /27
4.9 交互开发 /28
4.10 测试优化 / 28
4.11 发布应用程序 / 28
4.12 常用开发工具 /29
第 5 章 VR 交互设计原则 / 36
5.1 设计必要的新手引导 /36
5.2 使用十字线(准星)/36
5.3 避免界面深度引起的疲劳感 /37
5.4 使用恒定的速度 /37
5.5 保持用户在地面上 /38
5.6 保持头部的跟踪 /38
5.7 用光来引导用户的注意力 /39
5.8 借助比例 /39
5.9 使用空间音频 /40
5.10 充分使用反馈 /40
第 6 章 HTC VIVE 硬件 / 41
6.1 简介 /41
6.2 产品特点 /41
6.3 VIVE PRO / 43
6.4 HTC VIVE 硬件拆解结构 / 44
6.4.1 头显 /44
6.4.2 控制器 /45
6.5 HTC VIVE 控制器按键名称 / 46
6.6 HTC VIVE 定位原理/ 47
6.7 Inside-Out 与 Out-Inside 位置跟踪技术 / 47
6.7.1 Outside-In 跟踪技术 /48
6.7.2 Inside-Out 跟踪技术 / 48
6.8 HTC VIVE 的安装 / 49
第 7 章 VR 中的 UI ./51
7.1 概述 /51
7.2 将 UI 容器转换为世界空间坐标 / 52
7.3 VR 中的 UI 交互 /53
第 8 章 Unity VR 写实材质 . 55
8.1 Unity 材质基础 / 55
8.2 基于物理的渲染理论 /56
8.3 PBR 材质的优势 / 57
8.3.1 高品质写实级别材质表现 /58
8.3.2 为实时渲染而生 / 58
8.3.3 太阳城
的材质制作流程 /59
8.4 PBR 材质主要贴图类型 /59
8.4.1 颜色贴图(Albedo/Basecolor Map)/59
8.4.2 金属贴图(Metallic Map) /60
8.4.3 光滑度贴图(Roughness Map) /60
8.5 PBR 材质制作软件 / 61
8.5.1 Substance Designer /61
8.5.2 Substance Painter /65
8.5.3 Quixel Suite /66
8.5.4 Marmoset Toolbag /66
8.6 制作 PBR 椅子材质 /67
8.6.1 在 Substance Painter 中制作贴图 /67
8.6.2 导出贴图到 Unity /74
8.7 Substance in Unity 的使用 / 76
第 9 章 SteamVR /81
9.1 SteamVR 简介 /81
9.1.1 SteamVR Runtime /81
9.1.2 SteamVR Plugin / 81
9.1.3 获取控制器引用及按键输入 /83
9.2 使用SteamVR Plugin实现与物体的交互 /84
9.3 InteractionSystem /89
9.3.1 InteractionSystem 核心模块 / 89
9.3.2 使用 InteractionSystem 实现传送 / 91
9.3.3 使用 InteractionSystem 实现与物体的交互 / 93
9.3.4 使用 InteractionSystem 实现与 UI 的交互 /95
9.4 需要注意的问题 . 96
第 10 章 使用 VRTK 进行交互开发 /99
10.1 VRTK 简介 /99
10.1.1 什么是 VRTK / 99
10.1.2 VRTK 能做什么 /99
10.1.3 为什么选择 VRTK /100
10.1.4 未来版本 103
10.2 SteamVR Plugin、InteractionSystem 与 VRTK 的关系 /103
10.3 配置 VRTK /103
10.3.1 一般配置过程 /104
10.3.2 快速配置 VRTK/108
10.4 VRTK 中的指针 / 109
10.4.1 指针 /109
10.4.2 指针渲染器 /113
10.5 在 VRTK 中实现传送 /115
10.5.1 VRTK 中的传送类型 /115
10.5.2 限定传送区域 /118
10.5.3 在 VR 场景中实现传送 /119
10.6 使用 VRTK 实现与物体的交互 /121
10.6.1 概述 / 121
10.6.2 配置方法 / 122
10.6.3 VRTK 的抓取机制 / 127
10.7 VRTK 中的控制器高亮和振动 /129
10.7.1 控制器高亮 /129
10.7.2 控制器振动 /131
10.8 VRTK 中与 UI 的交互 / 132
10.9 实例:开枪射击效果/ 134
10.10 实例:攀爬效果 / 140
10.11 实例:实现释放自动吸附功能 / 143
第 11 章 将基于 PC 平台的应用移植到 VR 平台 / 148
11.1 项目移植分析 /148
11.2 初始化 VR 交互 /149
11.3 Player 的移植 / 150
11.4 设置道具为可交互对象 / 152
11.5 实现控制器与道具的交互逻辑 /154
11.6 修改 UI 渲染模式为 World Space / 156
11.7 玩家伤害闪屏效果 /157
11.8 根据报错信息调整代码 /158
11.9 游戏结束及重新开始 / 159
第 12 章 Leap Motion for VR /162
12.1 概述 /162
12.2 硬件准备 /163
12.3 软件环境 /164
12.4 Leap Motion VR 初始开发环境 /164
12.5 替换 Leap Motion 在 VR 环境中的手部模型 /165
X Unity VR 虚拟现实完全自学教程
12.6 实现与 3D 物体的交互 / 167
12.7 实例:使用 Leap Motion 实现枪械的组装 /171
第 13 章 VIVE Tracker 的使用 / 175
13.1 外观结构 /175
13.2 使用场景 /176
13.3 初次使用 Tracker /177
13.4 使用 Tracker 作为控制器 / 178
13.5 使用 Tracker 与现实世界物体进行绑定 179
13.6 小结 /181
第 14 章 Unity VR 游戏案例――《水果忍者 VR》原型开发 /182
14.1 项目简介 /182
14.2 初始化项目 / 182
14.3 配置武士刀 / 183
14.4 编写水果生成逻辑 /185
14.5 实现切割水果的效果 /187
14.6 制作分数和游戏结束 UI /189
14.7 编写计分、计时和游戏结束等逻辑 / 190
第 15 章 Unity VR 案例―― Tilt Brush 原型开发 / 194
15.1 项目分析 /194
15.2 初始化项目并编写脚本 /195
15.3 实现修改笔刷颜色功能 /197
15.4 扩展内容:将绘制交互修改为 VRTK 版本 / 201
15.5 异常处理 /202
第16 章 Unity VR 性能优化工具和方法 / 204
16.1 Unity Profiler / 204
16.2 Memory Profiler / 205
16.3 Frame Debugger / 205
16.4 优化原则和措施 /206
16.4.1 LOD 技术 /206
16.4.2 较少 Draw Call 数量 / 207
16.4.3 使用单通道立体渲染 / 208
16.4.4 使用 The Lab Renderer / 209
16.4.5 小结 / 210
附录A XR 技术词汇解释/ 211
附录B Unity 编辑器基础小贴士/ 217