Unity AR/VR开发:实战高手训练营
上QQ阅读APP看书,第一时间看更新

前言

2014年3月,Facebook宣布以20亿美元收购虚拟现实设备Oculus Rift的制造商Oculus VR,沉寂已久的虚拟现实行业重新进入人们的视野。

2015年1月,微软黑科技产品MR(混合现实)头显—HoloLens与Windows 10系统同时发布。

在2017年6月的WWDC上,苹果重磅推出了ARKit,这让iOS一夜之间成为最大的AR平台,更让虚拟现实进入更多开发者的视野。同年在Google I/O大会上,Google推出了与ARKit对标的ARCore,这延续了智能手机时代的激烈竞争态势。

在接下来的几年,因为相关技术发展的滞后,虚拟现实行业陷入了长达三年的暗黑时代。

但进入2020年之后,5G技术在全球,特别是在中国得到了广泛的应用。作为5G技术的最佳应用场景之一,AR/VR内容的需求再次爆发,这也让该行业的从业人员为之一振。以苹果为首的众多科技公司在这一领域的技术耕耘终于得到了回报。iPad Pro和iPhone 12 Pro系列中均搭配了全新的LiDAR激光扫描雷达,其他国内外厂商也纷纷跟进。5G和激光扫描技术的迅速商用让虚拟现实行业走出阴霾,迎来春天的黎明。

为什么要写这本书

随着越来越多的大公司和创业团队进入AR/VR领域,他们对AR/VR开发人才的需求也越来越大。

在面向AR/VR的开发工具中,Unity3D无疑是目前支持平台最广、扩展性最强的一款工具。

无论有无Unity开发经验,开发者都迫切需要一本Unity AR/VR书带领他们跨过第一道坎,从而真正了解和掌握AR/VR开发。

本书涵盖Unity3D的基础入门知识、进行AR/VR开发必须掌握的Unity3D技能以及在不同的AR/VR平台进行实际开发所需要掌握的知识。

与《Unity AR/VR开发:从新手到专家》的区别

本书在《Unity AR/VR开发:从新手到专家》(以下简称为《从新手到专家》)的基础上做了不小的更新和调整。

1)考虑到本书读者的主要兴趣点在于学习AR/VR开发,因此对Unity基础技能的内容适当做了删减和优化,以突出全书的重点。比如将《从新手到专家》中第4~6章的内容合并为一章,删减了第12章(数据存取与性能优化)和第14章(Unity网络编程)。

2)考虑到市场中AR/VR开发的巨大变化,删除了《从新手到专家》中的第15章(跨HTC Vive和Oculus Rift平台开发)、第16章(Google Daydream平台开发)、第18章(Wikitude AR开发)、第19章(HoloLens开发),新增了第10章(实战:基于Oculus Quest设备的Beat Music音乐节奏游戏)、第11章(实战:使用动捕技术实现虚拟直播)、第13章(实战:使用AR Foundation开发跨平台AR塔防游戏)和第14章(实战:开发AR汽车引擎教育应用)等内容。

3)缩减了Unity基础和核心技能章节中的综合实战案例,增加并扩展了AR/VR开发章节中的实战案例。

4)《从新手到专家》的内容基于Unity 2018.x版本,本书的内容则大部分基于Unity 2020.x版本,部分AR/VR章节则基于Unity 2019.4.x(LTS)版本。

在内容设计上,本书希望读者在掌握Unity的核心技能后,能快速进入对AR/VR理论和实战技能的学习,从而掌握在不同AR/VR平台上设计、开发产品的知识和技能。

本书特色

目前,市面上有关AR/VR开发的图书相对较少,现有的图书主要针对有经验的开发者,而本书的内容对于零基础的开发者也十分友好,从基础概念到使用Unity进行AR/VR开发,书中都有介绍。

与只重视概念讲解,不重视实际操作的Unity开发图书不同,本书从基本知识到进阶技能再到AR/VR实战开发,每一部分都会融入大量的实战讲解。

有经验的Unity开发者可以直接学习AR/VR实战项目的相关内容。针对Oculus Quest、Vuforia、AR Foundation(涵盖ARKit/ARCore)、全身动捕技术平台、VoxelSense等几个主流的AR/VR平台和SDK,本书都会通过实战项目进行讲解。

读者对象

本书适合以下人员阅读:

  • 对AR/VR开发感兴趣,但是之前并没有任何Unity3D开发经验的初学者。
  • 对AR/VR开发感兴趣,并且已经具备一定Unity3D开发经验的开发者。
  • 对AR/VR开发感兴趣,想了解项目开发整体流程的管理者或团队成员。

如何阅读本书

全书从逻辑上分为三部分,共14章。

第一部分介绍的是Unity开发基础知识(第1~3章),针对所有对虚拟现实和Unity开发感兴趣的初学者。

学完本部分内容后,读者应该对虚拟现实行业、技术基础、产品及开发工具有所了解,包括虚拟现实的基本概念、虚拟现实的技术基础、主流的虚拟现实设备、主流的虚拟现实开发工具等。

此外,读者还应该对Unity的基本知识有所了解,包括常见的3D引擎以及Unity的基本使用,比如界面、基本概念(物体、组件等)、C#编程。

第1章 对虚拟现实行业做了提纲挈领的介绍,从整体的角度介绍了虚拟现实的相关概念以及核心技术,即立体显示技术、场景建模技术和自然交互技术。此外,还介绍了当前最主流的虚拟现实设备、开发工具和SDK以及虚拟现实应用开发的基本流程与注意事项。

第2章 对主流的3D游戏引擎进行对比分析,说明使用Unity进行AR/VR开发的优缺点,并简单介绍Unity的发展史、安装、授权与服务。此外,还对Unity的编辑器做了简单介绍,并着重介绍了Unity中的核心概念、子系统以及Unity Asset Store(资源商城)。最后,通过一个实战游戏项目介绍了Unity3D项目从设计、开发到发布的全过程。

第3章 对C#语言的开发环境、基本语法和使用做了简单的介绍,同时介绍了如何在Unity中使用C#进行开发。

第二部分介绍的是Unity开发核心技能(第4~9章)。

学完本部分内容后,读者应该掌握AR/VR开发必备的Unity3D技能,包括如何将3D场景和人物模型导入游戏场景,如何利用PBS理论和着色器美化材质、贴图和画面,如何使用Unity的光照系统打造亦真亦幻的环境,如何使用Unity动画机制让场景中的物体、角色甚至UI界面产生奇妙的动画效果,如何利用寻路系统和AI让游戏中的角色具备模拟真人的行为模式,如何使用物理系统和碰撞机制让游戏中的虚拟世界像现实世界一样遵循物理法则,如何在游戏中添加背景音乐、音效并打造特殊的AR/VR场景音效,如何添加多人游戏网络机制,以及如何创建游戏中的UI交互系统。

第4章 介绍了如何在Unity中创建虚拟的数字世界,具体包括在Unity中创建基础的游戏场景、Unity之外的游戏资源,导入外部的游戏资源,在Unity中创建Enlighten光照系统以及全局光照的概念和具体的使用方法,在Unity中创建Shuriken粒子系统、着色器和Post Processing,从而让游戏画面栩栩如生。

第5章 介绍了Unity的原生UI系统—UGUI,及其控件的使用。

第6章 介绍了Unity的动画系统,包括Legacy动画系统和最新的Mecanim动画系统,重点介绍了Mecanim动画系统的特性、核心概念和相关工作流程。

第7章 介绍了Unity中的寻路系统,包括内部工作原理、Nav Mesh烘焙设置、添加障碍物以及穿越障碍物等。

第8章 详细介绍了Unity中的物理系统以及各种相关的组件,如Rigidbody、Collider和Raycast等。

第9章 介绍了Unity中的音效系统,包括Audio Source和Audio Reverb Zone等的设置和使用。

第三部分介绍的是Unity AR/VR开发实战(第10~14章),本部分通过实战案例帮助读者掌握在主流AR/VR平台开发应用的技能。

学完本部分内容后,读者应该对主流的AR/VR平台及其开发工具有充分的了解,与此同时,还应通过实战项目熟练掌握几个主流AR/VR平台和技术,包括Oculus Quest、动捕技术和VoxelSense等。另外,读者还应该掌握主流的AR SDK,特别是如何使用Unity和高通Vuforia SDK开发AR应用,以及如何使用AR Foudation开发跨平台的AR应用(同时支持ARKit和ARCore)。

第10章 详细介绍了Oculus Quest平台开发常识,包括基本技术原理、相关的第三方插件以及如何配置开发和测试环境等,并通过一个完整的Beat Music音乐节奏游戏(模仿当下最热门的Beat Saber)引导读者学习Oculus Quest平台的游戏开发。

第11章 详细介绍了动捕技术及其开发常识,包括动捕技术的发展史和技术原理。此外,还介绍了光惯混合动捕设备的使用以及动捕数据的后期处理。最后,通过一个完整的虚拟主播示例项目介绍了如何配置开发和测试环境,如何使用动捕数据实时驱动模型,如何给虚拟形象抠绿,如何添加真实背景并测试等。

第12章 详细介绍了一款重要的AR SDK—Vuforia,包括基本的功能、授权类型、工具和资源以及支持的平台等,并通过一个iWatch AR虚拟手表示例项目引导读者学习如何使用Unity和Vuforia开发AR互动应用。

第13章 详细介绍了Unity官方的AR框架(AR Foundation)以及它所支持的ARKit和ARCore,包括主要功能特性、授权方式、支持的平台,以及它与Vuforia之间的对比分析,并通过一个Hello AR示例项目和一个跨平台AR塔防游戏ARDefense项目来引导读者学习如何使用Unity和AR Foundation开发AR互动应用。

第14章 详细介绍了VoxelSense桌面级AR交互平台,包括基本功能、平台技术原理以及空间交互笔的交互等。此外,还详细介绍了如何配置VoxelTracker V4的开发和测试环境。最后,通过一个AR汽车引擎教育应用的实战项目引导读者学习该应用的设计与实现。

对于完全没有Unity开发经验的读者来说,建议从头开始阅读本书,并完成书中的所有练习。

对于已经有一定Unity开发经验的读者来说,可以跳过本书的前两部分内容,直接学习第三部分。

特别说明:限于篇幅,在涉及示例或实战案例讲解时,没有提供每一步操作的界面截图,或者因为界面太大,只截取了有效部分,所以有时候会出现只有文字操作描述,但没有对应界面的情况,请读者根据文字描述操作即可。

勘误和支持

由于AR/VR开发领域是一个全新的技术领域,且技术发展日新月异,因此书中的内容可能会出现版本兼容性的问题。同时,由于作者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果您有更多的宝贵意见,可以通过邮件(eseedo@gmail.com)或添加笔者个人微信(iseedo)留言和讨论。如果想获取与虚拟现实相关的更为详细的知识,欢迎访问赛隆网(http://www.vr910.com/)或关注微信公众号(vrlife)。同时,对于书中的所有示例项目,笔者也会将其托管在GitHub上(地址为https://github.com/eseedo)。

致谢

感谢Unity官方,官方文档为笔者的写作提供了最全面、最深入、最准确的参考。

感谢Facebook、苹果、HTC、诺亦腾、魔珐科技等众多国内外相关领域的公司对虚拟现实领域投入的关注和巨大的资源支持。

感谢为本书提供相关示例项目和资源的其他团队成员。没有大家的共同努力,这本书无法顺利完成。

特别感谢机械工业出版社华章公司的策划编辑高婧雅,是她在近一年的时间中始终支持我写作,鼓励和引导我顺利完成全部书稿。

最后要感谢我的家人在写作期间给予的支持,他们一直是我前进的最大动力。

王寒