学习虚拟现实:桌面、网络与移动设备的沉浸式体验与应用开发指南pdf下载pdf下载

学习虚拟现实:桌面、网络与移动设备的沉浸式体验与应用开发指南百度网盘pdf下载

作者:
简介:本篇主要提供学习虚拟现实:桌面、网络与移动设备的沉浸式体验与应用开发指南pdf下载
出版社:科学出版社旗舰店
出版时间:2017-05
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍



商品参数

学习虚拟现实:桌面、网络与移动设备的沉浸式体验与应用开发指南
曾用价 80.00
出版社 科学出版社
版次 1
出版时间 2017年05月
开本 16开
作者 Tony,Parisi 著;王莉莉,郝爱民,赵沁平 译
装帧 平装-胶订
页数 80
字数 154000
ISBN编码 9787030511119


内容介绍

虚拟现实为人们提供了一种更为和谐的人机交互方式。本书作者Tony Parisi是虚拟现实领域的开拓者之一。他站在开发人员的角度介绍虚拟现实的概念、技术和硬件设备,阐述基于多种设备、平台的虚拟现实应用程序开发技术,指导读者完成一个虚拟现实应用程序的开发任务。

关联推荐

适读人群 :可供电子信息、自动化类本科生、研究生阅读参考,也可作为工程技术人员的参考书。   近几年,随着虚拟现实越来越接近主流消费者的应用,一个充满活力的开发生态系统出现了。《学习虚拟现实:桌面、网络与移动设备的沉浸式体验与应用开发指南》将带着人们了解开发桌面、移动端和基于浏览器的应用的开发精华,并探索三种开发平台即Oculus VR、Gear VR和Cardboard VR,以及多种虚拟现实开发环境、编程工具和技术。
  对于一个熟悉移动开发的有经验的程序员,《学习虚拟现实:桌面、网络与移动设备的沉浸式体验与应用开发指南》将通过清楚简单的示例帮助其了解虚拟现实应用开发的知识。当读者创建了一个如第7章所给出的完整的应用后,他们在下一个主流娱乐媒体上有一个新的开端。
  学习用户界面设计、三维图形和立体渲染等虚拟现实基础知识;
  探索Unity3D,它是目前使用游戏引擎开发应用程序的选择;
  使用Oculus Rift为台式计算机创建一个简单的应用;
  使用Android和Oculus移动版SDK为三星Gear VR开发应用;
  使用WebVR JavaScrip API和WebGL建立基于浏览器的应用;
  使用谷歌Cardboard VR为任意智能手机创建功能简单且价格低廉的移动端应用;
  集成所有技术建立一个360°全景图像浏览器。 
目录

目录
译者序
前言
第1章简介1
1.1虚拟现实的概念2
1.1.1立体显示器3
1.1.2运动跟踪设备4
1.1.3输入设备5
1.1.4桌面和移动终端平台5
1.2虚拟现实的应用6
1.3小结8
第2章虚拟现实硬件9
2.1Oculus Rift9
2.1.1DK110
2.1.2DK211
2.1.3Crescent Bay11
2.1.4Oculus Rift的配置13
2.2其他高端头戴式显示设备14
2.3三星Gear VR:豪华、便携式的虚拟现实体验15
2.4谷歌Cardboard:智能手机上的低成本虚拟现实17
2.4.1Cardboard的立体渲染与头部跟踪18
2.4.2Cardboard 的虚拟现实输入18
2.4.3Cardboard上的程序开发19
2.5虚拟现实输入设备19
2.6小结20
第3章桌面系统:Oculus Rift程序开发22
3.1三维图形基础22
3.1.1三维坐标系23
3.1.2网格、多边形和顶点24
3.1.3材质、纹理和光照24
3.1.4变换和矩阵25
3.1.5相机、透视投影、视口与投影26
3.1.6立体渲染27
3.2Unity3D:适合大众使用的游戏引擎28
3.3Oculus SDK的安装29
3.4虚拟现实示例程序的创建32
3.4.1创建并运行应用程序33
3.4.2代码走查35
3.5小结38
第4章移动终端:Gear VR程序开发39
4.1Gear VR用户界面和Oculus Home40
4.2Oculus移动版SDK的使用40
4.2.1安装Android SDK41
4.2.2生成Oculus签名文件41
4.2.3在设备上安装USB调试工具41
4.3基于Unity3D的Gear VR程序开发42
4.3.1安装Unity3D环境42
4.3.2Unity3D示例43
4.3.3处理触摸板事件47
4.4Gear VR应用程序的部署49
4.5小结49
第5章WebVR:基于浏览器HTML5的虚拟现实51
5.1WebVR的历史52
5.2WebVR API53
5.2.1支持的浏览器和设备53
5.2.2虚拟现实设备查询54
5.2.3虚拟现实全屏模式的设置56
5.2.4头部跟踪57
5.3WebVR应用程序的创建58
5.3.1Three.js:三维渲染引擎58
5.3.2一个完整的示例59
5.4用于创建WebVR应用的工具和技术67
5.4.1WebVR引擎和开发工具67
5.4.2使用Unity3D和Unreal进行WebVR应用开发68
5.4.3开源库和框架69
5.5WebVR和网络浏览的前景70
5.6小结71
第6章虚拟现实无处不在:低成本移动虚拟现实设备谷歌:Cardboard72
6.1Cardboard介绍73
6.1.1所支持的设备和操作系统73
6.1.2头盔设备制造商74
6.1.3Cardboard应用程序75
6.1.4Cardboard输入设备77
6.2Cardboard的立体渲染和头部跟踪78
6.3基于Cardboard SDK的Android应用开发79
6.3.1安装环境80
6.3.2代码走查81
6.4基于Cardboard SDK的Unity程序开发85
6.4.1SDK的安装85
6.4.2Unity版本的寻宝游戏的创建86
6.4.3Unity代码走查88
6.5基于HTML5和移动终端浏览器的Cardboard应用程序开发90
6.5.1设置WebVR项目91
6.5.2Cardboard的代码91
6.6小结94
第7章虚拟现实应用程序的创建96
7.1360°全景拼图97
7.2创建项目98
7.2.1获取软件、硬件和示例代码98
7.2.2创建Unity场景和项目98
7.3添加Cardboard VR支持103
7.4基于视线和点击的用户交互界面的创建107
7.4.1创建二维平面107
7.4.2为项目添加输入支持108
7.4.3创建事件处理脚本109
7.4.4处理电磁开关事件111
7.4.5创建功能用户界面112
7.5项目扩展应用113
7.6小结114
附录116

在线试读

第1章 简介
虚拟现实(virtual reality,VR)是一种蕴含着巨大潜力的媒体。它开辟了前所未见的交互与交流方式,可以让人们去任何地方,完全沉浸其中,并且拥有真实的体验,仿佛身临其境。虽然目前由于成本等因素,虚拟现实与普通消费者还有一定距离,但是在过去的几年中,技术进步已经为大众市场革命铺平了道路,虚拟现实可能会像电视、互联网、智能手机一样给社会带来巨大影响。
虚拟现实包括三维显示、运动跟踪设备、输入设备、软件框架及开发工具一系列技术。尽管消费级的虚拟现实硬件还未成熟,但一些核心平台已经出现,包括Oculus Rift、三星的Gear VR和谷歌的Cardboard,它们提供不同级别的虚拟现实体验、不同的价格定位及不同的便携性。
制作和展示消费级虚拟现实的软件也在快速发展。流行的桌面与移动终端游戏制作引擎Unity3D和Unreal(虚幻)成为虚拟现实应用开发的工具。网络开发紧随其后,WebGL和3D 框架(如Three.js和Babylon.js)为桌面和移动终端操作系统提供了创建开源、基于浏览器的虚拟现实体验的途径。
随着研发力量的不断增大和消费兴趣的增长,虚拟现实有望成为下一个计算机技术的巨大浪潮。本书将探索当今虚拟现实应用系统创作者接触到的硬件、软件、应用技术和接口设计难题。虚拟现实仍然处于起步阶段,它就像一片荒蛮地带,而你是一个拓荒者。这里也许充斥着未知甚至危险,但是激励大家为了更好的生活,努力向前。让大家一起来探索这个新的前沿。
图1-1展示了著名的Tuscany VR示例的截屏,该截屏由Oculus VR项目组提供,用以演示他们的硬件。戴上Oculus Rift观看这个示例,用户置身于Tuscan庄园中,观赏一栋漂亮的别墅。流云缓缓飘过天空,鸟儿的鸣叫与层层波浪轻拍岸边的声音不绝于耳。
图1-1由Oculus VR项目组提供的Tuscany VR示例截屏
用户可以像在游戏中一样通过键盘上的W、A、S、D键在场景中移动(游戏玩家熟知的“WASD键”)。对于经常玩计算机游戏的人这并不新奇。但现在请转头:向上看、向下看、回头看,便可以看到整个庄园。用户沉浸在一个完全环绕着他的虚拟世界中。向前走进别墅,四处看一看。走出来,走到庄园边上,看看下面的湖水。至少在这短短的几分钟内,用户会忘记不是真的在那里。
这种完全沉浸的感受——在其他地方体验完全不同的事物,就是使用虚拟现实技术追求之所在。这也是旅程的起点。
1.1虚拟现实的概念
Reality is merely an illusion,albeit a very persistent one.——Albert Einstein
虚拟现实的目标是让人们觉得自己身临其境。它通过欺骗人们的大脑来实现这个目标,尤其是视皮层和大脑负责感知运动的部分。虚拟现实借助各种技术共同创造这种幻觉,现将这些技术阐述如下。
1.立体显示器
立体显示器又称三维显示器或头戴式显示器(头盔),这些设备利用多图像、真实感光学扭曲和特制镜头的组合来产生立体影像,使用户获得三维深度感。
2.运动跟踪设备
陀螺仪、加速度计和其他低成本部件在虚拟现实硬件中得以应用,以感知身体的运动和头部的转向,从而使应用程序可以更新用户在三维场景中视点的位置和朝向信息。
3.输入设备
除了传统的鼠标和键盘,虚拟现实还需要新型输入设备,包括游戏杆、能够识别运动和手势的手部与身体跟踪传感器。
4.桌面和移动终端平台
桌面和移动终端平台包括计算机硬件、操作系统、设备软件接口、运行应用程序的框架与引擎和软件开发工具。
要想创造具有完全沉浸感的虚拟现实体验,上述四类组件缺一不可,这些内容将在本书后面的章节中具体介绍。下面阐述这些组件的基本概念。
1.1.1立体显示器
虚拟现实提供沉浸感的主要要素是在视觉上提供持久的三维深度感。为了建立深度感,虚拟现实硬件采用三维显示器,又称立体显示器或头戴式显示器。
多年来,消费级虚拟现实中*大的障碍之一就是没有价格实惠、重量轻、长时间佩戴舒适的立体显示器。Oculus VR项目组推出Oculus Rift后,这种情况得到了极大改善。Oculus Rift的推出是虚拟现实硬件的一次突破。Oculus Rift于2012年首次被推出,立体显示器和头部跟踪传感器集成在一个轻质头盔中,一套开发套件售价仅几百美元。尽管*初的开发套件,即DK1的分辨率较低,但这足以让整个行业为之兴奋,并引发一场虚拟现实开发的风暴。新一代Oculus Rift开发套件,如DK2(图1-2)具有更高的显示分辨率、位置及方向跟踪能力和更好的性能。
图1-2 Oculus Rift头戴式显示器DK2
为了建立深度感,需要为每只眼睛提供单独的图像,两幅图像之间存在微小的偏移用以模拟视差,视差是指大脑通过所观察到的对象位置差异(由两眼稍微分开造成)感知深度的现象。为了创建高质量的深度感,还需要利用桶形畸变将图像扭曲来模拟眼球的球形变形。Oculus Rift实现了这两种技术。
图1-3展示了一个更准确的Tuscany VR示例截图。利用上述两种虚拟现实技术,Oculus Rift生成了双目图像,将Oculus Rift连接到一台普通计算机上,就显示该示例截图。
图1-3Oculus Rift中显示的立体Tuscany VR示例
从软件角度讲,Oculus Rift应用程序的作用就是渲染类似图1-3的图像,速度为60帧/秒以上,理想状态下应达到120帧/秒来避免感知滞后或延迟,因为这可能会破坏错觉,更糟糕的是表现不佳的虚拟现实体验会引起头晕、恶心的感觉。
Oculus Rift并不是**的选择。第2章将介绍多种头戴式显示器。其中,一些适用于桌面计算机,一些适用于智能手机,还有一些适用于游戏主机。头戴式显示器具有多种款式和价格区间。然而,随着消费型虚拟现实显示器的出现和发展,Oculus VR公司的产品是**个(在撰写本书时),也是*好的一个。
1.1.2运动跟踪设备
另一种欺骗大脑使其相信身临其境的重要手段是跟踪头部运动,实时渲染更新场景图像。这模仿了真实世界中用户环顾四周的情景。
Oculus Rift的一个创新之处在于它利用高速惯性测量单元(inertial measurement unit,IMU)快速跟踪头部运动。用于头部跟踪的IMU结合陀螺仪、加速度计和/或磁力计等硬件,类似于现在的手机,来准确测量旋转的变化。第2章将提到虚拟现实硬件系统采用多重IMU配置。
头部运动跟踪与高质量的立体渲染同样重要,甚至更加重要。感知系统对运动十分敏感,像立体渲染中的滞后一样,在头部跟踪中高延迟不仅会打破沉浸感,还会引起恶心的感觉。虚拟现实IMU硬件必须尽可能迅速地跟踪头部运动,软件也一定要配合。当立体渲染和头部运动跟踪恰当地结合起来,并以足够的频率更新时,用户就可以获得真实的沉浸感。
1.1.3输入设备
为了创建身临其境的沉浸感,头戴式显示器完全包裹住用户的眼睛,切断了外界视线。这对于输入设备是一个有趣的场景:用户只能盲操作;他们在使用虚拟现实显示器时无法看到鼠标和键盘。为了解决这个问题,虚拟现实系统利用了其他类型的输入设备,包括游戏控制器、手部运动跟踪传感器、无线手与身体跟踪器。
目前还没有一种标准的交互方式,或者通俗地讲,没有虚拟现实鼠标。虚拟现实正驱动着大量输入设备方面的实验和创新,目前还仅仅处于这个进程的开端。未来的几年中,虚拟现实也许会让人们看到一种人机交互方式的完全转变。
1.1.4桌面和移动终端平台
许多虚拟现实应用程序会在大多数现有的计算机和手机上运行。一台配置相对较好的台式计算机或高性能笔记本电脑可以与Oculus Rift配套使用;拥有足够计算能力的CPU和图形处理能力的智能手机也可以提供良好的虚拟现实体验。对于大多数人,这意味着现有的计算机和设备只需添加一些外部设备就可以变成虚拟现实设备;但对于那些追求超高水平体验的人,下一个圣诞节*好的礼物应该就是*新的配备*佳图形处理器和*快CPU的台式计算机。
随着虚拟现实的成熟和普及,人们也将开始看到专用的计算机、手机和主机,用以实现惊人的虚拟现实体验。
用来创建虚拟现实应用系统的软件有几种类型:基础软件开发工具包(SDK)、游戏引擎和框架,以及*新版本的现代Web浏览器。虚拟现实视频是另一个值得探索的方向。下面对每类软件进行介绍。
1.基础软件开发工具包
SDK是与计算机的主机操作系统一起使用的设备驱动程序和软件库,在Windows操作系统上是C++应用程序使用的Win32库;在Android系统上是Java库。人们可以使用SDK简单地建立初始的应用程序,并对其他一切(如三维图形和游戏行为)“自行掌控”。但是,大多数开发人员使用引擎或框架。
2.游戏引擎和框架
除非是一位游戏引擎开发人员,否则可能不希望直接面对SDK。人们更可能使用一款游戏引擎,如Unity3D(详见第3章)。像Unity3D这样的库,被称为中间件,负责三维渲染、物理仿真、游戏行为,以及与设备交互等底层细节。目前大多数虚拟现实开发人员使用游戏中间件(如Unity3D)来搭建他们的应用程序。
许多中间件引擎拥有强大的跨平台支持,让人们一次编码(大部分情况下是一次或者至少一次)就可以适用于多个平台,包括桌面和移动终端。它们通常还配备一套功能强大的工具,称为关卡编辑器(level editor)或集成开发环境(integrated development environment,IDE)。
3.Web浏览器
HTML5在短短几年内增加了移动功能,其性能几乎达到了移动计算本身的性能。同样,浏览器开发者正在快速跟进虚拟现实的发展。估计只需1~2年的时间,虚拟现实功能就可以加入浏览器中。
这样做有两个结果:①这意味着可以使用Web技术,如HTML5、WebGL和来创建应用程序,这使得编码更快、跨平台性更好;②能够使用现有网络提供的基础设施,如虚拟现实体验之间的超链接、托管在云中的内容、开发多用户共享的体验,以及将网络数据直接集成到虚拟现实应用中。
4.视频播放器
立体视频本身代表一类虚拟现实技术。在游戏引擎中图形完全是由基于手工构建的三维模型、动画和背景等合成的,而立体视频是从现实世界采集的,真实感非常逼真,常常令人惊叹。想象一下,在虚拟现实体验中乘坐直升机游览大峡谷,你能在飞跃峡谷时四处张望。然而,视频不像三维虚拟环境那样拥有完全的交互性,所以这种媒体类型具有一定的局限性。
拍摄立体视频需要至少两台摄像机。但如果希望视频是全景的(也就是捕获360°视角的整个场景),那么就需要更多的摄像机。此领域的先锋者,如加利福尼亚州的Jaunt VR,正在试验使用数十台摄像机来制作**个虚拟现实长篇电影。
虚拟现实视频的采集和制作是一个新兴方向,一些企业和研究团队都致力于此。各种各样的虚拟现实视频播放器也正在开发中。有些播放器只能应用于本地,有的则只针对手机或网络,一些开发人员正在创建完全跨平台的播放器。这个新兴方向*大的问题是,目前还没有标准的格式用于存储和重放视频,所以如果想制作视频内容,就可能需要从同一个供应商那里购买硬件、制作工具和重放软件。
1.2虚拟现实的应用
尽管消费级虚拟现实仅有短短几年的历史,但是人们已经看到了其惊人的应用领域,即便说虚拟现实攫取了人们的想象力也不足为过。开发人员正努力在虚拟现实中建立几乎所有的事物,至今成败参半。