游戏开发与设计技术丛书Unity虚拟现实开发实战(原书第2版) 版权信息
- 出版社:机械工业出版社
- 出版时间:2020-04-01
- ISBN:9787111650836
- 条形码:9787111650836 ; 978-7-111-65083-6
游戏开发与设计技术丛书Unity虚拟现实开发实战(原书第2版) 本书特色
本书通过基于项目的实践方式,详细讲解如何使用Unity 3D游戏引擎进行虚拟现实开发。通过一系列实践项目,循序渐进地阐释Unity虚拟现实项目开发的基本原则和技巧。不仅提供详细的步骤介绍,还会讨论其中涵盖的更广泛的背景和应用场景。
首先,你将学习如何使用Unity来开发可以用Oculus Rift、Google Daydream、HTC Vive等设备进行体验的VR应用程序。
然后,你将学习如何从第三人称和*人称的视角融入虚拟世界。
另外,你将探索一些对于VR来说重要且可能独一无二的技术关注点。
读完本书后,你将能够用Unity开发丰富的交互式虚拟现实体验程序。
本书通过基于项目的实践方式,详细讲解如何使用Unity 3D游戏引擎进行虚拟现实开发。通过一系列实践项目,循序渐进地阐释Unity虚拟现实项目开发的基本原则和技巧。不仅提供详细的步骤介绍,还会讨论其中涵盖的更广泛的背景和应用场景。
首先,你将学习如何使用Unity来开发可以用Oculus Rift、Google Daydream、HTC Vive等设备进行体验的VR应用程序。
然后,你将学习如何从第三人称和*人称的视角融入虚拟世界。
另外,你将探索一些对于VR来说重要且可能独一无二的技术关注点。
读完本书后,你将能够用Unity开发丰富的交互式虚拟现实体验程序。
本书通过具体示例由浅入深逐步引导你了解并深入虚拟现实技术,在第1版的基础上,更新了使用的Unity版本,并对各个章节和项目做了大量的修改,使得本书更加具体并易于阅读。无论是初接触编程并想学习虚拟现实技术的新手,还是具有丰富编程经验,想要进入虚拟现实领域的程序员,本书都很适合你。
游戏开发与设计技术丛书Unity虚拟现实开发实战(原书第2版) 内容简介
本书将带你进行一系列实战,并深入讨论如何使用Unity游戏引擎开发VR应用程序。本书通过基于项目的实践方法,帮助你快速了解使用Unity进行VR开发的具体细节。通过Oculus、Daydream和Vive等设备的体验,你将学习如何使用Unity开发VR应用程序。在众多主题和项目中,你将探索基于凝视与手柄控制器输入、世界坐标系UI画布、移动与远程传送、软件设计模式、360°多媒体、时间轴动画与多人网络。通过交互式Unity编辑器,你将了解Unity 3D游戏引擎,并且学习C#编程。
游戏开发与设计技术丛书Unity虚拟现实开发实战(原书第2版) 目录
第1章 万物皆可虚拟 11.1 虚拟现实对你来说意味着什么 2
1.2 头戴式显示器的类型 3
1.2.1 桌面VR 3
1.2.2 移动VR 3
1.3 虚拟现实与增强现实的区别 4
1.4 应用与游戏 5
1.5 虚拟现实是如何运作的 7
1.5.1 立体3 D视图 7
1.5.2 头姿追踪 9
1.6 VR体验类型 10
1.7 VR**技能 11
1.8 本书涵盖的内容 12
1.9 本章小结 12
第2章 内容、物体和缩放比例 142.1 Unity入门 14
2.1.1 新建Unity项目 15
2.1.2 Unity编辑器 15
2.1.3 默认世界坐标系 16
2.2 创建简单的透视图 17
2.2.1 添加立方体 18
2.2.2 添加平面 18
2.2.3 添加球体和材质 19
2.2.4 改变场景视图 21
2.2.5 添加照片 22
2.2.6 给地平面着色 23
2.3 测量工具 24
2.3.1 随手保留一个单位立方体 24
2.3.2 使用网格投影器 24
2.3.3 测量Ethan角色 25
2.4 使用第三方内容 27
2.5 使用Blender创建3D内容 29
2.5.1 Blender简介 29
2.5.2 单位立方体 31
2.5.3 UV纹理图片 32
2.5.4 导入Unity 34
2.5.5 一些观察 35
2.6 在VR中创建3D内容 35
2.6.1 导入和导出Tilt Brush模型 37
2.6.2 使用Google Poly进行发布和导入 38
2.7 在VR中使用EditorXR编辑Unity 39
2.7.1 设置EditorXR 40
2.7.2 使用EditorXR 41
2.8 本章小结 43
第3章 VR的构建和运行 443.1 Unity VR支持和工具包 44
3.1.1 Unity的内置VR支持 45
3.1.2 特定于设备的工具包 46
3.1.3 应用程序工具包 47
3.1.4 基于Web和JavaScript的VR 47
3.1.5 3D世界 48
3.2 为你的平台启用虚拟现实 48
3.2.1 设置目标平台 49
3.2.2 设置XR SDK 50
3.2.3 安装设备工具包 50
3.2.4 创建MeMyselfEye播放器预制件 50
3.3 构建SteamVR 52
3.4 构建Oculus Rift 53
3.5 构建Windows沉浸式MR 55
3.5.1 设置Windows 10开发人员模式 56
3.5.2 在Visual Studio中安装UWP支持 56
3.5.3 UWP构建 57
3.6 为Android设备设置 58
3.6.1 安装Java开发工具包 59
3.6.2 安装Android SDK 59
3.6.3 使用命令行工具 60
3.6.4 关于Android SDK根路径位置 61
3.6.5 安装USB设备调试和连接 61
3.6.6 配置Unity外部工具 62
3.6.7 为Android配置Unity Player Settings 63
3.7 为GearVR和Oculus Go构建 63
3.8 为Google VR构建 64
3.8.1 Google Daydream 64
3.8.2 Google Cardboard 65
3.8.3 Google VR运行模式 66
3.9 为iOS设备设置 67
3.9.1 拥有Apple ID 67
3.9.2 安装Xcode 67
3.9.3 配置iOS的Unity Player Settings 68
3.9.4 构建和运行 68
3.10 本章小结 69
第4章 基于凝视的操控 704.1 游走者Ethan 70
4.1.1 人工智能Ethan 71
4.1.2 NavMesh烘焙 72
4.1.3 镇上的随机游走者 74
4.1.4 RandomPosition脚本 74
4.1.5 “僵尸”Ethan 76
4.2 向我看的方向行走 77
4.2.1 LookMoveTo脚本 77
4.2.2 添加反馈光标 79
4.2.3 穿透对象观察 80
4.3 如果眼神可以杀人 81
4.3.1 KillTarget脚本 81
4.3.2 添加粒子效果 83
4.3.3 清理工作 84
4.4 Unity C#编程简介 84
4.5 本章小结 86
第5章 便捷的交互工具 875.1 设置场景 88
5.1.1 创建气球 88
5.1.2 使之成为预制件 88
5.2 基本按钮输入 90
5.2.1 使用Fire1按钮 90
5.2.2 OpenVR的扳机键 92
5.2.3 用Daydream控制器单击 93
5.3 轮询单击 93
5.3.1 按钮界面功能 94
5.3.2 创建并释放气球 95
5.3.3 按住按钮给气球充气 96
5.4 使用脚本化对象进行输入 98
5.4.1 创建脚本化对象 99
5.4.2 填充输入操作对象 100
5.4.3 访问输入操作对象 101
5.4.4 使用脚本化对象进行模拟测试 101
5.5 使用Unity事件处理输入 102
5.5.1 调用输入操作事件 103
5.5.2 订阅输入事件 103
5.6 使用双手 105
5.6.1 将气球设为手柄的子对象 105
5.6.2 让气球爆炸 107
5.7 交互项目 108
5.7.1 使用SteamVR交互系统进行交互 109
5.7.2 使用Daydream VR Elements进行交互 110
5.8 本章小结 112
第6章 世界坐标系UI 1136.1 学习VR设计原则 114
6.2 可重用的默认画布 116
6.3 护目镜HUD 118
6.4 十字光标 120
6.5 挡风玻璃HUD 122
6.6 游戏元素UI 124
6.7 使用文字特效插件TextMeshPro 125
6.8 信息框 126
6.9 响应输入事件的游戏内仪表板 129
6.9.1 创建带有按钮的仪表板 129
6.9.2 连接水管与按钮 131
6.9.3 用脚本激活按钮 132
6.9.4 用注视高亮显示按钮 133
6.9.5 注视并单击选择 135
6.9.6 注视并聚焦选择 136
6.10 使用VR组件指向并单击 136
6.10.1 使用Unity UI和SteamVR 137
6.10.2 使用Unity UI和Daydream 139
6.11 构建基于手腕的菜单栏 139
6.12 本章小结 140
第7章 移动与舒适 1417.1 理解Unity角色 141
7.1.1 Unity组件 142
7.1.2 Unity的Standard Assets 143
7.2 使用滑行移动 145
7.2.1 沿视线方向移动 145
7.2.2 保持脚着地 146
7.2.3 不要穿透固体对象 147
7.2.4 不要在边缘坠落 149
7.2.5 跨越小物体并处理崎岖路面 149
7.2.6 开始与停止移动 150
7.3 添加舒适模式移动 150
7.4 传送技术 153
7.4.1 凝视传送 153
7.4.2 在表面之间传送 155
7.4.3 传送生成点 157
7.4.4 其他传送考虑因素 160
7.5 传送工具包 161
7.5.1 使用SteamVR交互系统传送 161
7.5.2 使用Daydream Elements传送 162
7.6 重置中心和位置 163
7.7 对付VR晕动症 164
7.8 本章小结 166
第8章 使用物理引擎 1678.1 Unity的物理组件 167
8.2 弹力球 169
8.3 管理游戏对象 171
8.3.1 销毁坠落的对象 172
8.3.2 设置持续时间 172
8.3.3 实现一个对象池 172
8.4 用头部射击游戏 176
8.5 球拍游戏 180
8.6 射手游戏 182
8.7 完善场景 185
8.7.1 创建大火球 186
8.7.2 Skull环境 188
8.7.3 音频同步 190
8.8 本章小结 191
第9章 漫游和渲染 1929.1 用Blender构建 192
9.1.1 构建墙体 193
9.1.2 添加天花板 194
9.2 用Unity组装场景 197
9.2.1 画廊 197
9.2.2 艺术品部件 198
9.2.3 展览计划 200
9.3 将图片添加到画廊中 202
9.4 管理艺术信息数据 204
9.4.1 使用列表 204
9.4.2 使用数据结构 205
9.4.3 使用脚本化对象 206
9.5 显示艺术信息 208
9.5.1 创建标题牌匾 209
9.5.2 详细的交互信息 210
9.5.3 调整图像宽高比 212
9.6 漫游画廊 213
9.6.1 在画像之间传送 213
9.6.2 考虑房间规模 215
9.6.3 动画穿越 216
9.7 本章小结 218
第10章 利用360 21910.1 360 多媒体219
10.1.1 等距圆柱投影 220
10.1.2 VR正在侵入你的视野 220
10.1.3 180 多媒体221
10.1.4 立体360 多媒体 221
10.2 有趣的光球 222
10.2.1 水晶球 222
10.2.2 地球仪 224
10.3 渲染光球 225
10.3.1 编写自定义内部着色器 226
10.3.2 魔法球 228
10.3.3 光球 229
10.3.4 播放360 视频230
10.4 使用Unity天空盒 232
10.4.1 六边形或立方体天空盒 233
10.4.2 球面全景天空盒 234
10.4.3 360 视频天空盒 235
10.4.4 3D立体天空盒 236
10.5 在Unity中捕捉360 多媒体 236
10.5.1 捕捉立方体贴图和反射探头 236
10.5.2 使用第三方库360 捕获图像 238
10.5.3 Unity内置立体360图像和视频捕获 239
10.6 本章小结 240
第11章 动画与VR讲故事 24111.1 撰写我们的故事 241
11.1.1 收集资源 242
11.1.2 创建初始场景 243
11.2 Timeline和音频轨道 245
11.3 使用Timeline激活对象 247
11.4 录制Animation Track 248
11.4.1 正在生长的树 248
11.4.2 正在生长的鸟 249
11.5 使用动画编辑器 249
11.6 动画的其他属性 252
11.6.1 动画的灯光 252
11.6.2 动画脚本组件属性 253
11.6.3 控制粒子系统 255
11.7 使用动画剪辑 257
11.8 使用动画控制器 258
11.8.1 动画和动画器的定义 259
11.8.2 ThirdPersonController动画 259
11.8.3 Living Bird动画器 260
11.8.4 学习飞行 262
11.8.5 对鸟进行攻击 264
11.8.6 飞走 264
11.9 让故事更具互动性 265
11.9.1 期待播放效果 265
11.9.2 重置初始场景设置 267
11.9.3 更多互动的想法 268
11.10 本章小结 268
第12章 社交化的VR虚拟空间 26912.1 多玩家网络 270
12.1.1 网络服务 270
12.1.2 网络架构 271
12.1.3 本地与服务器 271
12.1.4 Unity的网络系统 272
12.2 建立简单的场景 273
12.2.1 创建场景环境 273
12.2.2 创建虚拟角色的头部 274
12.3 添加多玩家网络 275
12.3.1 Network Manager和HUD 275
12.3.2 Network Identity和Sync Transform 275
12.3.3 作为一个主机运行 276
12.3.4 添加出生点位 276
12.3.5 运行游戏的两个实例 277
12.3.6 关联虚拟角色与**人称角色 278
12.4 添加配对大厅 280
12.5 同步对象和属性 281
12.5.1 设置头球游戏 282
12.5.2 通过联网射击球 284
12.5.3 同步球变换 285
12.5.4 状态变量同步 286
12.6 高级网络主题 287
12.7 语音聊天选项 288
12.8 使用Oculus平台和虚拟角色 288
12.8.1 Oculus平台权限检查 289
12.8.2 添加本地虚拟角色 290
12.8.3 添加远程虚拟角色 291
12.9 构建和共享自定义VRChat会议室 292
12.10 本章小结 294
第13章 优化性能和舒适度 29513.1 使用Unity的Profiler和Stats 296
13.1.1 Stats窗口 296
13.1.2 Profiler窗口 297
13.2 优化艺术品 298
13.2.1 设置场景 299
13.2.2 抽取模型 302
13.2.3 透明材质 303
13.2.4 细节层次 304
13.3 使用静态对象优化场景 307
13.3.1 设置场景 307
13.3.2 灯光和烘焙 307
13.3.3 遮挡删除 309
13.4 优化代码 310
13.4.1 了解Unity的生命周期 311
13.4.2 编写高效的代码 312
13.4.3 避免费时的API调用 313
13.5 优化渲染 313
13.5.1 批次处理 314
13.5.2 多通道像素填充 315
13.5.3 VR优化着色器 316
13.6 运行时性能和调试 316
13.6.1 Daydream 317
13.6.2 Oculus 318
13.7 本章小结 318
游戏开发与设计技术丛书Unity虚拟现实开发实战(原书第2版) 作者简介
乔纳森·林诺维斯(Jonathan Linowes)创立了Parkerhill Reality Labs(一个沉浸式媒体独立工作室),是BridgeXR工具包、Power Solitaire VR游戏以及即将到来的Chess Or Die游戏的开发者。他是VR/AR的传播者、Unity开发者、企业家和教师。他拥有美国雪城大学(Syracuse University)的艺术学士学位和麻省理工学院媒体实验室(MIT Media Lab)的硕士学位。他曾在Autodesk公司和其他公司担任技术领导职务。他撰写了《Unity Virtual Reality Projects 》(2015年第1版)《Cardboard VR Projects for Android 》(2016) 和 《Augmented Reality for Developers 》(2017)。