首页>参考读物>计算机科学与技术>软件与程序设计

Unity虚拟现实开发实战
作者 : (美)乔纳森·林诺维斯(Jonathan Linowes)著
译者 : 童明 吴迪 译
出版日期 : 2016-11-24
ISBN : 978-7-111-55131-7
定价 : 59.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 227
开本 : 16
原书名 : Unity Virtual Reality Projects
原出版社: Packt Publishing Ltd.
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

图书特色

本书使用一种实战的、基于项目的方式教你使用Unity开发虚拟现实,不仅提供详细的步骤介绍,还会讨论其中涵盖的更广泛的背景和应用场景。
你将学习使用Unity开发可以用了Oculus Rift或Google Cardboard等设备体验的VR应用程序。然后,学习从第三人称和第一人称的视角融入虚拟世界。另外,你将探索一些可能是VR才有的且十分重要的技术。本书中的项目将演示如何构建各种VR体验,你可以通过交互式的Unity编辑器和C#编程深入Unity 3D引擎。阅读完本书后,你将有能力使用Unity开发丰富的、交互式的虚拟现实体验程序。

什么是消费级虚拟现实?戴上一个头盔显示器(如护目镜),你可以观看立体3D场景,通过移动头部向四周看以及使用手持控制器或动作传感器向四处走动,你可以拥有一个完整的沉浸式体验。另外,Unity是一款强大的游戏开发引擎,提供了丰富的功能,比如视觉光照、材质、物理、声音、特效,以及创建2D和3D游戏的动画。Unity 5 已经成为领先的平台,为新一代消费级VR设备构建虚拟现实游戏、应用和体验。
通过阅读本书,你将学到:
使用Unity和Blender创建3D场景,学习世界空间坐标系和比例尺。
构建和运行针对消费级头盔设备的VR应用,其中包括Oculus Rift或Google Cardboard。
通过一个基于项目的指南学习使用Unity开发VR应用。
使用Unity引擎中的物理、重力、动画和光照构建交互环境。
实验各种你会在VR应用中用到的用户界面(UI)技术。
仅使用头部动作姿势作为输入实现第一人称和第三人称体验。
创建动画漫游,使用360°多媒体,并构建多用户的社交化VR体验。
学习有关VR的技巧和心理学,包括渲染、性能和VR晕动症。
在Unity中使用C#语言编程获取引导和进阶体验。

Jonathan Linowes是处于起步阶段的VR/AR咨询公司Parkerhill Reality Labs的负责人,他是一位名副其实的VR和3D图形狂热分子、Web全栈工程师、软件工程师、成功的企业家,以及教师。他拥有美国雪城大学的美术学士学位和麻省理工学院多媒体实验室的硕士学位。他成功创办了多家创业公司并曾在大型公司从事技术工作,其中包括欧特克公司。

童明,Polycom高级软件工程师,前微软最有价值专家(Windows平台开发方向),曾就职于联想集团北京公司,拥有多年的软件及互联网从业经验,具有丰富的客户端软件开发经验,译有《Unity开发实战》,著有《Windows 8应用开发实战》。
吴迪,Windows Phone高级软件工程师,拥有多年软件及互联网从业经验,现就职于Camera360,主导并参与Camera360 WP版及Windows 10版本。

图书前言

如今,我们正见证着虚拟现实(VR)的迅猛发展,这是一项令人激动的技术,它有望改变我们与信息、朋友和整个世界进行交互的基本方式。
什么是消费级虚拟现实?戴上一个头盔显示器(比如护目镜),你可以观看立体3D场景,你可以通过移动头部向四周看以及通过使用手持控制或动作传感器四处走动,你可以拥有完整的沉浸式体验。这就像你真的在某个虚拟世界中一样。
本书通过实战的、基于项目的方式教你使用Unity 3D游戏引擎开发虚拟现实的细节。我们通过一系列实战工程、循序渐进的教程,并使用Unity 5和其他免费或开源软件进行深入讨论。而VR技术正在快速发展,我们将试着获取基本的原则和技巧,以便使你能够让自己的VR游戏和应用程序具有沉浸感和舒适感。
你将学习如何使用Unity开发可以用Oculus Rift或者Google Cardboard这样的设备体验的VR应用程序。我们将涵盖技术上对于VR来说重要且可能独一无二的考虑。读完本书后,你将有能力用Unity开发丰富的、交互性的虚拟现实体验程序。
本书的主要内容
第1章介绍消费级虚拟现实(VR)中关于游戏和非游戏应用程序的新技术和新机遇。
第2章讨论如何构建一个简单的透视图场景。本章介绍了Unity 3D 游戏引擎和用于3D建模的Blender,并探索了世界坐标系和缩放比例的问题。
第3章帮助你配置项目以便运行于VR头盔,比如Oculus Rift和Google Cardboard(Android或iOS)。然后,我们深入了解VR硬件和软件如何运行的细节。
第4章探讨了场景中的VR摄像机与对象的关系,包括3D光标与基于凝视的射线枪。本章还包括使用C#编程语言编写Unity脚本。
第5章实现了很多VR的用户界面(UI)例子,包括一个平视显示器(HUD)、信息框,以及带有很多代码和说明的游戏中的对象。
第6章剖析Unity的人物角色对象和组件,它们用于构建我们自己的带有基于凝视的导航功能的第一人称角色。然后,我们将探讨拥有一个第一人称虚拟身体的体验,并考虑晕动症的问题。
第7章在我们通过若干个VR项目案例和游戏学习使用作用力和重力的同时,深入了解Unity的物理引擎、组件及材质。
第8章帮助我们构建一个3D架构的空间和实现虚拟的漫游。我们还讨论了Unity中的渲染和性能优化。
第9章利用全部的360霸诟髦窒钅恐惺褂 60岸嗝教澹渲邪ǖ厍蛞恰⑷巴肌⒄掌颉N颐腔固致哿怂堑脑怼
第10章探讨了使用Unity 5的网络组件带VR功能的多玩家实现。我们还看了VRChat作为一个用于社交式VR的可扩展平台的例子。
第11章展望VR技术。
准备工作
在我们开始前,你将需要完成一些工作。随便吃点东西,一瓶水或一杯咖啡。除了这些,你还需要一台安装了Unity 3D游戏引擎的PC(Windows或Mac)。
你不需要超级性能的配置,因为Unity可以像猛兽一样渲染复杂的场景,而Oculus已经发布了推荐的PC硬件规格,你可以用较少的钱获取到。甚至一台笔记本就可以完成本书中的项目。要想获取Unity,访问https://unity3d.com/get-unity/,选择你想用的版本,点击Download Installer,然后继续按照说明操作即可。选择Unity的免费个人版本就行。
我们还可以选择使用Blender开源项目进行3D建模。本书不是关于Blender的著作,但是如果你需要的话,我们可以使用它。要获取Blender可以访问http://www.blender.org/download/,根据你的系统平台按照说明下载。
建议拥有一台虚拟现实头盔显示器(HMD)以便试运行你的构建成果以及获取本书中项目开发的第一手体验。完全可以在一台台式机显示器上构建和运行所有的项目,但是乐趣在哪里呢?本书将涉及Google Cardboard和Oculus Rift的细节。
Google Cardboard是移动VR的一个示范,让你可以用智能手机运行VR应用。如果你有一台Android智能手机,你需要从Google获取Android开发工具;如果你有一台iOS设备,你需要从Apple获取Xcode开发工具(及授权)。具体细节在第3章有所介绍。
Oculus Rift 是一个关于Desktop VR的例子目前,Unity对Rift内置支持。然而,如果你有不同的头盔显示器,你可能还需要从厂商处下载一个Unity的接口包。具体细节也在第3章中进行介绍。
这应该就差不多了—一台PC、Unity软件、一台HMD,我们就准备好了!
目标读者
如果你对虚拟现实感兴趣,想要学习它的原理或者想创建自己的VR体验,那么本书适合你。不管你是否是程序员,是否熟悉3D计算机图形,或者有前两者的经验但对于VR是个新手,你都可以从本书中受益。使用Unity并不是重新开始,但你也不需要是一位专家。然而,如果你是Unity新手,只要你认为自己可以适应本书的节奏,就可以购买本书。
游戏开发者可能已经熟悉本书中的概念了,在学习了很多特定于VR的知识后把它们重新应用于VR项目。已经了解如何使用Unity的移动平台和2D游戏的设计师将会发现另一个维度!工程师和3D设计师可能理解很多3D概念,但是他们可以学习把游戏引擎用于VR。应用程序开发者也许会感激VR在非游戏用途方面的潜能,并且想要学习使用制作这类程序的工具。
约定
本书中,你将发现很多文本风格以区分不同种类的信息。这里有这些风格的一些例子和它们含义的说明。
代码会设置成下面这样:


当我们想让你注意代码块的某一部分时,相关的行或项会加粗:

任何命令行输入或输出都写成下面这样:

新的术语或重要的词语以黑体显示。你在屏幕上看见的单词,举个例子,在菜单或对话框中,文本中这样显示:
“点击这里创建一个Room按钮。”
表示警告或重要的注意事项。
表示技巧或小巧门。
读者反馈
来自我们读者的反馈永远是受欢迎的。让我们知道你对于本书的看法—你喜欢与否。读者反馈对我们来说很重要,因为它帮助我们改进那些你们可以真正利用的内容。
若想向我们发送常规的反馈,请写电子邮件到feedback@packtpub.com,并在邮件主题中提及书名即可。
如果你对某个话题有专业意见或者你对写作或参与一本书的编写有兴趣,请参见我们的作者指南:www.packtpub.com/authors。
客户支持
你已经是Packt图书的尊贵用户,我们有很多方式帮助你从购买中获取最大价值。
下载代码示例
你可以通过在http://www.packtpub.com的账户下载所有你在Packt出版社所购买书籍的示例代码文件。如果你是在其他地方购买的本书,可以访问http://www.packtpub.com/support 并注册,以便我们通过电子邮件把文件发送给你。
下载本书的彩色插图
我们还向你提供本书中所用到的截图/图表的彩色插图的PDF文件。这些彩色插图将帮助你更好地理解输出结果中的改变。你可以从http://www.packtpub.com/sites/default/files/downloads/ 8556OS_ColorImages.pdf 下载这个文件。
勘误
尽管我们已经尽力去确保内容的准确性,但是错误仍在所难免。如果你发现了书中的错误,也许是文本或代码,若能报告给我们,我们将非常感激。因为这么做,你可以帮助其他读者,并且能够帮助我们改进本书接下来的版本。如果你发现了任何错误,请通过http://www.packtpub.com/submit-errata 报告它们,选择书名,点击“勘误提交表(Errata Submission Form)”链接,然后键入你的勘误细节。一旦你的勘误被确认,你的提交将会被采纳,而这个勘误将会被上传到我们的网站或添加到之前标题下的勘误部分的任何现在已有勘误表中。
要审阅之前提交的勘误,请访问 https://www.packtpub.com/books/content/support ,并在搜索框中输入书名。所需要的信息就会出现在勘误部分之下。
盗版行为
盗版行为在互联网上是一个持续存在的问题,对于所有媒体皆如此。在Packt,我们非常重视保护我们的版权和许可。如果你在互联网上遇到以任何形式非法复制我们的产品,请立即向我们提供地址或网站名称,以便我们能够弥补这一缺失。
请通过copyright@packtpub.com联系我们,并附上有盗版嫌疑的材料链接。
我们非常感激你在保护作者以及我们向你提供有价值的内容上所做的帮助。

上架指导

计算机\游戏开发

封底文字

什么是消费级虚拟现实?戴上一个头盔显示器(如护目镜),你可以观看立体3D场景,通过移动头部向四周看以及使用手持控制或动作传感器向四处走动,你可以拥有一个完整的沉浸式体验。另外,Unity是一款强大的游戏开发引擎,提供了丰富的功能,比如视觉光照、材质、物理、声音、特效,以及创建2D和3D游戏的动画。Unity 5 已经成为领先的平台,为新一代消费级VR设备构建虚拟现实游戏、应用和体验。
本书通过实践和基于项目的方式,教你使用Unity开发虚拟现实的特点。

通过阅读本书,你将学到:
 使用Unity和Blender创建3D场景,学习世界空间坐标系和比例尺。
 构建和运行针对消费级头盔设备的VR应用,其中包括Oculus Rift或Google Cardboard。
 通过一个基于项目的指南学习使用Unity开发VR应用。
 使用Unity引擎中的物理、重力、动画和光照构建交互环境。
 实验各种你会在VR应用中用到的用户界面(UI)技术。
 仅使用头部动作姿势作为输入实现第一人称和第三人称体验。
 创建动画漫游,使用360°多媒体,并构建多用户的社交化VR体验。
 学习有关VR的技巧和心理学,包括渲染、性能和VR晕动症。
 在Unity中使用C#语言编程获取引导和进阶体验。

作者简介

(美)乔纳森·林诺维斯(Jonathan Linowes)著:暂无简介

译者简介

童明 吴迪 译:暂无简介

译者序

毫无疑问,虚拟现实(VR)是科技界2016年最热的关键词。
这不仅是因为虚拟现实技术能够改变我们娱乐和游戏的方式,而且对于很多行业或领域都具有重要意义。比如,旅游业、电影行业、视频会议行业、医学行业、室内设计、房地产开发、军事演练、工业仿真、应急演练、文物古迹展示、教育、康复训练等都将可以应用虚拟现实技术增强用户体验,为业界带来巨大的价值。
而虚拟现实本身也包括一条很长的产业链,从虚拟现实硬件设备的制造到软件系统的研发,从操控技术到核心算法,从虚拟现实内容的采集到虚拟现实内容的生产,这些都带来了大量新的创业和就业机会。
得益于移动互联网和智能硬件的浪潮,软硬件技术成熟,消费级虚拟现实所需硬件设备的价格能够被普通人接受,最便宜的Google Cardboard仅用几十块钱就可以拥有。未来几年,虚拟现实必将快速融入我们的生活。
而对于对虚拟现实感兴趣的我们,最令人兴奋的事当然是通过学习参与创建自己的虚拟现实应用了。虚拟现实的关键技术点包括3D图形渲染、第一人称操控、头部运动跟踪、用户输入控制、镜头变形、全景场景、晕动症处理等。Unity 3D界面友好、上手较快,是当今最流行的3D引擎之一,也是最早支持虚拟现实的引擎之一,而Cardboard是成本最低廉的虚拟现实设备。当然,学习这些技术点最快速的开始方式是动手使用Unity 3D结合Google的Cardboard和手机开发简单的虚拟现实应用。
本书以循序渐进、深入浅出、具体案例讲述的方式引导读者走进虚拟现实的世界,相信读完此书后,读者不仅能够理解虚拟现实的基本原理并了解虚拟现实的关键技术点,还能够从书中的范例中学习和总结,进而结合Unity 3D引擎创建出自己卓越的虚拟现实应用。
即使你不是开发人员,也不熟悉3D图形学,仅对虚拟现实兴趣浓厚,原作者书中对于虚拟现实的深入理解也能够使你受益匪浅。
有幸翻译本书,非常感谢缪杰编辑和李静编辑对我的信任和帮助,感谢我的翻译伙伴吴迪的共同努力,感谢我的妻子对我的支持。

童明
2016年8月于北京

图书目录

译者序
审校者简介
前言
第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 构建和共享一个自定义的VRChat房间206
10.5.1 预备并构建虚拟世界207
10.5.2 承载这个世界208
小结208
第11章 虚拟现实的未来210

教学资源推荐
作者: (美)Y.Daniel Liang 著 阿姆斯特朗亚特兰大州立大学
作者: [美]埃里克 S. 罗伯茨(Eric S. Roberts) 著
作者: George Coulouris, Jean Dollimore, Tim Kindberg
参考读物推荐
作者: 莫海 编著
作者: 常建功 陈浩 黄淼 等编著