李传帅,申闫春
(1. 重庆工业职业技术学院,重庆 401120;2. 北京信息科技大学计算机学院,北京 100192)
红色旅游是以弘扬中华民族精神为主题旅游活动,不仅是参观游览纪念地,观看陈列品,更强调传承其所承载的红色故事、革命精神,革命知识,培育新时代奋斗精神。因此,增强现实科技展示技术成为研究热点之一,它能够更加多感官、多层次、身临其境的展示红色旅游承载的内涵信息,它把计算机生成的丰富虚拟信息叠加到实景中,实现对真实环境的信息增强,实现虚实结合、实时交互的体验,使旅游者通过手机屏幕就可以体验红色旅游的文字简介、语音解说、视频播放、三维场景浏览,更加有利于传承中华民族的红色文化和优良传统[1]。
目前,AR系统开发应用技术主要有:高通公司的Vuforia、日本公司的ARToolKit、我国视辰信息科技(上海)有限公司的EasyAR。其中,ARToolKit仅支持PC平台开发,Vuforia费用较高、开发难度较大,而EasyAR提供免费支持,其成熟度已经趋于完善,成为优秀的国产AR软件。与Vuforia相比,具有高效、易用、简单的优点。EasyAR让增强现实技术变得简单易用,更加方便的应用到展览展示、旅游导览、广告推广等活动之中。因此,EasyAR已经逐渐成为AR解决方案的最好选择。但是,市场上应用的增强现实导览系统,存在自然特征识别数据量大、计算耗时长、标志物识别准确率较低、受光照、遮挡影响大、易导致跟踪失败等问题[2]。
针对这些问题,本文提出了一种基于EasyAR的增强现实导览方法,采用3DsMax对场景进行三维建模,采用Unity开发交互设计程序,采用EasyAR检测和跟踪标识物特征点,叠加显示对应的增强现实仿真模型、播放视频、动画、音效。
聂荣臻元帅陈列馆位于中国重庆市江津城郊,是全国爱国主义教育示范基地,馆内陈列聂帅生平事迹照片近300张,文物、史料400余件,党和国家领导人的题词和书,画名家创作的书画近百件,此外还收藏照片3000余张,文物数百件,名家字画500余件,聂帅生前藏书近万册。馆内还陈列了聂帅为国防科技做出巨大贡献的标志性成果,包括:两弹一星、长征系列火箭、国产先进武器装备、各种人造卫星等模型40余件[3]。因此,特别适合采用AR科技展示方法,开发聂荣臻元帅陈列馆导览系统,给人以身临其境的体验。
基于EasyAR的移动手机终端增强现实自动导览方法,是把计算机系统制作的虚拟场景、三维模型、视频、音频、文字、动画与真实环境、照片、模型相叠加而在手机终端得到的增强视图场景。其关键技术是:采用3DsMax对虚拟场景和虚拟实体进行三维建模,采用视音频、动画等专业编辑软件制作用于虚拟场景中的视频、音频、文字、动画等需要叠加展示的信息,采用Unity3D进行场景实时交互设计,采用EasyAR引擎检测和跟踪标识物特征点,根据标识物的位置,显示对应的增强现实场景、叠加虚拟信息、显示文字解说、音频解说、播放视频、动画、音效,采用人机虚拟交互方式进行导览交互[1]。
以开发聂荣臻元帅陈列馆增强现实自动导览系统为实际案例,一个典型的AR应用系统通常由视频采集、虚拟场景生成、视音频制作、注册定位、视图识别、视图跟踪、视图渲染、视图增强叠加、真实场景叠加虚拟场景、手机增强视图显示输出模块构成。其系统框架如图1所示。
图1 增强现实导览系统总体框架
视频采集模块用于实时获取陈列馆真实的照片、模型,实时追踪定位、捕捉标志物。虚拟场景生成模块用于实时产生增强的虚拟场景,以及其中的三维模型、视频、音频、文字、动画等虚拟视图。注册定位模块用于实时获取相机焦距、宽高比、所采集真实视图位置、方位等参数,以便确定实、虚之间的映射关系,将虚拟场景叠加至真实场景的合适位置。视图识别模块实时将采集视图与目标识别视图进行比对,以便确定是否叠加虚拟场景。视图跟踪用于实时追踪定位、捕捉标志物。视图渲染模块用于实时渲染真实场景与虚拟场景视图。视图增强叠加模块用于当确定虚、实叠加时,生成融合的虚拟场景叠加真实场景的视图。真实场景叠加虚拟场景模块用于实时产生融合的虚拟场景叠加真实场景的视图。手机增强视图显示输出模块用于显示虚实融合的增强视图。
采用EasyAR结合3DsMax、Unity3D开发AR场景应用,3DsMax对虚拟场景和虚拟实体进行三维建模,Unity3D进行场景实时交互设计,EasyAR实现检测和跟踪标识物特征点,将虚拟场景叠加于真实场景,显示增强现实场景视图。
EasyAR是增强现实引擎,是为移动平台的增强现实应用系统提供的感知真实世界能力的开发工具,提供一整套增强现实功能组件,使非计算机专业的开发人员也能轻松创建、编写、发布增强现实应用系统。EasyAR 开发的AR应用能够在真实世界中叠加虚拟场景,利用移动终端的显示屏将虚拟对象和摄像头捕捉的现实场景结合到一起显示,从而实现对现实世界增强虚拟信息的作用[1]。
EasyAR提供的主要开发模块有:平面图像跟踪(图片识别)、3D物体跟踪(物体识别)、运动跟踪、稀疏空间地图、稠密空间地图、表面跟踪、多目标识别与跟踪、录屏、透明视频播放等。另外,EasyAR支持Android ARM64架构;支持Windows,Android,IOS;提供功能完善的Unity插件;支持WebAR和微信小程序应用的开发;并提供大量完善的开发案例、中文教程文档和社区服务[4]。
依据EasyAR的导览方法,提出了基于EasyAR的增强现实导览系统的开发方法,能够在移动终端实现无缝切换虚实叠加的AR效果。该方法的总体流程如图2所示。
图2 开发AR场景应用总体流程
开发AR场景应用,首先要采集想要增强信息的图像,制作AR识别图像集,在Unity中安装EasyAR,配置EasyAR的注册码Key,配置支持AR应用的手机,应用特征点识别算法,以便识别AR图像,并叠加显示增强的虚拟信息;然后,在Unity中交互开发AR场景应用,建立图像识别AR程序,导入3DMax制作的模型及其贴图,导入视音频编辑软件制作的视音频文件,导入动画编辑软件制作的动画文件;最后,编写导览代码,开发AR各个功能模块,生成并发布Android APK应用,在手机端体验、测试,以便改进、完善。
在陈列馆用手机查看图片时,AR导览系统会实时处理标识物图像,直接在手机端的识别图像集中进行比对,激活相对应虚拟场景、视频、动画、音频、文字叠加到实景应用中,这一点比Vuforia技术更加实时、高效,经过人机交互控制,使用自己的手机便可以导览整个陈列馆。与之前的AR开发方法相比,该方法的主要优点是:可以实现多标识物的自动识别、无缝切换,具有光照变化和遮挡处理的自适应功能,支持多模式的虚实叠加功能(三维模型、动画、视频、文字等),具有丰富的交互性(虚拟按钮、操作杆、缩放、漫游等),从而解决了自然特征识别数据量大、计算耗时长、标志物识别准确率较低、受光照、遮挡影响大、易于导致跟踪失败等问题[1]。
3.3.1 搭建EasyAR开发环境
1)采集图像,制作AR识别图像集。例如:在聂荣臻元帅陈列馆拍照一张展出的氢弹照片。
2)下载EasyAR。在EasyAR官网(https:∥ www.easyar.cn)上注册一个自己的账号,以便获得个人免费版。登录EasyAR官网,单击下载EasyAR。
3)在Unity中安装EasyAR。以安装到Unity 2018.4.36f1版为例,介绍安装方法。解压缩下载获得的文件,产生一个文件夹package。启动Unity 2018,在D:EasyAR创建一个新的项目EasyAR1,单击Window,Package Manager,单击“+”,选择package中的 package.json。
4)在Unity中配置EasyAR的注册码(Key)。单击EasyAR,Sense,Configuration,需要在EasyAR SDK License Key输入你自己的注册码(Key)。获得Key的方法:登录EasyAR官网,开发中心,选择“我需要一个新的Sense许可证密钥”,选择免费、个人版。输入应用名称:EasyARProject1,Package Name(Android)的命名需要按照Android开发的包名命名规则命名,格式是:执行.公司名称.应用名称,输入Package Name(Android):com.syc.easyar project1,确认。单击应用名称EasyARProject1,得到授权的注册码密钥Key,单击右侧的“复制”,再回到Unity中,粘贴Key值到Unity的EasyAR SDK License Key中。
5)配置Android SDK、NDK,切换到Android平台。单击Edit,选择Preferences,External Tools,在SDK中配置Android SDK,例如:D:/Android/android-sdk。在NDK中配置Android NDK,例如:D:/Android/android-ndk-r16b。单击File,Build Settings,Android,Switch Platform,关闭。
6)配置支持AR应用的手机。单击Edit,Project Settings,Player,Other Settings,Mini mum API Level,设置成:Android 8.0 ′Oreo’ (API level 26)。在Unity中Package Name默认的名字为:com.DefaultCompany.EasyAR3,修改为Android网站上注册的名称:com.syc. easyarproject1,确认。
3.3.2 开发AR场景应用
以氢弹三维模型的AR场景为例。
1)建立基础对象组AR Session,应用特征点识别算法。单击GameObject,EasyAR Sense,Image Tracking,AR Session(Image Tracking Preset)建立了一个跟踪预设图像的AR基础对象组AR Session(EasyAR)对象(结点)。
2)建立图像识别AR程序。单击Game Object,EasyAR Sense,Image Tracking,Target: Image Target(比对的图像目标)建立图像识别对象。选中Image Target,Source Type选择Image File,Path Type选择StreamingAssets,在D:EasyARAssets中,创建文件夹StreamingAssets,用于流式文件管理,实时跟踪目标图像文件,并拷贝图片文件qingdan.jpg到其中。Path中输入qingdan.jpg,Name输入qingdan,Scale输入0.2,跟踪器Tracker将会自动找到一个唯一对应的识别图像Image Tracker。
3)导入外部要展示的虚拟仿真模型。采用3DsMax制作一个虚拟三维氢弹仿真模型及其贴图,导入到Unity项目面板的Assetsmodel中,再拖动到层级面板的Image Target里面,双击模型,可以聚焦看到图片和氢弹模型。调节识别图片与氢弹模型之间的位置关系:识别图片在XOY平面上,模型应在z轴的负方向上。修改氢弹模型的Scale为:x1.8y1.8z2。拖动模型到z轴的负方向:z值为:-0.3。
单击运行,但是,在Game中没有看到图片和模型,这是因为:EasyAR应用只是生成自己的对象,这个对象自动与主摄像机绑定在一起了,而主摄像机默认渲染的天空盒遮挡了AR对象,因此,需要去掉天空盒,才能看到AR对象。选中Main Camera,修改Clear Flags为Solid Color,并设置背景颜色为黑色,近平面为0.1。再单击运行,识别手机上的qingdan.jpg图片,便可以看到氢弹模型了。至此,一个基于EasyAR图像识别的AR场景应用程序便完成了,如图3所示。
图3 EasyAR增强显示氢弹仿真模型
4)导出Android APK包。发布为手机版的APK文件,以便安装到手机上用作旅游导览。单击文件File,发布设置Build Settings,单击选择加入当前场景,选择Android,单击发布Build,导出文件夹需要选择在项目文件夹外面,例如:D: testqingdanAR.apk。最后,把手机USB连线插入到电脑中,拷贝qingdanAR.apk到手机的Download文件夹下。
在手机面板上,打开文件管理,找到qingdanAR.apk,安装到手机桌面,运行qingdanAR,观看氢弹图片,看到氢弹仿真模型。
AR视频应用是识别图像,播放其对应的视频文件。其方法是:采用EasyAR结合视音频编辑软件、动画编辑软件、Unity3D交互功能开发AR视频应用程序,制作用于虚拟场景中的视频、音频、文字、动画等信息,Unity3D进行场景实时交互设计,EasyAR实现检测和跟踪标识物特征点,在真实场景叠加虚拟场景中的视频、音频、文字、动画等视图。
1)采集图像,制作AR识别图像。例如:聂荣臻元帅照片。
2)启动Unity 2018,创建一个新的项目videoAR1,安装EasyAR。
3)在Unity中配置EasyAR的Key。
4)切换到Android平台。单击File,Build Settings,Android,Switch Platform,关闭。
5)配置支持AR应用的手机。
1)建立基础对象组AR Session。单击GameObject,EasyAR Sense,Image Tracking,AR Session(Image Tracking Preset)建立了一个跟踪预设图像的AR基础对象组AR Session(EasyAR)对象。
2)建立图像识别AR程序。单击GameObject,EasyAR Sense,Image Tracking,Target: Image Target建立图像识别对象。选中Image Target,Source Type选择Image File,Path Type选择StreamingAssets,在D:videoAR videoAR1 Assets中,创建文件夹Streaming Assets,用于流式文件管理,实时跟踪目标图像文件,并拷贝图片文件nie.jpg到其中。Path中输入nie.jpg,Name输入nie,Scale输入0.2,跟踪器Tracker将会自动找到一个唯一对应的识别图像Image Tracker。
3)导入外部要播放的视频。右击Assets,创建文件夹Video,拖动视频nieshipin.mp4到此文件夹中。右击Image Tracker,创建一个Plane,调整Rotation为X90Y0Z180,Scale为:x0.1y1z0.07。选中Plane,添加一个视频播放组件,Add Component,Video Player,在Video Clip中添加视频nieshipin.mp4。选中Main Camera,修改Clear Flags为Solid Color,并设置背景颜色为黑色,近平面为0.1。
单击运行,识别手机上的nie.jpg图片,便可以看到聂帅视频了。至此,一个基于EasyAR图像识别的AR视频应用程序完成了,如图4所示。
图4 EasyAR增强显示视频应用
针对聂荣臻元帅陈列馆的特点,设计了基于EasyAR的聂荣臻元帅陈列馆导览系统的总体功能结构,如图5所示。
图5 导览系统总体功能结构
各模块功能简介如下:
1)UI界面:在呈现景点实虚融合增强现实景观时,对叠加的三维景点,可以通过人机交互功能实现景点漫游观看,浏览操作:点击、缩放、旋转、移动。
2)AR识别图库:创建AR识别图库是实现景点增强现实导览的重要环节。主要过程为:采集景点图像,上传云端识别图库,应用特征点识别算法,生成资源包。旅游者在景点旅游时,对感兴趣的景点用手机跟踪识别、比对景像特征,产生AR效果。
3)视图跟踪:手机端实时感知视角、位置变化,追踪定位,捕捉标识物,动态匹配实虚场景的位置关系。
4)视图渲染:实时渲染真实场景与虚拟场景视图,并进行最优化处理,适应视图叠加的渲染需求。
5)视图增强叠加:真实场景、虚拟场景、视频、动画、音乐、文字融合叠加,实现视图、视频、解说一体化导览。
6)AR视图输出:输出、显示实、虚增强叠加的视图。
在开发聂荣臻元帅陈列馆导览系统中,采用基于EasyAR的增强现实自动导览方法,用3DMax对各个景点进行三维建模,用视频、动画编辑软件制作视频、动画,用Unity开发交互设计程序,用EasyAR检测和跟踪标识物特征点,显示对应的增强现实仿真视图、播放视频、动画、音效。下面是三个景点的AR应用实例。
1)手机识别卫星照片,显示AR仿真卫星。如图6所示。
图6 卫星AR仿真视图
2)手机识别原子弹照片,显示AR仿真原子弹。如图7所示。
图7 原子弹AR仿真视图
3)手机识别长征火箭照片,显示AR仿真长征火箭。如图8所示。
采用基于EasyAR的增强现实导览系统开发方法,开发聂荣臻元帅陈列馆导览系统,为AR导览仿真提供一个最佳解决方案,解决了移动终端增强现实导览系统开发难度大、自然特征识别数据量大、计算耗时长、标志物识别准确率较低、受光照、遮挡影响大、易于导致跟踪失败等问题。提出一种基于EasyAR的增强现实导览方法,给出导览系统总体功能结构设计方案,给出AR场景应用开发流程,开发AR场景应用和AR视频应用的实现步骤。通过实例研究,进一步验证该方法的实用性。