前 言 Preface
为什么要写这本书2014年3月,Facebook宣布以20亿美元收购虚拟现实设备Oculus Rift的制造商Oculus VR,从此沉寂已久的虚拟现实行业涅槃重生。
2015年1月,微软与Windows10系统一同发布了堪称黑科技神器的MR设备HoloLens。
2016年5月,Google I/O全球开发者大会正式发布了全新的移动VR平台Daydream,吹响了向VR进军的号角。
2017年6月,苹果WWDC大会重磅推出了ARKit,让iOS平台一夜之间成为最大的AR设备平台,更让虚拟现实进入更多开发者的视野。
随着越来越多的大公司和创业团队进入AR/VR领域,AR/VR开发人才的需求量也越来越大。
在面向AR/VR的开发工具中,Unity3D无疑是目前支持设备平台最广、扩展性最强的一款工具之一。
无论是Unity新手,还是具备一定Unity开发经验的开发者,想要进入AR/VR领域都迫切需要一本书带领他们跨过第一道坎,从而真正了解和掌握AR/VR开发。
本书的内容将涵盖Unity3D的基础入门知识,进行AR/VR开发所必须掌握的Unity3D技能,以及在不同的AR/VR设备平台进行实际开发所需要掌握的知识。
本书特色目前市面上的AR/VR开发书籍相对较少,而且主要针对有经验的开发者。而本书的内容对零基础的新手开发者也会十分友好。
和以往只重视概念讲解、不重视实际操作的Unity开发书籍不同,本书从基础知识到进阶技能,到最后的AR/VR开发实战,每一篇的内容都会融入大量的实战讲解。
对于有经验的Unity开发者,可以跳过前两篇的内容,直接进入第三篇AR/VR实战项目的开发讲解。其中针对HTC Vive、Oculus Rift、Google Daydream VR、HoloLens、Vuforia、Wikitude、ARKit等几个主流的AR/VR设备平台和SDK,都分别用单独一章进行实战项目讲解。
读者对象对AR/VR开发感兴趣,但是之前并没有任何Unity3D开发经验的初学者。
对AR/VR开发感兴趣,并且已经具备了一定Unity3D开发经验的开发者。
对AR/VR开发感兴趣,想了解项目开发整体流程的管理者或运营者等。
如何阅读本书全书内容分为三篇,共计20章内容。
第一篇是入门篇,针对完全没有Unity开发经验的开发者。
学完本部分内容后,读者应该对Unity的基本知识有所了解,包括常见3D引擎的对比分析,以及Unity的基本使用,如界面、基本概念(物体、组件等)、C#编程。
第1章 对主流的3D游戏引擎进行对比分析,说明使用Unity进行AR/VR开发的优缺点,并简单介绍Unity的发展史及其安装、授权与服务,最后还介绍了Unity学习资源的获取途径。
第2章 对Unity的编辑器做了简单介绍,并着重介绍了Unity中的核心概念和子系统,以及Unity Asset Store资源商城。
第3章 对C#语言的开发环境、基本语法和使用做了简单介绍,同时也介绍了如何在Unity中使用C#进行开发。
第二篇是进阶篇,涵盖了AR/VR开发所必须掌握的Unity3D技能。
学完本部分内容后,读者应该掌握AR/VR开发所必须具备的Unity3D技能,包括如何将3D场景和人物模型导入到游戏场景中,如何利用PBS理论和着色器美化材质、贴图和画面,如何使用Unity的光照系统打造亦真亦幻的环境,如何使用Unity动画机制让场景中的物体、角色甚至UI界面产生奇妙的动画效果,如何利用寻路机制和AI让游戏中的角色具备模拟真人的行为模式,如何使用物理系统和碰撞机制让游戏中的世界像现实世界一样遵循物理法则,如何在游戏中添加背景音乐、音效并打造AR/VR的特殊真实场景音效,如何添加多人游戏网络机制,以及如何创建游戏中的UI交互系统。
第4章 介绍了如何在Unity中创建基础的游戏场景、创建外部的游戏资源,以及如何导入外部的游戏资源。在实战环节,介绍了如何创建BattleStar项目并准备所需的游戏资源。
第5章 详细介绍了Unity中的Enlighten光照系统,以及全局光照的概念和具体使用。在实战环节,介绍了如何给BattleStar项目的游戏场景添加光照。
第6章 详细介绍了Unity中的Shuriken粒子系统、Shader和Post Processing,从而了解如何让游戏画面栩栩如生。在实战环节,介绍了如何通过设置场景材质、添加粒子系统特效、添加后处理特效及使用第三方插件等方式来完善BattleStar游戏场景的视觉效果。
第7章 介绍了Unity的原生UI系统UGUI,及其各种控件的使用。在实战环节,引导大家一步步学习如何给BattleStar游戏添加UI。
第8章 介绍了Unity的动画系统,包括Legacy动画系统和最新的Mecanim动画系统。在实战环节,介绍了如何添加Animator、设置状态机、编写控制角色动画的脚本等,从而让BattleStar游戏中的角色动起来。
第9章 介绍了Unity中的寻路系统,包括其内部工作原理、NavMesh烘焙设置等。在实战环节,通过给NPC角色对象添加并设置NavMeshAgent组件,来实现BattleStar游戏中的寻路系统。
第10章 详细介绍了Unity中的物理系统,以及各种相关的组件,如Rigidbody、Collider和Raycast等。在实战环节,介绍了如何在BattleStar游戏的场景中添加。