来源:SCI期刊网 分类:电子论文 时间:2022-04-18 10:18 热度:
【摘 要】 针对被动式二维展示空间的信息表达现状,以提升用户的空间使用意愿为切入点,将增强现实技术与信息空间相融合设计应用,构建具备交互功能的沉浸式环境。基于Unity3D平台,借助PTC的Vuforia 和Google的ARCore开发了两种增强现实应用,详细描述了虚拟空间、标识物识别和人机交互的设计过程。测试表明沉浸式、交互性的空间提升了互动体验性,增强了信息传递效果,可进一步应用到教学等其他领域。
【关键词】 增强现实;沉浸式;Unity3D;Vuforia;ARCore
0 引言
信息化 1.0阶段的特点在于用计算机技术把信息以数字化的形式重新呈现,信息应用停留在以 PPT 为代表的被动式二维空间演示层面,以展示与传递为主,且提供的数字化资源交互性较差,对用户的吸引力弱,用户使用的积极性、主动性不足[1-5]。面对上述现状,从提升用户的空间使用意愿为切入点,进行了增强现实(Augmented Reality,简称AR)技术设计。作为虚拟现实(Virtual Reality,简称 VR)技术的重要分支,AR 借助计算机技术将包含各种虚拟对象的虚拟空间与现实环境对象相叠加,当摄像头扫描到标识物后会在屏幕上呈现虚拟空间,产生良好的场景沉浸感,大大提高用户的视觉体验,同时提供与虚拟对象自然的交互功能,赋予用户主动权,激发内在的使用兴趣与动力,让用户主动沉浸其中,提升应用的信息传递效果。
1 设计思路
应用设计主要包括三个部分:(1)建立虚拟空间,包括文本、图片、音视频、模型等。(2)识别标识物并显示虚拟空间,实现虚实融合。本文识别两种标识物:图片和平面。(3)人机交互,用户能够以手姿方式与虚拟空间进行交互获得相关信息。应用运行后开启摄像头,当摄像头扫描到真实环境中的标识物后即显示虚拟空间,用户可以通过手姿等方式实现交互,充满趣味性,两种标识物的设计降低了应用使用的空间限制。
2 设计环境与流程
2.1 软硬件环境
应用设计的硬件运行环境有移动式和头戴式两类。考虑到头戴式设备造价不菲,技术还在完善中,而智能手机等移动设备已经普及,本文采用An⁃ droid 智能手机设备作为硬件平台。软件环境负责建立虚拟空间、实现虚实融合和交互功能,选择Uni⁃ ty3D 生成虚拟信息,虚实融合开发包采用 PTC 的 Vuforia 和 Google 的 ARCore。Vuforia 支持 2D/3D 识别,扫描真实物体进行识别、虚拟按键,尤其是使用 Vuforia 检测图片,所以基于 Unity3D+Vuforia[6-8]设计图片识别应用。考虑到图片标识物并不是随处可见,选择平面作为第二种标识物,提高应用的实用性。Vuforia 的 Ground plane 可用于平面检测,但在测试中发现其功能不稳定,漂移和抖动现象时常出现,且运行时设备的发热量较大。ARCore 是 Google 开发的用于创建 AR 的 SDK,可进行位置跟踪、标识关键点并构建虚实融合的世界,还可以实现平面检测,因此基于Unity3D+ARCore设计平面检测应用,交互脚本采用C#编写。
2.2 设计流程
设计流程如图1所示。(1)新建Unity3D工程,导入Vuforia/ARCore插件包。(2)基于Vuforia的项目添加 ARCamera 和 ImageTarget,前者代表摄像头,后者代表要识别的图片。在 Vuforia 官网下载图片标识物的数据库文件并导入 Unity3D 工程,在 ImageTar⁃ get的Database属性选择导入的数据库,Image Target 属性选择要识别的图片,这样在 Unity3D 下的主窗口就可以看到图片了;基于ARCore的项目添加AR⁃ Core Device和Environment Light,前者负责与设备相关的操作,包括更新检测的平面、设备位置等,后者处理光照相关事宜。(3)布置虚拟空间,图片识别的虚拟空间安放在ImageTarget下,根据应用设计布置在图片的合适位置,在 ARCore 的平面检测中,首先定义一个空白对象,在它的 Inspector 窗口挂载可视化框架脚本 appcontroller,appcontroller 上挂载 AR⁃ Core Device 的 First Person Camera 和要显示的虚拟空间的prefab即可。(4)编写交互脚本并进行测试。
3 应用设计
3.1 基于Unity3D+Vuforia的图片识别应用设计
3.1.1 虚拟空间
UGUI 是 Unity3D 内置用于虚拟空间开发的系统,包含Canvas和EventSystem两个基本对象。Can⁃ vas 是画布,场景中所有 UI 对象(如 Text、Image 等)都是它的子对象,支持 Screen Space-Overlay、Screen Space-Camera 和 World Space 三种 UI 渲染模式,应用需要在 UI 上显示 3D 物体,选择 Screen SpaceCamera 模式。虚拟空间主要包括 Text、Image、But⁃ ton、Audio、Video Playerback、VirtualButton 和三维模型等元素。Text控件用来显示特定文本信息,Image 控件用来做界面图表或界面装饰,由于 Image 只能用来显示 Sprite,要先把图片类型修改为 Sprite才能显示。Button是按钮交互式控件,Audio用于音频播放 ,joystick 是 easy touch 提 供 的 虚 拟 摇 杆 ,Video Playerback 和 VirtualButton 是 Vuforia 提供用来实现视频播放和虚拟按键的预设件。音视频是虚拟空间设计的关键点,GameObject ->CreateEmpty 创建 Audio 对象,选中对象的 Inspector->Add Component 添加Audio Source,在Audio Source的AudioClip选择要播放的音频文件,ARcamera为Audio Listener。考虑到距离对音频源音量的影响,声音文件要设置为 2D sound。下载并导入 Video Playback,在 Assets-> Vuforia Video Playback->prefabs 下找到 Video 并作为子对象放到 ImageTarget 下,查看 Video 的 Video Playback Behaviour 属性,Path 表示要播放的视频路径,Vuforia支持两种方式使用视频文件:(1)本地文件,视频资源放在 Assets->StreamingAssets 文件夹中,在 Path 中输入视频完整的名字+后缀即可。(2)网络视频,以URL形式访问,应用选择本地文件。
3.1.2 图片识别
包括官网操作与 Unity3D 操作两部分,步骤如下。(1)官网操作,注册 Vuforia 官网账号,登录后点击 Develop ->License Manager ->Get Development Key,在这里自定义应用的名称,选择应用运行平台类型。因为应用运行在智能手机平台,所以选择 Mobile。完成后能看到自己创建的新应用,点击应用名称,复制 license key,在 Unity3D 中需要使用。下一步选择 Target Manager->Add Database,定义新建数据库的名称,选择设备类型,这里要注意,Vufo⁃ ria提供了免费和付费两种服务,免费服务下设备类型只能选择 Device,付费用户可以选择 Cloud 云端服务。新建数据库后点击名称进行添加操作,点击 Add Target,这里是图片识别,选择 Single Image,点击 Browse 上传图片标识物,Name 自定义,点击 Add 完成操作后下载图片标识物的数据库文件,该文件包含了图片识别的关键特征信息,摄像头扫描时会把检测信息与数据库文件信息进行实时匹配[9-11]。从提高识别率的角度,建议尽量选择包含尖锐信息、重复信息少的图片作为标识物。因为开发环境是 Unity3D,下载数据库开发平台选择 Unity Editor。(2)Unity3D操作,导入Vuforia和图片标识物的数据库文件,把 ARCamera 和 ImageTarget 拖到项目窗口中并删除 main camera。点击 ARCamera,把上一步复制的 key 放到 App License Key 里,加载数据库并激活。点击 ImageTarget,在 Database 和 Image Target 中选择要识别的图片,把3.1.1节建立的虚拟空间放到 ImageTarget 下面即可。需要注意的是可能出现添加了 ImageTarget 和选择 Database 后要识别的图片变成白色色块,看不到本来内容的情况。解决办法如下:在 Unity3D 的 project->editor->QCAR->Im⁃ ageTargetTexture 下找到导入的图片标识物文件夹,在里面找到要识别的图片,点击查看 Inspector,把 Texture Type 改成 Default,Texture Shape 改成 2D,保存后再去查看,图片就能正常显示。
3.1.3 人机交互
人机交互包括两类[12]:一类是移动类交互,另一类是按键类交互。移动类交互保证用户通过手姿或虚拟摇杆控制位移变换,实现方式有两种:一是借助插件,如 easy touch、leantouch 等,二是借助 Unity3D 提供的 Input 类自定义编程实现,本文采用 easy touch 插件,流程如下:(1)下载 easy touch 插件并加载到 Unity3D 中;(2)加载成功后导入 Unity3D 工程中;(3)参数设置,编写脚本并拖拽到相关模型上即可,流程如图 2所示。easy touch还提供了充满趣味性的虚拟摇杆功能(joystick),用户可以控制摇杆来改变虚拟对象的位置,步骤如下:(1)新建 joy⁃ stick组件。(2)参数设置,joystick properties用来设置基本属性,其中的joystick name很关键,脚本代码根据这个名字找到触发事件的摇杆。joystick position & size是虚拟摇杆的位置和大小,其中 anchor和 off⁃ set用于修改虚拟摇杆的位置,这里根据需求自行设置。joystick axes properties & events 是虚拟摇杆轴属性和事件,其中的事件驱动类型interaction type选择 event notification,enable X axis 和 enable Y axis 下的 speed 用来设置摇杆的 X 与 Y 轴灵敏度,按需设置。joystick textures 是虚拟摇杆的纹理,可以根据自己的需要加载纹理修改摇杆的外观。(3)编写控制脚本,把脚本赋给要控制的物体即可。基本逻辑如下:定义处理摇杆事件函数,判断摇杆名称,如果不是操作的虚拟摇杆就返回,如果是就获取摇杆偏移摇杆中心的 X 与 Y 坐标,判定 X 或 Y 的数值是否为 0,如果不为 0则表明对摇杆进行了操作,获取要控制物体的朝向并按朝向移动物体的位置实现移位操作,如图3所示。
本文来源于:《廊坊师范学院学报(自然科学版)》(双月刊)创刊于2008年,是河北省教育厅主管、廊坊师范学院主办的本科院校学报,根据本校学科特点开设以下栏目:数学与信息科学;物理与电子技术;化学与材料科学;生命与环境科学;建筑科学;体育科学;经济与管理科学;教学研究。
按键类交互由 UGUI的 Button控件与 Vuforia提供的 VirtualButton 共同实现,可实现触摸 Button 显示文本或播放视频等功能。VirtualButton 预设件放在Button控件特征点较为丰富的部位,当接触Virtu⁃ alButton 部位时,手指或其他物体对虚拟按键进行遮挡,导致该部分特征点位置信息出现改变或丢失,造成部位匹配错误,从而检测出发生按键类事件。Unity3D 环境下的虚拟按键操作主要涉及到一个类(VirtualButtonEventHandler)和一个接口(IVir⁃ tualButtonEventHandler),执行流程如下:(1)在对应的ImageTarget下添加VirtualButton组件;(2)查找所有的 VirtualButtonBehaviour 组件并注册事件;(3)根据不同的 Button 名称处理不同事件,即要实现 IVir⁃ tualButtonEventHandler 接 口 的 OnButtonPressed 和 OnButtonReleased 两个方法。以触摸按键如“使用帮助”显示相关内容为例,首先在“使用帮助”按键上放置一个 VirtualButton 预设件,修改 VirtualButton 名 称 为“shiyongbangzhu”,定 义 一 个 文 本 对 象 “help_text”用于显示内容,初始化时该对象隐藏,当触发VirtualButton事件后,通过switch语句判定是哪个对象,如果是“shiyongbangzhu”这个对象,就把 “help_text”设置为显示,这样就实现了按下显示内容的功能。视频点击播放需要添加 Play Video 脚本,但需注意执行该脚本时退出全屏就意味着重头播放,所以如果希望实现继续播放功能,还需要添加 VideoPlaybackUIEventHandler 脚本。该脚本负责全屏设置,摄像头设置等选项控制。如果处于全屏播放模式下点击退出全屏,该脚本的 OnTappedOn⁃ FullscreenButton 函数执行,调用 video.VideoPlayer. Pause()方法暂停视频播放,并调用video.VideoPlay⁃ er.SeekTo(0.0f)将视频回到起始位置。所以,为了实现退出全屏视频继续播放功能,执行video.Video⁃ Player.Play(false,video.VideoPlayer.GetCurrentPosi⁃ tion()),其中 GetCurrentPosition()用于获取当前播放位置,false 表示不是全屏模式,执行该语句可实现退出全屏视频继续播放功能,之后把完成的交互脚本挂载即可完成该应用的设计。
3.2 基于Unity3D+ARCore的平面检测应用设计
平面检测应用的虚拟空间建立和人机交互实现同 3.1.1 和 3.1.3 的内容,不再赘述。关键的平面识别可视化流程如图4所示。第一步搭建可视化框架:基于 C#编写 appcontroller 框架脚本,定义 check⁃ Device方法和 applicationlifecycle 方法。前者在 start 函数中调用,用于初始时刻检查设备的工作状态:依次检测摄像头是否授权、手机是否支持和运行是否遇到错误等情况,通过showmessage()方法弹出要告知用户的信息,如果发生严重错误,调用doquit()方法退出应用。后者在 update函数中调用,用于检查当前设备是否处于有效的跟踪状态:如果处于有效跟踪状态,那么就一直跟踪用于设备;如果当前设备不是正在跟踪,那么就让应用休眠一会;如果应用处于正在退出状态,那么就不进行下一步的操作。第二步制作平面的prefab:create->3D object-> plane,命名为 detectedplanevisual,其中 position 要全部设置为 0,scale 全部设置为 1,添加 detected plane visualizer渲染脚本完成prefab制作。第三步实现检测平面的可视化:对 appcontroller 脚本进行更新,添加命名空间 GoogleARCore.Examples.Common,定义一个新的变量planeObject代表平面,实例化两个list 存放新检测到的平面和已经检测到的所有平面,之后在update函数中更新代码。平面检测应用了AR⁃ Core 提供的射线检测方法,关键属性 TrackableHit⁃ Flags用于过滤需要进行碰撞检测的对象类型,本文只检测在边界内和多边形内的平面,根据用户点击点构建射线做碰撞检测,如果发生了碰撞,击中的是平面且不是平面的背面,则实例化虚拟对象的 prefab,并生成一个 anchor,把对象的 prefab 挂载到 anchor以便ARCore跟踪定位物体位置;如果击中的是背面,则不做其他操作。
4 测试与小结
以路由器图片和某校校徽图片为标识物,基于 Unity3D+Vuforia 设计应用,提供了交互功能,用户可根据需要通过虚拟摇杆和触摸的方式完成位移或按键操作。如图 5 所示,通过左下方的虚拟摇杆移动右上方的路由器模型。如图6所示,触摸“丰碑永驻”显示相关文本和图片介绍,触摸“play video” 播放视频。基于 Unity3D+ARCore 设计了平面识别应用,如图7所示,摄像头扫描到办公桌平面即显示校园楼宇模型,降低了图片标识物带来的使用限制,提高了应用的实用性。——论文作者:杨 路1,2 ,王 松3 ,刘逸豪4
[参考文献]
[1]金振威 . 移动学习环境下增强现实技术的应用[D]. 长春:东北师范大学,2014:15-18.
[2]周俊威 . 手机增强现实虚实注册关键技术研究[D]. 武汉:华中科技大学,2011:22-25.
[3]蔡苏,王沛文,杨阳,等 .增强现实(AR)技术的教育应用综述[J].远程教育杂志,2016(5):27-40.
[4]吴丽丽,李子运,张田.增强现实技术在移动学习中的应用初探[J]. 现代教育技术,2011,22(7):98-100.
[5]程志,金义富 . 智能手机增强现实系统的架构及教育应用研究[J].中国电化教育,2012(8):134-138.
[6]陆可.基于移动增强现实的数字博物馆应用研究[D].西安:西安邮电大学,2015:47-52.
[7]谭嫄嫄.增强现实技术在中小型博物馆中的文物展示设计中的应用前景[J].求知导刊,2014(9):135-136.
[8]杨国强.基于AR技术的手机卡牌游戏的设计与实现[D]. 长春:吉林大学,2016:4-6.
[9]Ariadne. Augmented reality in education: The SCARLET + Experience[EB/OL]. http://www.ariadne.ac.uk/print/issue71/ skilton-et-al,2018-06-09.
[10] Binghamton University Libraries. The AR magic book project[EB/OL].http://library2.binghamton.edu/news/arm b/2014/12/15 / ar-magic-book-museum-debut/,2018-06 -09.
[11]CAI S,SONG Q. AR-based remote video learning system [A]. Proceedings of 17th IEEE International Conference on Wireless,Mobile and Ubiquitous Technology in Educa⁃ tion,WMUTE 2012[C]. Takamatsu,Kagavwa,Japan: IEEE Computer Society,2012:322-324.
[12]杨俊英 . 基于 Moodle 平台的网络课程交互设计研究 ——以《远程教育学基础》为例[J]. 廊坊师范学院学报(自然科学版),2015,15(4):61-63.
文章名称:基于增强现实技术的沉浸式交互应用设计