书籍简介:
本书循序渐进地引导开发人员学习用谷歌魔镜开发工具包(Cardboard Android SDK)以及Unity开发包进行VR应用开发的技术,讲解了创建令人沉浸其中的虚拟景观应用、开发使用智能手机拍摄3D全景照片的应用,以及采集和控制语音到优化画面的技术。 本书内容分为5章,包括初始VR、VR应用——Alien Apartment、VR应用——Glitcher VR、Lanterns和Village案例以及谷歌魔镜——面向大众的VR。 本书适合VR虚拟现实开发人员、游戏开发人员、程序员学习使用,也可作为大专院校相关专业师生的学习用书和培训学校的教材。
作者简介:
迈克尔·沃西耶(Michael Vaissiere)
过去15年里,Michael Vaissiere(又被誉为VR领域的Ryan Conrad)一直从事IT行业,担任过开发人员、企业架构师和项目经理。曾作为谷歌魔镜应用程序的独立开发人员,开发了当前非常流行的外星公寓VR应用。他喜欢创新、听音乐、读书,并且对科学与天文学充满激情。 迈克·帕萨莫尼克(Mike Pasamonik) Mike Pasamonik是Glitcher VR的创造者,他不仅是一名计算机科学专业的研究生,还担任圣迭戈州立大学语言资源采集中心的全职工程师,负责编写和维护网络、移动应用程序,主要学习与研究人工智能、计算机视觉、机器人技术和虚拟现实技术。 亚历山大·波波夫(Oleksandr Popov) 他是孔明灯(Lanterns)和村庄VR及其他众多应用程序的创作者之一。Oleksandr则担任ELEKS Software的产品经理与开发工程师。 彼得·比克霍夫(Peter Bickhofe) Peter Bickhofe是“哇!当心小行星!”(WAA! When Asteroids Attack!)的创作者,他致力于Unity 3D、VR和基于位置的游戏等领域的学习与研究,现担任Highscore Brothers的CEO。
出版时间:
2018年02月
章节目录:
第 1章 初识VR1
1.1 令人惊叹的效果1
1.2 让人不满足的体验1
1.3 为什么要大力发展谷歌魔镜2
1.4 进一步了解VR应用开发的市场3
1.5 对未来几年的预测4
1.6 开发工具和工作流4
1.6.1 Unity 5.14
1.6.2 谷歌魔镜开发工具包(v0.5)5
1.6.3 3D建模创作工具Blender5
1.6.4 图像处理软件GMIP6
1.6.5 音效创作6
1.6.6 3D人物角色建模软件Makehuman6
1.6.7 关于工作流7
1.6.8 硬件7
1.7 VR能带来什么7
1.7.1 身临其境的氛围8
1.7.2 沉浸式的体验9
1.7.3 真实感和依赖性9
1.8 谷歌魔镜平台10
1.8.1 现实与虚拟现实10
1.8.2 移动平台11
1.8.3 移动平台的VR用户11
1.8.4 硬件12
1.8.5 制约因素及局限性13
第 2章 VR应用—Alien Apartment15
2.1 我为何会制作Alien Apartment15
2.2 构建自己世界的相关基础知识16
2.2.1 相关的设置16
2.2.2 管理坐标轴17
2.2.3 立体视图的开发21
2.2.4 更新玩家的方位角22
2.2.5 运动检测原理(头部运动触发的事件)25
2.2.6 创建非传统的用户交互界面32
2.3 基础知识32
2.4 运行案例36
可以制作凌驾于VR 3D场景之上的用户界面吗38
2.5 打造环境氛围39
2.5.1 天空盒和光照39
2.5.2 打造能勾起美好回忆的氛围39
2.5.3 音频41
2.5.4 音乐42
2.5.5 到目前我们做了什么42
2.6 杂项42
2.6.1 光照贴图43
2.6.2 性能43
2.6.3 淡入淡出47
2.6.4 签名47
2.6.5 版本控制47
2.6.6 运行时回调方法47
2.6.7 通用协同程序管理48
2.6.8 构建参数49
2.6.9 用返回键退出应用49
2.6.10 屏幕自动休眠时间49
2.6.11 着色器50
2.7 小结56
第3章 VR应用—Glitcher VR57
3.1 Glitcher VR简介57
先前的经验和开发的动机58
3.2 VR开发的挑战59
3.3 Glitcher VR应用架构解析60
3.3.1 摄像头子系统61
3.3.2 摄像头子系统需要处理的问题62
3.3.3 启用和停用摄像头62
3.3.4 快速将帧画面发送到GPU64
3.4 创建绘制用表面64
3.4.1 保存照片、截屏和录像功能66
3.4.2 通过摄像头管理器自动检测和管理摄像头67
3.5 输入子系统69
3.5.1 输入子系统需要解决的问题69
3.5.2 检测和处理输入设备70
3.5.3 将语音作为输入复用器71
3.6 渲染和滤镜系统73
3.6.1 设计目标74
3.6.2 基础滤镜75
3.6.3 基于基础滤镜构建复杂滤镜78
3.6.4 附加内容的渲染79
3.6.5 滤镜管理器85
3.7 通知系统87
3.7.1 设计目标87
3.7.2 构建文本渲染器87
3.7.3 创建基本通知89
3.7.4 通过通知调度程序调度通知90
3.8 辅助工具类和其他特性92
3.8.1 手电筒和闪光灯94
3.8.2 实施面部检测95
3.8.3 将面部位置转换为GLSL坐标96
3.8.4 将面部信息发送给滤镜97
3.9 一些技巧和潜在的改进98
3.9.1 输入系统的改进98
3.9.2 避免无用的内容99
3.9.3 让普通用户参与测试100
3.9.4 硬件兼容性测试101
3.9.5 内存管理及分析工具的使用101
3.10 小结102
第4章 Lanterns和Village案例105
4.1 两个VR应用都能使用的通用渲染技术106
4.1.1 为VR改造场景107
4.1.2 创建自己的渲染器109
4.1.3 使用安卓版谷歌魔镜SDK的渲染器111
4.2 渲染Lanterns VR应用的场景114
4.2.1 优化绘制顺序114
4.2.2 雾和灯光着色器114
4.2.3 水面的反射效果116
4.2.3 夜空着色器120
4.3 Village VR场景的渲染及优化技巧121
4.3.1 用单次绘制调用生成烟雾效果122
4.3.2 用点精灵实现萤火虫和雪124
4.3.3 按照距离进行对象排序125
4.3.4 视锥体剪裁126
4.3.5 人物的移动130
4.3.6 重用纹理和图集130
4.3.7 整合光照贴图131
4.3.8 光照贴图调色板133
4.3.9 Village着色器140
4.3.10 植被着色器142
4.3.11 天空纹理的压缩145
4.4 小结147
第5章 谷歌魔镜—面向大众的VR149
5.1 谷歌魔镜项目149
5.2 开始使用谷歌魔镜150
5.2.1 之前的宇航员游戏151
5.2.2 WAA!VR的故事152
5.2.3 开始开发WAA!153
5.2.4 Unity 3D专业版153
5.2.5 测试设备Nexus 5153
5.2.6 谷歌魔镜装备154
5.2.7 用Maxon Cinema4D R16开发游戏素材155
5.2.8 将资源文件导出到Unity:FBX还是C4D格式155
5.3 Unity3D版谷歌魔镜SDK155
5.4 应用人机交互方案158
5.4.1 磁钮触发器159
5.4.2 射线碰撞检测160
5.5 UI界面、菜单以及场景设置161
5.5.1 天空盒以及“太空”环境162
5.5.2 屏幕标题164
5.5.3 “Universe”主菜单165
5.5.4 游戏中的HUD显示166
5.6 VR中射击和击中效果的开发168
5.6.1 添加作为目标的小行星168
5.6.2 发射导弹170
5.6.3 VR 3D效果的有效空间区域173
5.6.4 避免晕动症174
5.7 特殊效果、调整和测试174
5.7.1 使用粒子特效提升视觉效果175
5.7.2 拖尾渲染器176
5.7.3 添加道具177
5.7.4 调整游戏控制参数180
5.7.5 添加角色身体181
5.8 发行以及听取玩家社区的反馈181
5.8.1 来自谷歌的联络182
5.8.2 SXSW和Google I O开发人员大会182
5.8.3 下一步:移植Oculus和iOS平台183
5.9 致谢184
封面图: