什么是消费级虚拟现实?戴上一个头盔显示器(比如护目镜),你可以观看立体3D场景,你可以通过移动头部向四周看以及通过使用手持控制或动作传感器四处走动,你可以拥有完整的沉浸式体验。这就像你真的在某个虚拟世界中一样。
本书通过实战的、基于项目的方式教你使用Unity 3D游戏引擎开发虚拟现实的细节。我们通过一系列实战工程、循序渐进的教程,并使用Unity 5和其他免费或开源软件进行深入讨论。而VR技术正在快速发展,我们将试着获取基本的原则和技巧,以便使你能够让自己的VR游戏和应用程序具有沉浸感和舒适感。
你将学习如何使用Unity开发可以用Oculus Rift或者Google Cardboard这样的设备体验的VR应用程序。我们将涵盖技术上对于VR来说重要且可能独一无二的考虑。读完本书后,你将有能力用Unity开发丰富的、交互性的虚拟现实体验程序。
目录
- 译者序
- 审校者简介
- 前言
- 第1章万物皆可虚拟1
- 1.1虚拟现实对你来说意味着什么2
- 1.2头戴式显示器的类型4
- 1.2.1桌面VR4
- 1.2.2移动VR4
- 1.3虚拟现实与增强现实的区别5
- 1.4应用与游戏5
- 1.5本书涵盖的内容8
- 1.6VR体验类型9
- 1.7VR必备技能9
- 小结10
- 第2章 物体和缩放比例12
- 2.1开始使用Unity12
- 2.1.1新建Unity项目13
- 2.1.2Unity编辑器13
- 2.1.3默认世界坐标系14
- 2.2创建简单的透视图15
- 2.2.1添加立方体15
- 2.2.2添加平面16
- 2.2.3添加球体和材质17
- 2.2.4改变场景视图19
- 2.2.5添加照片20
- 2.2.6给地平面着色21
- 2.3测量工具22
- 2.3.1随手保留一个单位立方体22
- 2.3.2使用网格投影器22
- 2.3.3测量Ethan角色23
- 2.4从Blender 实验中导入25
- 2.5Blender简介25
- 2.5.1立方体28
- 2.5.2UV纹理图片28
- 2.5.3导入Unity30
- 2.5.4观察者31
- 小结32
- 第3章 虚拟现实的构建和运行33
- 3.1虚拟现实设备集成的软件34
- 3.1.1Unity对虚拟现实的内置支持34
- 3.1.2设备特有的SDK34
- 3.1.3开源虚拟现实项目 34
- 3.1.4WebVR35
- 3.1.53D世界35
- 3.2创建MeMyselfEye预制件36
- 3.3为 Oculus Rift构建项目37
- 3.4为 Google Cardboard构建项目37
- 3.4.1配置Android环境38
- 3.4.2配置iOS38
- 3.4.3安装Cardboard的Unity包38
- 3.4.4添加摄像机39
- 3.4.5构建设置39
- 3.4.6试玩模式39
- 3.4.7构建并在Android中运行40
- 3.4.8构建并在iOS中运行40
- 3.5不依赖于设备的点击器类41
- 3.6虚拟现实设备的运行原理42
- 3.6.13D立体视图42
- 3.6.2头部跟踪45
- 小结47
- 第4章 基于凝视的操控48
- 4.1步行者Ethan49
- 4.1.1人工智能Ethan49
- 4.1.2Navmesh 烘焙50
- 4.1.3镇上的游走者51
- 4.1.4插曲—Unity编程简介51
- 4.1.5RandomPosition脚本53
- 4.1.6“僵尸”Ethan55
- 4.2向我看的方向行走56
- 4.2.1LookMoveTo脚本57
- 4.2.2添加反馈光标59
- 4.2.3观察者60
- 4.3如果眼神可以杀人61
- 4.3.1KillTarget脚本61
- 4.3.2添加粒子效果63
- 4.3.3清理工作64
- 小结64
- 第5章 世界坐标系UI66
- 5.1可重用的默认canvas67
- 5.2护目镜HUD71
- 5.3十字光标73
- 5.4挡风玻璃HUD75
- 5.5游戏元素UI77
- 5.6信息框79
- 5.7响应输入事件的游戏内仪表板82
- 5.7.1用按钮创建仪表板83
- 5.7.2连接水管与按钮 85
- 5.7.3用脚本激活按钮86
- 5.7.4用注视高亮显示按钮88
- 5.7.5注视并点击选择90
- 5.7.6注视并聚焦选择91
- 5.8带有头部姿势的响应式UI93
- 5.8.1使用头部的位置93
- 5.8.2使用头部的姿势95
- 小结98
- 第6章 第一人称角色99
- 6.1深入理解Unity角色100
- 6.1.1Unity组件100
- 6.1.2Unity 的Standard Assets102
- 6.2制作第一人称角色104
- 6.2.1在直视的方向上移动105
- 6.2.2保持脚着地106
- 6.2.3不要穿透固体106
- 6.2.4不要在边缘坠落108
- 6.2.5跨越小物体并处理崎岖路面108
- 6.2.6开始和停止移动109
- 6.2.7使用头部姿势开和关109
- 6.3用户校准110
- 6.3.1角色的身高111
- 6.3.2玩家的真实身高112
- 6.3.3回到中心位置113
- 6.4保持自我感113
- 6.4.1身首分离114
- 6.4.2头部和身体115
- 6.4.3双脚115
- 6.4.4身体的虚拟角色117
- 6.4.5虚拟的David le 鼻子118
- 6.4.6声音提示119
- 6.5移动、传送和传感器120
- 6.6对付VR 晕动症122
- 小结123
- 第7章 物理组件和周边环境125
- 7.1 Unity的物理组件126
- 7.2 弹力球127
- 7.3 用头部射击131
- 7.4 蹦床与弹力球134
- 7.5 人类的蹦床135
- 7.5.1 像一块砖135
- 7.5.2 像一个人物角色136
- 7.6 插曲—环境和万物139
- 7.6.1 缥缈的天空140
- 7.6.2 行星地球140
- 7.6.3 企业标识140
- 7.7 升降机142
- 7.8 跳起来143
- 小结145
- 第8章 漫游和渲染146
- 8.1 用Blender构建147
- 8.1.1 墙体147
- 8.1.2 天花板150
- 8.2 用Unity组装场景153
- 8.2.1 画廊153
- 8.2.2艺术品部件154
- 8.2.3 展览计划156
- 8.3 添加图片到画廊中157
- 8.4 漫游动画160
- 8.4.1 Unity的动画系统160
- 8.4.2 脚本动画161
- 8.5 优化性能和舒适感163
- 8.5.1 优化实现和内容164
- 8.5.2 优化Unity渲染流水线166
- 8.5.3 优化目标硬件和驱动169
- 8.5.4 Unity Profiler170
- 小结171
- 第9章 利用360°172
- 9.1 360暗亩嗝教?73
- 9.2 水晶球173
- 9.3 魔法球175
- 9.4 全景图178
- 9.5 信息图179
- 9.6 等距圆柱投影182
- 9.7 地球仪183
- 9.8 照片球184
- 9.9 视野187
- 9.10 捕捉360岸嗝教?88
- 小结189
- 第10章 社交化的VR虚拟空间191
- 10.1 多玩家网络192
- 10.1.1 网络服务192
- 10.1.2 网络架构193
- 10.1.3 本地与服务器193
- 10.1.4 Unity的网络系统195
- 10.2 建立简单的场景195
- 10.2.1 创建场景环境196
- 10.2.2 创建虚拟角色的头部197
- 10.3 添加多玩家网络198
- 10.3.1 Network Manager和HUD198
- 10.3.2 Network Identity 和Transform198
- 10.3.3 作为一个主机运行199
- 10.3.4 添加出生点位199
- 10.3.5 运行两个游戏实例200
- 10.3.6 关联虚拟角色与第一人称角色201
- 10.4 添加多玩家到虚拟现实202
- 10.4.1 Oculus Rift玩家202
- 10.4.2 Google Cardboard 玩家204
- 10.4.3 下一步206
- 10.5 构建和共享一个自定义的V