Unity 2017虚拟现实开发标准教程(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-25 05:06:06

点击下载

作者:Unity公司

出版社:人民邮电出版社有限公司

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Unity 2017虚拟现实开发标准教程

Unity 2017虚拟现实开发标准教程试读:

开始

吸引媒体的报导,人们也逐渐意识到它的潜力。Jaron Lanier被认为是“虚拟现实之父”。

20世纪90年代,消费级别的VR设备开始出现,其中包括首款消费级VR Virtuality 1000cs 和首款头戴式VR设备Sega VR。

在虚拟现实技术早期发展中,设备笨重复杂且价格昂贵,因此仅用于相关的技术研究领域,并没有形成能真正交付到消费者手上的产品。1.3 虚拟现实的现状

2012年,Oculus Rift(Development Kit 1)登录 Kickstarter众筹网站,筹资250万美元。2014年3月,Facebook以20亿美元收购Oculus,随着技术的不断成熟,VR商业化进程在全球范围内得到加速发展。2015年3月,在巴塞罗那世界移动通信大会举行期间,HTC与VALVE 合作推出了HTC VIVE,并在2016年2月29日面向全球24个国家和地区销售消费者版。

自2015年以来,各大公司纷纷在VR行业布局,HTC、谷歌、苹果、亚马逊、微软、索尼和三星等公司纷纷成立了VR/AR部门,并发布了相对成熟的消费级VR设备。其中,主机VR市场以HTC VIVE、Oculus Rift为代表,移动VR市场以三星 Gear VR、谷歌Daydream为代表。据统计,在2016年,已经有200多家公司在开发VR相关产品,VR作为一个计算平台,逐渐渗透到各个行业,切实解决了相关行业存在的问题。VR技术在游戏娱乐、房产家装、广告营销、建筑设计、机械工程、安全消防、医疗康复、教育培训等领域均有非常广泛的应用场景。同时,资本也加速进入VR领域,使得整个行业进入加速发展时期。

但是要看到,目前VR行业尚处于发展的初期,相对于比较成熟的移动互联网行业,生态系统还亟待完善和发展。当前影响VR行业发展的因素主要表现在以下三个方面。(1)价格因素。由于成本较高,当前面向终端消费者的VR硬件价格也普遍较高。主机VR为了提供高品质的VR表现,消费者除了购买硬件本身以外,还需要一台性能较高计算机;基于智能手机的移动VR方案也需要相对高端的手机支持才能获得比较高品质的VR体验。加之VR内容比较匮乏,当前VR硬件价格与消费者需求并不十分匹配。(2)移动性和便携性。当前能够提供高品质VR内容体验的VR设备多集中在主机VR方案,它们都拥有高分辨率和高刷新率的屏幕,这就需要巨大而稳定的数据吞吐量,所以这些高端头戴式显示设备(头显)多有线缆连接,虽然有精确的定位系统,使得体验者能够在一定范围内移动,但是设备的连接方式和位置追踪的技术方案都决定了体验者只能在有限的范围内移动。移动VR方案虽然能够提供一定的便携性,但是算力有限,不能提供理想的内容品质。(3)内容。鉴于当前VR硬件市场存量较小,并且学习VR技术有一定门槛,VR开发者相比于其他IT行业技术人员数量较少。VR内容从策划到发布之间的周期较长,而从其他平台移植内容也不是简单地切换导出平台,需要根据VR平台的交互特性重新设计内容。1.4 虚拟现实的未来

图1-3为 UnityCEO John Riccitiello在 Vision VR/AR Summit 2017 Keynote 上分享的 VR发展预测,其中黄色直线为大众及市场分析预期的VR技术市场发展进度,白色曲线为实际VR技术市场发展趋势,从图表中可以看到,VR技术在发展初期普遍低于预期,但是在后期会超出市场预期,同时我们也看到,VR技术在发展早期接近于线性增长,而在后期会呈现指数型增长。VR 将成为一个巨大的全球市场。图1-3 VR行业未来发展预测

尽管面临诸多挑战,但我们能够看到,各大巨头纷纷参与到VR行业中来,随着产业链的逐渐成熟,VR面临的问题终究会得到解决。首先,VR硬件符合摩尔定律,未来硬件规格会越来越高,逐渐达到理想的标准,价格也会随之趋向合理;其次,随着5G技术、人工智能技术的成熟,云端实时渲染VR内容将成为可能。硬件方面,设备逐渐趋向于移动化,我们看到VR一体机正在逐渐崛起,此类设备不依赖PC或手机,拥有独立的计算单元,通过计算机视觉技术实现自身定位,相较主机VR,拥有良好的移动性,相较智能手机VR,可以呈现更好的内容品质;内容层面,随着Unity等内容制作引擎的迭代,VR内容制作者会越来越方便地制作出高品质的VR内容,更多的从业者会加入进来,更多的优质内容也会随之产生。总之,VR技术正处于行业发展的初期,VR行业最终会迎来繁荣,现在正是为未来做好充足技术积累的最好时期。1.5 虚拟现实技术基础知识1.5.1 虚拟现实技术原理

虚拟现实技术通过计算单元(计算机、手机等)塑造一个三维环境,呈现在两块屏幕上,屏幕一般由头显承载,用户通过焦距透镜观看内容,达到沉浸式的VR体验。1.5.2 虚拟现实常见术语

延时和帧率

延时越低,用户体验的流畅度越高。需要注意的是,虽然硬件表明了其设备的刷新率,但是整个VR体验的流畅度还要由软件决定,不同的代码优化程度、场景内容的多少,都决定了最终应用程序的帧率。所以在VR内容制作过程中,总是要本着性能优化的原则进行。

6DoF 和 3DoF

DoF(DegreesOf Freedom)是物体在三维空间中的运动自由度,主要分为两种类型:旋转的自由度和移动的自由度。在 VR 情境下,自由度体现在设备的移动和旋转信息方面。追踪技术不同,设备所能提供的自由度也不同。3DoF 的 VR 设备仅能提供3个轴向(x、y、z)上的旋转信息,6DoF 的 VR 设备除能提供3个轴向上的旋转信息外,还能提供3个轴向上的位置信息。Oculus Rift、HTC VIVE 的头显和手柄控制器均为 6DoF 设备,而 Cardboard、Gear VR、Oculus Go 的头显和手柄为 3DoF 设备,体验者可以自由观看360度空间展示的内容,而当设备移动位置时,VR 内容并不会响应其移动。

Inside-Out和Outside-In

对于 6DoF 的运动追踪技术,目前存在两种实现方案,分别是由外而内(Outside-In)的位置追踪、由内而外(Inside-Out)的位置追踪。对于前者,一般是使用固定的基站(如 HTC VIVE 的 Lighthouse)对追踪范围内的设备进行定位。这种方式的优势是定位精确,定位延时低;其劣势是受限于追踪空间,用户只能在有限的范围内移动。同时,对于存在多台设备的情况,容易造成追踪信号干扰。对于后者,一般使用头显前置的一个或多个摄像头,通过计算机图形学算法,如即时定位与地图构建(SLAM)技术,结合头显内部的惯性测量单元(IMU)实现用户的位置追踪。这种方式的优势是不受空间约束,体验者可以在更大范围内移动,多台设备亦能顺畅追踪,不受干扰;其劣势是图形计算受环境光线和环境内容影响较大,在某些情况下会定位不精确,视野出现“漂移”的情况,对于超出摄像机视野的手柄,会出现“冻结”现象,只有待重新进入摄像机视野后才会正常跟踪。

惯性测量单元(IMU)

惯性测量单元一般包括陀螺仪、加速度计、磁力计等一系列传感器,用来测量被跟踪设备在三个维度(x、y、z)上的旋转、速度等指标,以此计算物体在三维空间中的姿态,是实现VR体验的关键部件。惯性测量单元将测量数据反馈给计算单元,计算单元根据这些数据将相应的画面内容呈现在头显的屏幕上。1.5.3 体验虚拟现实过程中会遇到的挑战

晕动症

基于人体的生理结构,眼睛负责接收环境信息,反馈给负责感受运动的前庭系统,当人眼看到的运动过程与前庭系统感受的不一致时,体验者就会感到不适,即会产生晕动症,类似于晕车晕船的体验。这种情况在快速运动的 VR 场景中容易出现,尤其是快速上升或下降的境况。

除此之外,在应用程序层面,这主要受屏幕刷新率的影响,帧率越低的VR内容,越容易引起晕动症,所以在不改变硬件条件的情况下,尽可能地优化应用程序性能,以达到比较理想的帧率。

纱窗效应

当前主流VR头显的屏幕分辨率一般在2K,少数能够达到4K及以上,要达到视网膜级别的分辨率,需要至少8K分辨率的屏幕。分辨率越高,显卡数据吞吐量也越高。图1-4所示为显示的是因分辨率不足造成人眼可以明显觉察出的纱窗效应。图1-4 纱窗效应

安全性

在 VR 体验过程中,体验者完全沉浸在虚拟环境中,对于现实环境缺乏足够的视觉感知,体验区域内的障碍物容易阻碍体验者的移动,激烈的动作如躲闪、跳跃等更增加了受伤的概率。多数 VR 硬件设备都配有手柄控制器,在一些需要频繁交互的 VR 环境中,运动幅度较大或移动速度过快时,体验者还容易误伤他人,损坏设备。所以在体验之前,务必将手柄上的腕带佩戴至手腕,以防设备脱落;保证周围环境空旷无阻挡;尽量保持坐姿体验;必要时需要有专人辅助体验,以保障安全;在公共场合例如地铁、广场等处,尽量不要使用 VR 设备。1.5.4 虚拟现实(VR)与增强现实(AR)的区别

增强现实(Augmented Reality,简称 AR )是将虚拟事物叠加到现实世界显示的技术,虚拟内容与现实环境能够产生交互;而在虚拟现实中,体验者则完全沉浸在数字化的虚拟环境中。

目前多数 AR 内容的承载设备是智能手机和头戴式眼镜,头戴式 AR 设备中比较有代表性的是 Microsoft HoloLens、Meta。开发 AR 应用程序的工具主要有 iOS ARKit、Google ARCore、Vuforia等,Unity对这些工具均有良好的支持。图1-5所示是使用Vuforia开发的AR应用。图1-5 使用Vuforia开发的AR应用第2章 Unity编辑器基础知识2.1 Unity产品介绍2.1.1 Unity简介

Unity是当前业界领先的VR/AR内容制作工具,是大多数VR/AR创作者首选的开发工具,官方网站页面如图2-1所示。世界上超过60%的VR/AR内容由Unity制作完成,例如Valve公司出品的VR游戏The Lab和Google出品的VR绘画应用Tilt Brush,均由Unity制作完成。Unity为制作优质VR内容提供了一系列先进的解决方案,无论是VR、AR还是MR,都可以依靠Unity高度优化的渲染管线以及编辑器的快速迭代功能,使VR需求得以完美实现。基于跨平台的优势,Unity对目前市面上几乎所有主流VR硬件平台,如Oculus Rift、Steam VR/Vive、Playstation VR、Gear VR、Microsoft MR和Google Daydream等,均有原生支持。图2-1 Unity官方网站页面

图2-2是Unity目前支持的市场上的主流VR硬件平台,图中设备依次为:Oculus Rift、Google Cardboard、HTC Vive、Sony PlayStation VR、Samsung Gear VR、Microsoft Hololens、Google Daydream。图2-2 Unity支持目前市场上主流VR硬件平台2.1.2 获取Unity

读者可以通过官方网站获取Unity的最新版本,Unity个人版提供所有功能供用户免费试用,本书也将使用个人版进行所有内容的演示。

Unity编辑器目前提供两大桌面平台安装版本,分别是Windows和Mac,网站会根据系统检测,自动提供相应平台的下载页面,如图2-3所示。图2-3 Unity下载页面

Unity提供两种下载安装方式。一种方式是先下载体积相对小巧(约770KB)的下载助手(Download Assistant),由下载助手完成相关组件的下载和安装,读者可以在安装过程中选择安装需要的组件,如图2-4所示。图2-4 Unity安装组件的选择

另一种方式是分别独立下载相关组件完成安装,可在Unity下载页面(图2-3)中点击Release Notes项,页面跳转到Unity发行说明,如图2-5所示,上半部分列出了Windows和Mac平台下Unity的相关组件(注意只有较新版本的发行说明页面会列出附加组件的下载,例如2017.2、2018.1等)。图2-5 Unity发行说明页面

1.Unity编辑器组件

无论使用哪种下载安装方式,Unity都提供了除编辑器之外的组件下载,这其中包括各平台支持组件、标准资源库组件、示例项目、文档等。(1)各平台支持组件。Unity支持针对多种平台的内容制作,包括但不限于Windows、macOS、iOS、Android、Linux等。除Windows和macOS平台支持组件内置到编辑器以外,用户可以根据自己的项目所面向的平台,选择安装相应平台的支持组件。对于VR内容,根据不同的VR硬件,一般选择Windows、macOS、iOS、Android等平台。(2)Standard Assets。Standard Assets是Unity提供的一套标准资源库,包含一系列的模型、粒子特效、物理材质、脚本、示例场景等,方便内容制作者快速搭建程序原型,也可以通过示例场景进行Unity内容制作的学习。Standard Assets亦可从Unity应用商店中下载。(3)Example Project。Example Project提供了多个示例场景,方便用户进行学习,快速上手。安装此项目以后,用户可以根据安装时设定的路径找到它,在Unity中打开。对于VR开发者来说,Unity还提供了VR相关的示例项目(VR Samples)以供学习,如图2-6所示。此项目也可以在Unity应用商店中下载。图2-6 VR Samples(4)Documentation。Documentation 是Unity的离线文档,包括使用手册和脚本参考,会随着Unity版本的更新而相应更新。相对于在线文档,此文档存储在本地磁盘,用户可以快速查找和学习Unity的所有功能。Unity文档如图2-7所示。图2-7 Unity文档

2.发行说明

对于Unity每次新版本的更新,包括正式版、测试(Beta)版和补丁(Patch)版,Unity都会发布相应版本的发行说明(Release Notes),如图2-8所示。图2-8 Unity发行说明

在发行说明中,Unity会列出该本的新特性、改进、API变更、已知存在的问题等,方便用户根据自己的项目情况进行相应的更新。在选择或升级Unity版本之前,建议阅读相对应的发行说明。2.2 Unity编辑器学习页

当Unity安装完毕,双击图标打开Unity,弹出欢迎页面。如果之前没有创建过任何项目,Unity会展示学习(Learn)标签页,用户可以通过此页面提供的资源进行学习。该页面为用户提供了4类资源,如图2-9左侧导航栏所示。图2-9 Unity编辑器学习页

在Basic Tutorials部分,初学者在编辑器里以可用交互的方式对Unity相关的基础操作进行学习,借助UI面板的引导和介绍,用户在提示下完成切换模式、对象/组件认知和编辑器基本操作等知识,以最快的速度迈出使用Unity的第一步,如图2-10所示。图2-10 Basic Tutorials

在Tutorial Projects部分,列出了Unity提供的完整实例项目,用户可以点击每个项目对应的下载(Download)按钮,将项目下载到本地,导入Unity中进行学习。这些项目都有对应的视频或文字教学,用户可访问官方教程下载页面,找到对应项目的教学资料,进行学习,如图2-11所示。图2-11 Tutorial Projects

在Resources部分,列出了一系列资源包,包含粒子特效、3D模型、模板项目等资源,用户可以下载导入Unity中进行使用,这些资源包同样可以在UnityAsset Sotre中的Unity官方频道中找到,如图2-12所示。图2-12 Resources

在Links部分,列出了一系列学习资源链接,用户可以点击 Read More 跳转到相应页面进行学习,如图2-13所示。图2-13 Links2.3 视图

在使用 Unity编辑器进行应用程序开发前,需要对其各个窗口面板有一定的了解。Unity具有灵活的窗口布局,图2-14 所示为打开编辑器后的默认布局,常用视图名称如图中所示。本节将介绍这些基本视图的功能及相关操作。图2-14 Unity编辑器界面2.3.1 项目(Project)面板

在 Project 面板中,可以进行项目资源的管理,包括创建、查找、导入、导出、查看等,其面板如图2-15所示。对于一般资源,如模型、贴图、音频等,将其直接拖入项目面板中即可完成资源的导入。点击项目面板左上角的 Create 按钮,可以在下拉列表中选择要创建的资源,例如C#脚本、材质等资源。使用搜索框可以快速查找需要的资源,其右侧的两个按钮用于设定搜索条件,可以分别按选定的类型和标签(Label)进行搜索。图2-15 项目面板

在 Unity开发过程中,常用到第三方提供的工具插件,如各 VR 平台提供的开发工具、粒子特效、模型素材等。对于插件的导入,在项目面板中单击鼠标右键选择 Import>Custom Package命令,选择需要导入的插件即可。在 UnityAsset Store 中下载或购买的工具,需要在 Unity编辑器中打开 Asset Store 面板,在目标插件的详情页中,点击右侧 Import 按钮导入即可。2.3.2 场景(Scene)面板

在场景面板中可以对应用程序的场景进行可视化编辑,对游戏对象进行选择、移动、旋转、缩放等操作。开发者可使用按钮或快捷键切换操作类型。在控制面板的左上角,有6个为一组的控制按钮,分别对应场景中的6种常用操作,如图2-16所示。图2-16 控制工具

各按钮名称和功能介绍如下。

Hand Tool:对Scene视图内容进行平移,快捷键为 Q。

Move Tool:对选定的游戏对象进行移动,快捷键为 W。

Rotate Tool:对选定的游戏对象进行旋转,快捷键为 E。

Scale Tool:对选定的游戏对象进行缩放,快捷键为 R。

Rect Tool:控制选定的游戏对象在二维平面的位置和大小,快捷键为 T,常用在对 2D UI元素进行控制。对于三维游戏对象,随着视口的旋转,该工具所能变换的二维平面也随之改变。

Transform Tool:该工具综合了移动、旋转、缩放3种操作,快捷键为 Y。后5种工具使用示范如图2-17所示。图2-17 使用控制工具对游戏对象进行操作2.3.3 游戏(Game)面板

游戏面板用于呈现场景中的摄像机(Camera)组件渲染的内容。点击控制面板上的 Play 按钮即可启动应用程序,在游戏面板中实时预览场景内容,再次点击,应用程序停止运行。基于 VR 平台的硬件特性,应用程序多在头显中进行预览,虽然某些 VR 开发工具提供在游戏视图中的模拟调试,但在此情境下,游戏视图更大的作用是查看程序性能。点击游戏面板右上角的 Stats 按钮,打开状态视图,此视图展示应用程序在运行时各项性能指标,包括批处理、模型面数、帧率、网络状态等,开发者可据此简要查看应用程序的性能表现,如图2-18所示。图2-18 在游戏面板中查看应用程序性能2.3.4 属性(Inspector)面板

在属性面板中,可显示选择的游戏对象或资源的参数。此外,Unity基于组件的思想,任何新建的脚本、材质等资源,均可拖入选定游戏对象的属性面板中。如图2-19所示,在游戏对象 Player 上挂载了共计5个组件。挂载到游戏对象上的组件可以认为是一个类的实例,面板中组件的参数,对应类实例的公共属性,都可以在脚本中进行引用,在程序运行时动态改变。在脚本中获取组件的引用,需使用GetComponent()方法,如下列代码片段所示:

BoxCollider collider = GetComponent();

collider.isTrigger = true;图2-19 游戏对象Player在属性面板上显示的挂载组件2.3.5 层级(Hierarchy)面板

层级面板以树形结构显示场景中的所有游戏对象以及它们的层次关系,如图2-20所示。点击左上角的 Create 按钮,在弹出的下拉列表中可以快速创建游戏对象,使用层级面板顶部的搜索框,可以快速查找所需要的游戏对象,点击搜索框左侧图标,亦可选择查找类型。图2-20 层级面板

除对游戏对象进行基本操作外,通过拖拽节点,可以设置游戏对象之间的包含关系。对于UI元素,通过调节节点的上下层关系,可以确定它们之间的深度关系,即显示层级。2.4 Unity开发的常用工具

Unity作为一款优秀的游戏引擎,已经具备了资源整合与管理的绝大部分功能,但是 VR内容的制作开发是一套综合的工作流程,所以在整个工作环节中,还需要借助一些工具来使开发工作更加高效,团队配合更加稳定。本节将介绍在使用 Unity开发 VR 内容的工作流程中常用的工具。2.4.1 Visual Studio

Visual Studio是微软旗下的软件开发工具包。目前包括3种版本: 社区版(Community)、专业版(Professional )和企业版(Enterprise),其中社区版供学生、开源组织和个人开发人员免费使用,如图2-21所示。图2-21 Visual Studio官方下载主页

随着 Unity中.NET 4.6 脚本运行库的升级,Unity开始支持 C#6.0 及其更高版本的众多新功能,而之前随Unity一同发行的MonoDevelop 并不支持 C#6.0 的新功能,所以在未来版本的Unity(2018.1起)中将停止对MonoDevelop的支持,故Visual Studio是我们推荐的Unity脚本IDE(集成开发环境)。

Mac 用户可下载Visual Studio for Mac,Windows 用户可下载Visual Studio 2017 Community,进行VR内容的开发。

在 Unity中,用户可通过菜单栏 Editor > Preferences> External Tools > External Script Editor 选择指定 Visual Studio 2017(Community)为默认脚本编辑器,如图2-22所示。初次安装,可点击Browse...定位到Visual Studio安装目录,选IDE执行文件即可。图2-22 指定Unity外部代码编辑器为Visual Studio

在Project面板中,双击脚本即可打开Visual Studio 进行脚本的编写。

使用 Visual Studio 调试程序

Visual Studio 2017 预制了 Unity代码调试工具,可以非常方便地设定断点,无缝地与Unity结合进行代码调试,以快速定位问题,如图2-23所示。图2-23 在Visual Studio中启动调试

用户在代码中设置断点,点击附加到 Unity按钮,然后在Unity中启动项目,当运行到断点处的逻辑时,Visual Studio 会将程序挂起,继而在代码编辑器中切换到调试状态。用户通过观察编辑器展示的该处所有对象的状态信息,即可快速定位问题,如图2-24所示。图2-24 Visual Studio 断点调试

同时,Visual Studio 2017 提供对 Unity的智能语法高亮、自动完

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载