内容简介
《Unity AR/VR开发:从新手到专家》内容分为三篇。第壹篇是入门篇,针对完全没有任何Unity开发经验的开发者。学完本部分内容后,开发者应该对Unity的基本知识有所了解。第二篇是进阶篇,里面涵盖了AR/VR开发所必须掌握的Unity3D技能。学完本部分内容后,开发者应该掌握AR/VR开发所必须具备的Unity3D技能。第三篇是实战篇,主要通过实战案例的开发学习来掌握主流AR/VR设备平台的知识和技能。学完本部分内容后,学员应对主流的VR/AR设备平台及其开发工具有充分的了解和认识。
作者简介
王寒和刘勇来自国内前沿的虚拟现实类初创公司,是国内虚拟现实领域的布道者。二人均是技术出身,都有十几年的软件开发经验,创业后专门负责虚拟现实相关技术的研究和实践,已成功开发多款基于虚拟现实的应用和游戏。
潘敏和王赵翔则来自美国硅谷,专注于虚拟现实技术的研究和实践,目前他们分别就职于facebook和,从事虚拟现实相关的工作。
整个作者团队有非常深厚的虚拟现实技术功底,同时对国内和国际虚拟现实行业的应用和商业现状有很全面的认识,应该能为国内读者从产品、技术、商业等全方面呈现出虚拟现实的全貌。
目录
Contents?目 录
《Unity AR/VR开发:从新手到专家》赞誉
前言
第一篇 入门篇
第1章初识神兵:为什么选择Unity2
1.1 常用3D引擎介绍2
1.1.1 什么是游戏引擎2
1.1.2 游戏引擎架构基础3
1.1.3 主流3D引擎对比分析6
1.2 Unity的发展史及代表作品7
1.2.1 Unity的前世今生7
1.2.2 Unity的代表作品8
1.3 Unity的授权、服务与安装10
1.3.1 Unity的授权类型和服务10
1.3.2 Unity的安装10
1.4 如何获取Unity开发的学习资源12
1.4.1 Unity的开发者官方认证培训12
1.4.2 Unity官方的网站资源12
1.4.3 值得推荐的第三方学习资源13
1.5 本章小结14
第2章蹒跚学步:和Unity的第一次亲密接触15
2.1 Unity编辑器入门15
2.1.1 界面布局15
2.1.2 Unity的工具栏19
2.1.3 顶部菜单栏22
2.1.4 Console视图26
2.2 Unity中的核心概念和子系统27
2.2.1 游戏场景27
2.2.2 游戏对象27
2.2.3 组件28
2.2.4 预设体29
2.2.5 Unity的核心子系统29
2.3 UnityAssetStore游戏资源商城32
2.4 本章小结33
第3章无往不利:在Unity中使用C#进行编程34
3.1 C#语言概述34
3.1.1 为什么选择C#34
3.1.2 C#的开发环境35
3.2 C#的基本语法和使用35
3.2.1 变量和数据类型35
3.2.2 表达式与运算符37
3.2.3 流程控制43
3.2.4 函数45
3.2.5 类、对象和方法48
3.3 Unity的脚本系统51
3.3.1 创建脚本52
3.3.2MonoDevelop编辑器及VisualStudio54
3.3.3 事件函数54
3.4 本章小结58
第二篇 进阶篇
第4章创建一个新世界:游戏场景60
4.1 创建基础的游戏场景60
4.1.1 Unity中的地形引擎60
4.1.2 基本几何体的使用65
4.1.3 添加天空盒66
4.2 创建外部的游戏资源68
4.2.13D模型、材质和动画的创建工具68
4.2.2 音效创建工具71
4.2.3 其他资源创建工具71
4.3 导入外部的游戏资源71
4.3.1 2D图像文件的导入和设置72
4.3.2 3D模型的导入和设置72
4.3.3 3D动画的导入和设置73
4.3.4 音频和视频的导入和设置74
4.3.5 Unity资源包的导入和导出74
4.4实战:创建BattleStar项目并准备游戏资源75
4.4.1BattleStar游戏的策划与设计75
4.4.2创建BattleStar项目并添加版本控制76
4.4.3创建并导入BattleStar项目所需的3D美术资源76
4.4.4创建BattleStar的基本游戏场景81
4.5 本章小结88
第5章有了光就有了一切:Enlighten89
5.1 Unity光照系统介绍89
5.1.1 Light组件简介89
5.1.2 常见的光源类型90
5.1.3 Lightinspector中的参数简介91
5.2 全局光照93
5.2.1 全局光照简介93
5.2.2 烘焙94
5.2.3 Lightmap的使用95
5.2.4LightProbe和Re?ectionProbe的使用95
5.3实战:给BattleStar游戏场景添加光照100
5.3.1给场景添加光照前的准备工作101
5.3.2 给场景添加太阳光101
5.3.3 添加发光贴图102
5.3.4 添加点光源103
5.3.5 添加LightProbeGroup107
5.3.6 添加Ref?lectionProbe110
5.3.7 进行光照烘焙处理111
5.4 本章小结113
第6章让游戏画面栩栩如生:粒子系统和其他114
6.1 Shuriken粒子系统114
6.1.1 什么是粒子系统114
6.1.2 Shuriken粒子系统115
6.2 Shader的使用117
6.2.1 什么是Shader117
6.2.2 Unity中的标准Shader118
6.2.3 创建自定义的Shader126
6.3 PostProcessing的使用130
6.3.1 PostProcessing简介130
6.3.2如何在Unity项目中添加PostProcessing131
6.4实战:美化BattleStar游戏场景的视觉效果133
6.4.1设置场景材质(标准Shader的使用)133
6.4.2制作添加粒子系统特效1:烟尘134
6.4.3制作添加粒子系统特效2:火花138
6.4.4 给游戏添加后处理特效142
6.4.5第三方插件AmplifyShaderEditor的使用147
6.5 本章小结155
第7章 玩家的好帮手:UI系统156
7.1 Unity中的UI系统简介156
7.1.1 UGUI系统简介156
7.1.2 Canvas简介157
7.1.3 交互元素简介163
7.2 实战:给BattleStar游戏添加UI168
7.3 本章小结173
第8章让角色活灵活现:Unity中的动画系统174
8.1 Unity动画系统174
8.1.1 LegacyAnimationSystem174
8.1.2 Mecanim动画系统概览175
8.1.3 Mecanim动画系统的使用179
8.2实战:让BattleStar游戏中的角色动起来183
8.2.1 导入NPC角色资源183
8.2.2 设置NPC基础状态机184
8.2.3 添加状态机之间的切换187
8.2.4 编写控制角色动画的脚本188
8.3 本章小结190
第9章最简单的游戏AI:NavMesh寻路系统191
9.1 Unity中的寻路系统191
9.1.1 寻路系统内部工作原理191
9.1.2 烘焙设置:NavMesh192
9.1.3添加障碍物:NavMeshObstacle195
9.1.4跳过障碍物:Off-MeshLin
......
精彩书摘
《UnityAR/VR开发:从新手到专家》:
在学习Unity之前,我们先来认识一下什么是游戏引擎、目前市面上最为流行的游戏引擎有哪些,以及为什么我们要选择Unity进行AR/VR应用开发。
此外,我们还将沿着时间的脉络了解Unity的发展历史以及使用Unity打造的经典作品。我们还将一起来了解关于Unity的授权、服务与安装。最后,我们还将提供一些官方和第三方的有用的学习资源供大家参考。
在本节的内容中,我们将介绍什么是游戏引擎、游戏引擎是如何产生的、游戏引擎的基本架构是怎样的,以及主流3D商业游戏引擎的对比分析。
顾名思义,游戏引擎就是用来开发游戏的软件框架。游戏开发者使用游戏引擎开发各种平台的游戏,包括掌机游戏、主机游戏、PC游戏、手机游戏和VR游戏。
很多游戏引擎都提供了一整套的可视化开发工具以及可重用的软件功能。这些开发工具通常以一种集成开发环境(IDE)的形式提供,让开发者不必从零开始“造轮子”。游戏引擎有时候又被称作“中间件”,给开发者提供了极大的便利和灵活性,可以有效地提高开发效率,降低开发的复杂度,缩减开发成本。
游戏引擎的核心功能通常包括用来生成2D或3D画面的渲染引擎(渲染器)、用来模拟真实世界物理法则的物理引擎(或者碰撞检测),此外还可能包括音效、脚本、动画、人工智能、网络、流媒体、内存管理、线程管理、本地化支持、场景视图和全景视频支持等。
在游戏引擎出现的“史前时代”,游戏开发者的日子非常不好过,大家对游戏开发者的能力要求比其他类型软件的开发也更高。以早期的Atari2600游戏机为例,游戏开发者必须精通硬件底层,包括如何合理使用和显示相关的硬件,并熟悉相关操作系统的内核。苹果公司创始人乔布斯的第一份工作就是给Atari公司做游戏。当然,为其他设备平台开发相对容易些,但即便开发者可以无视显示部分的底层架构,内存的限制和调用又成了开发者头上的紧箍咒。
在整个20世纪80年代,真正意义上的游戏引擎并未诞生。尽管如此,也出现了一些用来开发2D游戏的类引擎系统,其中就包括了ASCII在1988年推出的RPGMaker。
进入20世纪90年代,一代游戏大神JohnCarmack创立了idSoftware,并把目标投向3D游戏的研发。在他的带领下,idSoftware接连推出了《德军总部3D》、《毁灭战士》、《雷神之锤》等惊世之作。在开发这些游戏的过程中,JohnCarmack采用了自己独创的3D游戏引擎。以《毁灭战士》为例,其软件架构可以清晰地分为三部分:核心游戏组件(如3D图形渲染系统、碰撞检测系统、音效系统等)、美术资源和游戏场景,以及和玩家游戏体验紧密相连的游戏规则。通过使用游戏引擎,游戏开发者得以在游戏核心架构不变的情况下设计自己的游戏画面、人物角色、武器和关卡,也就是所谓的“游戏内容”或“游戏资源”。游戏引擎把和游戏内容本身无关的碰撞检测机制、渲染等独立出来,从而让开发者可以专注于游戏内容和机制的设计。
……前言/序言
前 言Preface
为什么要写这《Unity AR/VR开发:从新手到专家》2014年3月,Facebook宣布以20亿美元收购虚拟现实设备OculusRift的制造商OculusVR,从此沉寂已久的虚拟现实行业涅槃重生。
2015年1月,微软与Windows10系统一同发布了堪称黑科技神器的MR设备HoloLens。
2016年5月,GoogleI/O全球开发者大会正式发布了全新的移动VR平台Daydream,吹响了向VR进军的号角。
2017年6月,苹果WWDC大会重磅推出了ARKit,让iOS平台一夜之间成为最大的AR设备平台,更让虚拟现实进入更多开发者的视野。
随着越来越多的大公司和创业团队进入AR/VR领域,AR/VR开发人才的需求量也越来越大。
在面向AR/VR的开发工具中,Unity3D无疑是目前支持设备平台最广、扩展性最强的一款工具之一。
无论是Unity新手,还是具备一定Unity开发经验的开发者,想要进入AR/VR领域都迫切需要一《Unity AR/VR开发:从新手到专家》带领他们跨过第一道坎,从而真正了解和掌握AR/VR开发。
《Unity AR/VR开发:从新手到专家》的内容将涵盖Unity3D的基础入门知识,进行AR/VR开发所必须掌握的Unity3D技能,以及在不同的AR/VR设备平台进行实际开发所需要掌握的知识。
《Unity AR/VR开发:从新手到专家》特色目前市面上的AR/VR开发书籍相对较少,而且主要针对有经验的开发者。而《Unity AR/VR开发:从新手到专家》的内容对零基础的新手开发者也会十分友好。
和以往只重视概念讲解、不重视实际操作的Unity开发书籍不同,《Unity AR/VR开发:从新手到专家》从基础知识到进阶技能,到最后的AR/VR开发实战,每一篇的内容都会融入大量的实战讲解。
对于有经验的Unity开发者,可以跳过前两篇的内容,直接进入第三篇AR/VR实战项目的开发讲解。其中针对HTCVive、OculusRift、GoogleDaydreamVR、HoloLens、Vuforia、Wikitude、ARKit等几个主流的AR/VR设备平台和SDK,都分别用单独一章进行实战项目讲解。
读者对象对AR/VR开发感兴趣,但是之前并没有任何Unity3D开发经验的初学者。
对AR/VR开发感兴趣,并且已经具备了一定Unity3D开发经验的开发者。
对AR/VR开发感兴趣,想了解项目开发整体流程的管理者或运营者等。
如何阅读《Unity AR/VR开发:从新手到专家》《Unity AR/VR开发:从新手到专家》内容分为三篇,共计20章内容。
第一篇是入门篇,针对完全没有Unity开发经验的开发者。
学完本部分内容后,读者应该对Unity的基本知识有所了解,包括常见3D引擎的对比分析,以及Unity的基本使用,如界面、基本概念(物体、组件等)、C#编程。
第1章 对主流的3D游戏引擎进行对比分析,说明使用Unity进行AR/VR开发的优缺点,并简单介绍Unity的发展史及其安装、授权与服务,最后还介绍了Unity学习资源的获取途径。
第2章 对Unity的编辑器做了简单介绍,并着重介绍了Unity中的核心概念和子系统,以及UnityAssetStore资源商城。
第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和PostProcessing,从而了解如何让游戏画面栩栩如生。在实战环节,介绍了如何通过设置场景材质、添加粒子系统特效、添加后处理特效及使用第三方插件等方式来完善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游戏的场景中添加。