欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PDF文档下载  

    AR与VR开发实战.html.pdf

    • 资源ID:5514690       资源大小:21.21MB        全文页数:340页
    • 资源格式: PDF        下载积分:20
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要20
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    AR与VR开发实战.html.pdf

    前言 增强现实(Augmented Reality)简称AR,是一种实时计算摄像机捕捉到的现实影像的位置及角度并加上相应虚拟信息的技术。这种技术不仅能展现真实世界的信息,还能通过增加虚拟信息而对现实世 界进行增强,所以称为增强现实。AR可应用于军事、医疗、工业、教育等众多领域,随着硬件性能的提升和软件解决方案的日趋成熟,AR产品将越来越多地走入人们的视线。 虚拟现实(Virtual Reality)简称VR,它通过计算机图形系统以及多种传感器控制设备将人带入虚拟世界中,并与虚拟世界产生各种交互,具有强烈的沉浸式体验。VR将在游戏、影视、城市规划、室内 设计、地产、教育等多个领域为人们提供更加真实、震撼的全新体验。 随着AR和VR技术的飞速发展,由此产生的众多应用场景将需要大量技术人才,尤其是程序设计人才。本书的目的是为程序开发者提供全面、权威的参考资料,并附有大量真实案例,详细讲解AR、VR 开发的流程和步骤。 本书分为两大部分,第一部分是“AR开发”,共12章: ·第1章简要介绍AR技术的概念和常用的AR解决方案。 ·第2章主要介绍基于Vuforia SDK的应用开发。 ·第39章主要介绍AR项目中常见的案例以及实现方法,例如透明视频、AR对战游戏、涂色类产品等。 ·第10章重点讲解国内AR解决方案HiAR SDK的开发。 ·第11章简要介绍其他AR SDK的使用。 ·第12章简要介绍AR创建工具“找趣”的使用。 第二部分是“VR开发”,共6章: ·第13章简要介绍VR技术的概念和主流的VR设备。 ·第14章主要介绍基于Google Cardboard开发VR应用。 ·第15章主要介绍HTC Vive的常用功能及其实现。 ·第16、17章通过案例方式讲解基于HTC Vive的项目开发。 ·第18章简要介绍目前市场上的其他VR设备及相关技术。 本书专注于AR和VR开发,因此不过多涉及编程语言的基础知识及引擎的使用方法,阅读本书需要先掌握C#编程技术,并能够熟练使用Unity 3D引擎。如果你没有C#和Unity的使用经验,那么在阅读本 书之前需要先学习相关技术。 在编写本书的过程中,我们得到了亮风台科技、克科技、RealMax等企业的技术支持和宝贵意见,在此表示衷心的感谢。感谢ARinChina CEO张明军提供的优质平台与宝贵资源,感谢ARinChina同事董艳 超、张荣为本书的出版辛苦奔波,感谢ARinChina站长赵亮、ARinChina技术论坛版主赵忠立提供高质量的技术支持,感谢付旭耀提供美术支持。最后,特别感谢ARinChina工程师赵兴、谢有龙、陈家豪、常 壮等同事,他们在本书编著过程中付出了无数汗水。 本书是非常好的AR和VR入门教程,适用于高校计算机相关专业学生学习AR和VR技术,同时由于书中附有大量案例,所以同样适用于企业开发人员。如果你在项目中遇到相似的需求,或许也可以从本 书中获取一些灵感和帮助。 如果本书能为你的学习或工作带来帮助和提升,将是我们莫大的荣幸。真诚希望本书的读者给我们更多的反馈和意见,帮助我们取得更大的进步和成长。在阅读本书的过程中若有疑问,欢迎加入本书 QQ群进行交流,我们会在群里提供本书的所有资源和相关工具,QQ群号为588206982。 作者 2016年9月 作者简介 张克发:毕业于烟台大学软件工程学院,曾在杭州、上海等地参与多款大型游戏的开发,擅长Android开发、Unity 3D、Node.js等技术,有丰富的AR、VR开发经验,曾主导开发多款AR、VR产品。目前 担任ARinChina(增强现实中国)教育事业部总监,以及北京加速想象力教育咨询有限公司CTO。 赵亮:ARinChina站长,德国Metaio驻中国技术支持,奥地利Wikitude驻中国技术支持,目前担任上海璟世数字科技有限公司CTO。 赵忠立:曾在西安、上海等地从事三年AR开发,目前担任上海璟世数字科技有限公司技术总监,擅长Unity 3D与Android开发。 赵兴:毕业于西安邮电大学数学系,擅长Unity 3D开发与算法研究,目前在ARinChina担任AR、VR开发工程师。 谢有龙:在ARinChina担任AR、VR开发工程师,擅长HTC Vive、Hololens等AR、VR技术。 陈家豪:毕业于西北大学软件工程学院,擅长3D美术制作、Unity 3D开发、Unreal Engine开发。目前在ARinChina担任3D设计师及AR、VR开发工程师。 常壮:毕业于西北工业大学,在ARinChina担任AR、VR开发工程师。 第一部分 AR开发 ·第1章 AR技术简介 ·第2章 基于Vuforia SDK开发AR应用 ·第3章 AR内容交互 ·第4章 AR互动大屏:透明视频的实现 ·第5章 AR动画:AR与Flash动画的结合 ·第6章 AR游戏开发:卡牌对战 ·第7章 涂色类AR开发 ·第8章 使用陀螺仪模拟SLAM功能 ·第9章 Unity与原生代码之间的交互 ·第10章 使用HiAR SDK开发AR应用 ·第11章 其他AR SDK简介 ·第12章 AR创建工具:找趣(realcast)浏览器 第1章 AR技术简介 增强现实(Augmented Reality,AR)是一种实时计算摄影机影像的位置及角度并加上相应图像的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界中并进行互动。这种技术于20世纪90年代 提出,随着随身电子产品运算能力的提升,其用途将会越来越广。 目前对于增强现实有两种通用的定义。一种定义是北卡大学罗纳德·阿祖玛(Ronald Azuma)于1997年提出的,他认为增强现实包括三个方面的内容:将虚拟物与现实结合、即时互动、三维。另一种 定义是保罗·米尔格拉姆(Paul Milgram)和岸野文郎(Fumio Kishino)于1994年提出的现实虚拟连续统(Milgrams Reality-Virtuality Continuum)。后者将真实环境和虚拟环境分别作为连续统的 两端,它们的中间地带称为“混合现实”(Mixed Reality),其中靠近真实环境的是增强现实(Augmented Reality),靠近虚拟环境的则是虚拟现实(Virtual Reality)。 增强现实技术在工业上的应用已有不少,目前主要用于大型机械的维修和制造。另外,增强现实技术在教育、医疗、房产、游戏等多个领域的应用同样很多。 总的来讲,增强现实技术现在还处于起步阶段,大多数AR应用都运行在智能手机上,通过图像识别等技术实现简单的增强现实效果。其采用的解决方案大部分是利用Unity 3D等游戏引擎配合AR SDK 进行开发,目前最受欢迎的SDK有国外的Vuforia SDK以及国内的HiAR SDK等。 Vuforia SDK最早是高通(Qualcomm)公司的AR解决方案,后被PTC收购,目前仍致力于AR以及MR技术的研究。Vuforia集成了图像识别和物体识别,支持与三星Gear VR或微软Hololens相结合的 应用开发。 HiAR是亮风台研发的AR基础开发平台,提供HiAR SDK、HiAR云、管理后台和浏览器幻镜等一系列完整的AR开发支持,专注于为开发者带来最好的AR服务。HiAR SDK功能全面,支持平面识别、3D 识别、空间建模、人脸增强和姿态跟踪。2016年里约奥运会,在HiAR SDK的支持下,腾讯手机QQ于世界范围内展开AR火炬传递活动,创造了AR互动破亿次的吉尼斯世界纪录。HiAR云平台是国内首款 AR云,支持亿级图库秒级搜索,识别准确率高达96%,是国内AR平台中准确率最高、响应速度最快、识别图库最大的AR云。迄今为止,HiAR已成为全球用户量最多的AR开发平台之一,覆盖用户超过8 亿,三星、腾讯、百度、华为、OPPO、大疆、搜狐等企业均在HiAR获取AR技术支持与服务。 本书将介绍图形图像识别、简单的几何体识别、3D物体识别等目前常用的AR开发技术,并结合Vuforia、HiAR、Wikitude、VoidAR等知名AR开发工具包(SDK),以案例形式讲解AR在各个领域中 的应用方案。 由于本书将重点讲解AR技术开发,因此假设读者已经掌握了C#编程语言以及Unity 3D开发,如果读者对此没有接触,建议首先学习C#以及Unity 3D。 第2章 基于Vuforia SDK开发AR应用 2.1 准备Vuforia开发环境 1.Vuforia简介 Vuforia是一款能为现实世界物体带来互动体验的AR开发平台,旨在帮助开发者打造全新级别的真实世界物品与虚拟物品的互动。它使用计算机视觉技术来实时地识别和跟踪平面图像以及简单的3D物 体,使开发者能够在现实世界和数字体验之间架起桥梁。 Vuforia通过Unity游戏引擎扩展提供了C、Java、Objective-C和.NET语言的应用程序编程接口,能够同时支持iOS和Android的原生开发,使得开发者在Untiy引擎中开发的AR应用很容易移植到iOS和 Android平台上。 2.注册成为Vuforia用户 (1)打开Vuforia官网https:/developer.vuforia.com/。 (2)如果你已经是Vuforia注册用户,就可以直接输入邮箱和密码登录Vuforia管理后台;如果你还没有注册过Vuforia用户,则需要点击注册并填写相关注册信息。 (3)在完成注册信息填写后,Vuforia会给注册邮箱发送一封激活邮件,登录邮箱按照提示操作即可激活Vuforia账户。 (4)在激活Vuforia账户后就可以点击登录进入Vuforia管理后台了,如下图所示。 3.下载Vuforia SDK for Unity (1)点击上图中的Downloads链接并按照下图所示完成操作,注意在下载列表中选择Download for Unity。 (2)本节下载的Vuforia SDK版本为vuforia-unity-5-0-5。下载解压完成后会得到后缀名为.unitypackage的Unity插件包。 4.Vuforia 5.0.5 SDK支持的环境 (1)Android平台支持的最低版本是Android 4.0.3。 (2)Unity支持版本为4.6.75.1.3p1(本节使用的Unity版本为5.0.2f1)。 5.新建Unity工程 运行Unity程序,按照步骤创建一个新的Unity工程,也可以直接打开已有的Unity工程来进行Vuforia SDK导入。 6.导入Vuforia SDK for Unity插件 双击在步骤3中下载的.unitypackage插件包,弹出以下窗口后点击Import。 也可以在菜单栏中选择AssetsImport PackageCustom Package,然后再选择.unitypackage文件来导入插件。 如果出现以下界面,点击“I Made a Backup.Go Ahead!”按钮即可。 在导入完成后,Project窗口中显示如下: 至此,Vuforia SDK已经成功导入了新建的Unity项目中,接下来可以创建开发Demo。 第2章 基于Vuforia SDK开发AR应用 2.1 准备Vuforia开发环境 1.Vuforia简介 Vuforia是一款能为现实世界物体带来互动体验的AR开发平台,旨在帮助开发者打造全新级别的真实世界物品与虚拟物品的互动。它使用计算机视觉技术来实时地识别和跟踪平面图像以及简单的3D物 体,使开发者能够在现实世界和数字体验之间架起桥梁。 Vuforia通过Unity游戏引擎扩展提供了C、Java、Objective-C和.NET语言的应用程序编程接口,能够同时支持iOS和Android的原生开发,使得开发者在Untiy引擎中开发的AR应用很容易移植到iOS和 Android平台上。 2.注册成为Vuforia用户 (1)打开Vuforia官网https:/developer.vuforia.com/。 (2)如果你已经是Vuforia注册用户,就可以直接输入邮箱和密码登录Vuforia管理后台;如果你还没有注册过Vuforia用户,则需要点击注册并填写相关注册信息。 (3)在完成注册信息填写后,Vuforia会给注册邮箱发送一封激活邮件,登录邮箱按照提示操作即可激活Vuforia账户。 (4)在激活Vuforia账户后就可以点击登录进入Vuforia管理后台了,如下图所示。 3.下载Vuforia SDK for Unity (1)点击上图中的Downloads链接并按照下图所示完成操作,注意在下载列表中选择Download for Unity。 (2)本节下载的Vuforia SDK版本为vuforia-unity-5-0-5。下载解压完成后会得到后缀名为.unitypackage的Unity插件包。 4.Vuforia 5.0.5 SDK支持的环境 (1)Android平台支持的最低版本是Android 4.0.3。 (2)Unity支持版本为4.6.75.1.3p1(本节使用的Unity版本为5.0.2f1)。 5.新建Unity工程 运行Unity程序,按照步骤创建一个新的Unity工程,也可以直接打开已有的Unity工程来进行Vuforia SDK导入。 6.导入Vuforia SDK for Unity插件 双击在步骤3中下载的.unitypackage插件包,弹出以下窗口后点击Import。 也可以在菜单栏中选择AssetsImport PackageCustom Package,然后再选择.unitypackage文件来导入插件。 如果出现以下界面,点击“I Made a Backup.Go Ahead!”按钮即可。 在导入完成后,Project窗口中显示如下: 至此,Vuforia SDK已经成功导入了新建的Unity项目中,接下来可以创建开发Demo。 2.2 创建Vuforia案例 在开始本节内容之前,如果你还没有创建Vuforia账号,请先参照上一节完成注册,如果你已经是Vuforia开发者,请继续阅读接下来的内容。 1.获取License Key 在官网点击Develop,按照下图完成操作: 完成以上操作后,在License Manager中点击自己创建的应用名称,进入下面的界面: 2.导出新建应用的数据包 根据下图先创建一个新的数据库: 数据包名最好与新建的应用名相同,以便于后期查找和导出。创建好之后进入以下界面: 打开新建的数据包,添加识别目标: 本书选择Single Image(单个图像)作为识别图: 添加成功后会显示如下界面: 上图中的星号表示该图片的识别度,星级越高则识别度越高。勾选已上传图片,下载并导入Unity工程中。 导入成功后如下图所示: 3.创建Vuforia案例 在Unity Project视图下选择VuforiaPrefabs文件夹,并将ARCamera和ImageTarget两个预制件拖入层级视图Hierarchy中,同时将场景自带的Main Camera删除。 预制件ARCamera上带有AR摄像机以及App相关设置;预制件ImageTarget代表一张识别图像,并且带有识别事件处理等相关脚本。 点击ARCamera,在Inspector面板中找到License Key,将步骤1中创建应用时生成的License Key复制并粘贴到该区域。 ARCamera设置完成后点击ImageTarget,按照下图进行设置: 右击ImageTarget创建一个三维物体模型,调整三维物体与识别图像的位置关系以使其外于合适位置。 最后,点击运行来测试效果。 至此,一个简易的Vuforia案例创建成功。 2.3 创建AR视频 本节将介绍AR视频的创建,AR视频即识别某张图像并播放与所识别图像对应的视频文件,一般用于企业宣传册、广告、书籍等相关领域。我们将会继续使用Unity和Vuforia SDK来开发AR视频应用, 关于Vuforia SDK的相关配置可参阅前面的章节。 Unity默认支持的视频格式分别有.mov、.mpg、.mpeg、.mp4、.avi和.asf,我们在项目应用中一般采用.mp4文件进行视频的播放。在本节中,我们将介绍一款用于移动手机视频播放的Unity插件, 该插件名为Easy Movie Texture,通过简单的设置即可完成视频的播放。 1.插件导入 下载Easy Movie Texture 2.36插件并导入Unity中,在EasyMovieTexture文件夹下找到VideoManager预制件并将其放置到层级视图Hierarchy中,将VideoManager作为识别图像的子物体,该预制 件可以将视频以当前面片(Plane)的大小比例进行播放。 注意 在Assets文件夹中找到StreamingAssets文件夹,将视频文件放在该文件夹下。如果Assets中没有该文件夹,则需要手动创建该文件夹,如果视频放在其他文件夹下,将无法加载视频。 2.设置视频播放选项 选中VideoManager,在Inspector面板的Str File Name选项中填入视频名称,如a.mp4。该组件还可以设置是否自动播放(B Auto Play)、是否循环播放(B Loop)等属性。该预制件本质上是一 个面片和控制播放的Media Player Ctrl组件,所以可以手动调整面片相对于识别图的大小和位置。 3.注意事项 (1)Easy Movie Texture插件不支持PC端的视频播放,只支持Android操作系统和iOS平台。 (2)如果需要从网络加载视频文件,则只需将视频文件的网络URL添加到Str File Name属性上,无需其他操作。 2.4 文字识别 本节介绍如何使用Vuforia和Unity实现文字识别功能。Vuforia对文字识别有一定的要求,首先,Vuforia能够识别的文字大多为英文,不能识别数字和中文。其次,默认能够识别的英文单词必须是官 方词库中的单词(10万个),当然,还可以自定义添加英文单词。接下来我们通过Vuforia官方自带的案例来看一下文字识别的实现步骤。 1.插件导入 登录Vuforia官网,在下载页面中找到Samples,该页面中有Vuforia SDK提供的基本功能对应的案例,下载下图所示文件。 下载并解压之后找到下图所示Unity包并导入。 如果在导入Unity插件包的过程中出现下图所示的对话框,点击“I Made a Backup.Go Ahead!”按钮即可。 2.实现文字识别 插件包成功导入Unity工程后删除场景自带的Main Camera,同时在Vuforia文件夹中找到如下文件,拖到层级视图Hierarchy中。 选择场景中新添加的TextRecognition物体,在Inspector面板中添加Text Event Handler脚本。 在Inspector面板中,Additional Word File表示添加自定义词库,类型为.vwl文件。上图中,在第二个线框标定区域可以自定义添加需要识别的单词,如ARinChina。MaxSimultaneous Words属性 是指最大同时存在的物体的单词。 Black_List表示黑名单,即将某个单词加入该名单之后就无法再识别;相对应的White_List则表示白名单,加入该名单的单词会优先进行识别。 点开Word,将子对象Text文字改为我们自定义的文字ARinChina,并在场景中的Word物体下创建一个识别之后要显示的物体,然后调整其位置和大小,比如创建一个Cube,最后运行并查看识别效 果。 2.5 柱形识别 Vuforia SDK提供了带有图像的柱形物体识别功能,柱形识别只针对柱形物体,配合包裹在柱体表面的图像来进行识别,比如识别饮料瓶。本节将介绍柱形识别的实现步骤和方法。 1.Vuforia官方案例包 登录Vuforia官网,进入Downloads页面,点击Samples选项,然后下载如下插件并解压。 在解压完成后找到Cylinder Targets包并导入Unity工程。 在Project视图中的Vuforia文件夹下找到ARCamera预制件和CylinderTarget预制件,将这两个预制件拖至层级视图Hierarchy中,同时删除场景中的Main Camera。 2.创建数据库 在Vuforia官网的Develop页面下创建一个新的数据库,命名为CylinderTargets。 创建完成后打开CylinderTargets数据库,选择Add Target,在弹出的文件选项面板中选择第三种Cylinder,然后按照页面要求填写圆柱体的尺寸。其中的三个属性分别代表圆柱体的以下信息: ·Bottom Diameter:底面直径。 ·Top Diameter:顶面直径。 ·Side Length:边长。 在创建好识别目标后,点击新创建的识别目标,然后选择Upload Image来上传图片,这个图片是指包裹在圆柱体上的识别图案。 图片上传标准: ·长度:Top Diameter(或者Bottom Diameter)×。 ·宽度:按照具体圆柱高度确定,本书使用可口可乐易拉罐,所以宽度为易拉罐高度11.5cm。 注意 上传图片的长度一定要和上下两面图片的圆形周长相同,图片的宽度即圆柱的高,如果图片尺寸不合适,则无法成功添加。 3.实现柱形识别功能 这里我们使用官方自带的案例来做示范。在Unity工程中选中CylinderTarget,在Inspector面板中选择数据包为系统自带的数据包。 接下来,在CylinderTarget下创建一个子物体模型,这里选择Shpere,然后调节到合适的位置及大小。 最后,点击运行以测试圆柱体识别的效果。 2.6 立方体识别 Vuforia SDK提供了立方体识别功能,该功能可以识别被图案包裹的立方体,常用于产品包装盒等物体的AR展示效果,本节我们将介绍通过Unity以及Vuforia SDK制作立方体识别的步骤和方法。 1.下载并导入插件 登录官网,点击下载如下插件并解压。 在解压完成后找到Multi Targets包并导入Unity工程。 在工程视图Project中的Vuforia目录下找到ARCamera和MultiTargets两个预制件,将其拖到层级视图Hierarchy中,同时删除场景中的Main Camera。 2.创建数据库 在官网的Develop页面下选择Target Manager并创建一个新的Database,命名为MultiTarget。点击新建的MultiTarget数据库,在弹出的文件选项面板中选择Cuboid。 上图中,Dimension中的属性是为了确定立方体的尺寸,分别为宽、高、长三个维度的尺寸。相应的,物体的长度对应Front、Bottom、Top和Back识别图的长度,宽度对应Left、Top、Right和 Bottom识别图的宽度,高度则对应Front、Left、Right和Back识别图的宽度。遵循上述步骤,各识别图上传时相对应位置的尺寸必须一致,否则会出现识别图无法上传的问题。 3.实现立方体识别功能 这里我们使用官方自带的MultiTarget,选中MultiTarget,调节下图所示属性。 在MultiTarget下创建一个扫描后要显示的模型,我们可以创建一个Unity自带的Cube来显示识别之后的物体,调整好对应关系后点击运行即可实现立方体识别效果。 2.7 3D物体识别 2.5节和2.6节讲解了柱体识别和立方体识别,这两节的内容都只是针对简单几何体进行识别,在本节中,我们将介绍不规则三维物体的识别步骤和方法。 1.下载并导入插件 登录官网,点击Downloads下的Tools,下载Vuforia Object Scanner(Vuforia物体扫描器)。Vuforia Object Scanner是一个用于扫描物体表面识别点信息的App,只支持Android操作系统。根据 官网规定,建议大家采用Samsung Galaxy S5和Google Nexus 5这两款安卓手机进行操作,当然也可以尝试使用其他Android手机。 下载完毕并解压后会得到以下两部分内容: ·Media文件夹:三维物体扫描图,需要采用A4纸打印出来。 ·scanner.apk:用于三维物体扫描,需要安装在上述两款安卓手机中。 接下来,我们依然按照之前介绍的方法下载Samples插件包并将其导入工程,下图中的Object Recognition表示对应的插件包中包含物体识别案例。 2.扫描三维物体识别信息(点云数据) 将打印出来的纸张放在桌面上,在右上角坐标区域放置需要识别的三维物体。打开已经安装的扫描数据App,360°扫描物体后将生成后缀名为.od的数据文件。 3.创建数据库 接下来登录Vuforia开发者官网并创建数据库,这次我们选择3D Object,点击Browse按钮选择上一步中生成的数据文件。 创建成功后点击下载数据包并将其导入Unity工程。 4.实现三维物体扫描 在Vuforia文件夹中找到ARCamera和ObjectTarget两个预制件并拖到层级视图Hierarchy中。 选择ObjectTarget,在Inspector面板中选择三维数据包。 然后在ObjectTarget下创建一个扫描成功后要显示的子对象,并调节到合适的位置及大小,在此我们直接创建Unity自带的三维模型Sphere。 最后点击运行以测试三维物体的识别效果。 2.8 云识别 在开发项目的过程中,当我们需要将识别图放置在服务器后台而不是App内部的时候,需要使用Vuforia的云识别功能,在本节中,我们将介绍Vuforia云识别的实现步骤和方法。 1.创建License Key 登录Vuforia开发者官网,点击Develop,在License Manager下面创建一个License Key,该License Key是为了验证App的合法性。 2.创建云数据库 选择上图中的Target Manager选项,然后点击Add Database来创建云识别数据库,在下图中选择Cloud即可添加云识别目标。 选择刚才创建的License Key。 创建好之后打开,选择添加图片(与本地图片识别一样)。 3.下载插件 点击官网中的Downloads,下载下图所示的Unity包。 4.创建Unity工程 新建一个Unity工程,命名为CloudTest并打开,解压下载好的插件包,找到Cloud Recognition包并将其导入Unity工程。 导入完成后在Assets文件夹中找到Scenes文件夹并打开Vuforia-3-CloudReco工程。 选择CloudRecognition,在Inspector面板中找到Access Key和Secret Key,通过这两个密钥可以找到云连接的图片。 再次进入Vuforia开发者官网,在Develop选项下找到下图所示的页面选项。 将上图中的两个密钥分别复制到Unity工程中要求输入密钥的地方。 选择ARCamera,将刚才专为云识别创建的License Key复制进去。 最后运行以测试云识别效果,与本地识别的区别是,云识别测试需要设备处于连网状态。 2.9 智能地形 之前介绍了如何通过扫描单个识别图或物体来实现增强现实,可它们都是相对独立的,并且与现实场景没有互动。那么,如何使通过增强现实技术加载出的模型与现实场景互动呢?这就要用到本节介 绍的SmartTerrain。 1.插件下载 访问https:/developer.vuforia.com/downloads/sdk,进入如下界面,并下载Vuforia SDK的Unity版本。 2.创建Unity工程 新建一个Unity工程并将下载好的插件导入Unity。 3.效果实现 将场景中的Main Camera删除,在Vuforia文件夹下的Prefabs里将ARCamera、ImageTarget以及SmartTerrain中的SmartTerrain拖入场景。 在Vuforia的Develop页面中的License Manager下获取License Key并填入下图所示的框内。 然后在Target Manager页面中上传一张识别图,下载识别目标数据文件并将其导入当前工程(关于如何下载识别目标数据,之前的章节中有详细的介绍)。 在ARCamera的Inspector面板中进行如下设置。 在ImageTarget的Inspector面板下进行如下设置。 在这里选择你的识别图。为了方便观察,我们改变一下SmartTerrain中组件的材质颜色,步骤如下。 将这个材质球赋给上面的Primary Surface,并设置如下。然后对PropTemplate的材质进行设置。 注意 颜色可自由选择,没有特殊规定。 运行Unity扫描识别图,并在场景中置入一个随机物体,效果图如下。 扫描成功后会出现暗紫色的阴影部分,随后如果扫描出了场景中的三维物体,就会在该物体上生成一个浅绿色的立方体盒子(不同设置下的颜色不同)。 至此,Vuforia的SmartTerrain地形就创建完毕,大家可以根据自己的需求在出现浅绿色立方体盒子的地方添加相应的模型与交互事件,从而完善你的SmartTerrain应用。 注意 若想实现更好的效果,还可以结合PrimeSense Capri进行开发。 2.10 虚拟按钮 使用Vuforia实现增强现实之后,有时需要与这些虚拟模型进行交互,同时为了使交互方式更加魔幻,我们期望可以在真实的识别图像上进行点击,从而触发App中的某些行为。Vuforia SDK为我们提 供了Virtual Button功能来实现这样的交互,本节我们将带领大家使用这一特性实现两个模型之间的切换。 1.插件下载 访问https:/developer.vuforia.com/downloads/sdk,进入如下界面,并下载Vuforia SDK的Unity版本。 2.创建Unity工程 新建一个Unity工程并将下载好的插件导入Unity,同时将识别图数据包导入该工程。 3.场景搭建 首先删除场景中的Main Camera,接着从VuforiaPrefabs中将ARCamera和ImageTarget拖入场景,在ARCamera的Inspector面板下添加App License Key,并激活当前识别图信息。 然后在ImageTarget的Inspector面板下设置相应识别图信息。 接着在ImageTarget下分别创建一个Cube和一个Sphere,并将Project视图中VuforiaPrefabs下的Virtual Button预制件拖入ImageTarget。这里将Cube的棱长设置为0.3,将Sphere的半径设置为 0.4,然后使它们的位置相同。为了便于观察,我们新建两个材质球,分别将Cube和Sphere设置为不同的颜色。最后在Virtual Button的Inspector界面里分别设置两个Virtual Button的名字。 4.脚本编写 在Project下新建一个C#脚本,命名为VirtualButtonTest.cs,并在脚本中添加以下代码: using UnityEngine; using System.Collections.Generic; using Vuforia; public class VirtualButtonTest: MonoBehaviour,IVirtualButtonEventHandler void Start () public void OnButtonPressed(VirtualButtonAbstractBehaviour vb) public void OnButtonReleased(VirtualButtonAbstractBehaviour vb) 该类的作用是实现IVirtualButtonEventHandler这个接口,该接口中定义了OnButton Pressed和OnButtonReleased两个方法,这两个方法能够监听虚拟按键的按下和释放事件。为了触发这两个事 件,我们还需要将之前添加的两个VirtualButton对象注册到事件系统中,因此需要在Start()方法中查找这两个物体,并调用VirtualButtonBehaviour类中的RegisterEventHandler方法将当前对象作为参数 传入,具体的代码实现如下: void Start () /在所有子物体类中找到所有VirtualButtonBehaviour组件 VirtualButtonBehaviour vbs = GetComponentsInChildren(); for (int i = 0; i (); if (mTargetBuildingBehaviour) mTargetBuildingBehaviour.RegisterEventHandler(this); Debug.Log(“Registering User Defined Target event handler.“); 接下来要实现接口中的三个函数,首先是OnInitialized,用来初始化一些数据,我们在这个函数里写入下面的代码: public void OnInitialized() mObjectTracker = TrackerManager.Instance.GetTracker(); if (mObjectTracker != null) mBuiltDataSet = mObjectTracker.CreateDataSet(); mObjectTracker.ActivateDataSet(mBuiltDataSet); 这里用到两个新的变量,需要提前声明,如下: ObjectTracker mObjectTracker; / 新定义的数据集添加到DataSet里 DataSet mBuiltDataSet; 接着是OnFrameQualityChanged这个函数,用来更新当前帧质量。我们在函数里写入下面的代码: public void OnFrameQualityChanged(ImageTargetBuilder.FrameQuality frameQuality) mFrameQuality = frameQuality; if (mFrameQuality = ImageTargetBuilder.FrameQuality.FRAME_QUALITY_LOW) Debug.Log(“Low camera image quality“); 这里的mFrameQuality是一个用来记录当前帧图像质量的枚举类型,声明如下: ImageTargetBuilder.FrameQuality mFrameQuality = ImageTargetBuilder.FrameQuality.FRAME_QUALITY_NONE; 最后也是最重要的一个方法OnNewTrackableSource的代码如下: public void OnNewTrackableSource(TrackableSource trackableSource) mTargetCounter+; / Deactivates the dataset first mObjectTracker.DeactivateDataSet(mBuiltDataSet); / Destroy the oldest target if the dataset is full or the dataset / already contains five user-defined targets. if (mBuiltDataSet.HasReachedTr

    注意事项

    本文(AR与VR开发实战.html.pdf)为本站会员(紫竹语嫣)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开