马红芝
编者按:增强现实交互技术作为一种新兴的智能技术,能够给用户带来良好的沉浸感和交互体验,已被广泛应用于多个领域。这篇文章分析了增强现实系统的关键技术,提出了基于Unity3D+Vuforia的增强现实应用开发方案,设计实现了一款具有增强现实和交互功能的石刻碑文识别App,并在搭载Android操作系统的手机端进行了测试。
引言
增强现实技术(Augmented Reality,缩写为AR)是将计算机生成的虚拟物体、场景或者提示信息叠加到真实世界的场景之中[1],从而增强用户对现实世界的感知。增强现实技术因其具有虚实结合、强交互、高融合等特性,深受公众特别是年轻群体的欢迎。近年来,随着科技的不断更新,特别是智能手机等移动设备的普及,基于增强现实技术的应用越来越丰富,已广泛应用于工业、安防、教育、医疗、文旅、游戏等多个领域。国外方面,谷歌公司自2012年起持续发布了AR眼镜Google Glass、AR开发平台ARCore、AR项目Project Tango,微软公司开发的AR头戴设备Hololens已在美国军工领域进行规模化的应用。国内方面,华菱湘钢利用5G+AR技术实现了跨国远程装配,昆明医科大学第一附属医院借助“三维数字新冠病毒远程会诊系统”进行了AR会诊,百度运用AR技术打造的智能旅游,重现了圆明园遗址原貌,为游客带来全新的沉浸式游览体验。
增强现实系统的关键技术
一般来说,增强现实交互程序的工作流程是:(1)获取现实场景中的信息;(2)对现实场景中的信息进行跟踪识别;(3)生成虚拟场景,并与现实场景进行虚实叠加融合;(4)在用户终端显示,并通过UI交互界面进行交互。
在整个过程中,注册追踪、虚实融合和人机交互等技术是关键。
(1)注册追踪技术。注册(Registration)是用于建立虚拟空间坐标系、真实空间坐标系,以及两者之间的转换關系,进而将虚拟物体注册并融合到真实世界的正确位置上[2];跟踪(Tracking)则用于根据不断变化的用户位置和视角,实时重建空间坐标系。注册跟踪方法有基于硬件设备和基于软件处理两种,而其中基于软件处理的方法主要是指计算机视觉的跟踪定位技术[2],可分为基于标识物的方法和基于自然特征的方法。
(2)虚实融合技术。该技术用于虚拟内容在现实场景中叠加显示、遮挡处理,实时光照调整,阴影投射,从而保证虚拟信息与现实场景在视觉上的有机结合。
(3)人机交互技术。用于处理人与计算机之间的信息交换。常用的AR交互有语音控制、手势跟踪、眼球跟踪、动作捕捉、触觉反馈等。
Unity3D引擎简介
Unity3D是由Unity Technologies 公司开发的可视化开发工具,可用于创建和运营交互式实时2D和3D内容,支持手机、平板、PC、游戏主机、AR和VR设备等多种平台。对于开发者来说,Unity有供免费使用的版本,对硬件设备的要求较低,支持C#语言编程,开发难度低,还拥有丰富的第三方插件和强大的开发者社区支持[3],在Windows、Mac OS和Linux等各操作系统下的开发都比较友好,尤其适合于移动端的3D应用程序开发。从增强现实交互应用程序的开发需求来看,由于Unity拥有高优化轻量级的图像渲染管道、可高效实现逼真模拟和交互体验的物理引擎,且支持从外部导入多种格式的贴图、动画和模型,采用Unity开发AR应用程序快速高效,目前已成为开发者的主流选择。
Unity编辑器界面由层级(Hierarchy)、场景(Scene)、游戏预览(Game)、属性检视(Inspector)、项目(Project)五个部分组成。每个Unity应用程序项目都是由多个场景文件组成,而每个场景又是由多个游戏物体(GameObject)在三维视角下按照一定的位置关系搭建而成。场景摄像机视野范围内的物体将被实时渲染在画面上。通过编写脚本来控制游戏物体实现实时交互。Unity的脚本是由一系列事件函数构成的。每一个事件函数在合适的时机被调用,从而完成游戏周期。MonoBehavior类、Transform类是重要的类。默认情况下,通过Unity新建的脚本都是继承自 MonoBehaviour类的。每一个游戏物体都必然有一个Tranform组件,可通过编写脚本来操控该物体的位置移动、方向旋转和大小缩放。
增强现实开发工具包Vuforia
当前,在增强现实领域已有非常丰富的开发工具包(Software Development Kit,简称SDK),其中影响较大、应用较广的SDK有ARToolKit、Metaio、Vuforia和EasyAR。这些SDK都可以支持Unity3D集成开发。
Vuforia SDK最早是由高通公司开发、后被PTC公司收购的一款专用于移动设备的增强现实开发工具包,支持Unity3D、Android、iOS、HoloLens和UWP等多种平台。Vuforia性能优异,成熟度高,并且面向广大开发者提供了免费使用版本。借助Vuforia,开发者们可以实现真实世界中的虚拟信息叠加,在移动终端设备的显示屏幕上将终端摄像头捕捉到的现实场景与虚拟场景进行叠加现实,达到对现实世界的增强体验。Vuforia SDK内部封装了用于图像识别的计算机视觉模块,开发者们只需要设置好一系列参数,就可以开发出自己的增强现实应用程序,这使得非计算机专业人士也能轻松创建出个性化的增强现实系统。
Vuforia SDK的开发模块主要有:摄像机(Camera)、图像转换器(Image Converter)、追踪器(Tracker)、视频背景渲染器(Video background renderer)、应用程序代码(Application Code)、设备数据库(Device Databases)、云数据库(Cloud Databases)、文字目标(Word Targets)、用户自定义的目标(User Defined Targets)等。
基于Unity3D+Vuforia的增强现实应用开发
工作原理
基于Unity3D+Vuforia的增强现实应用程序的工作原理可以表述为:(1)获取摄像头的图像;(2)Marker标识的识别;(3)Marker标识的位置和方向检测;(4)在摄像头上的图像上叠加动画模型等虚拟信息后显示在屏幕上。
增强现实应用程序的整个开发工作可以分成离线部分和在线部分。离线部分主要是素材的制作。包括标识物的选取和预处理、虚拟世界中的模型制作、三维场景的搭建等工作,可以先经图像处理软件和三维建模软件(如3dsMax)进行处理,然后导入Unity3D中最终处理完成。而在线部分则需要处理标识物的识别、虚实融合和人机交互,这需要借助Vuforia SDK来完成。
开发环境的准备
本项目是在Window10系统中使用Unity3D 2020版本,结合Vuforia SDK插件进行开发的。首先下载并安装Unity3D。第一次使用Unity3D需要进行注册,注册登录后就可以下载软件并使用Unity3D资源商店中提供的资源。Vuforia SDK的使用同样需要注册。注册登录Vuforia官网后,在Develop页面,选择“License Manager”,点击Get Development Key,填好应用程序名称等内容,为“浯溪碑林”增强现实App申请一个License Key。这里申请好的License Key将用于后续AR Camera的设置。需要注意的是,如果使用的是Unity3D 2017之前的版本,需要事先在Vuforia官网上下载UnityPackage插件包,该插件包将用于Unity3D软件中应用程序的开发。
系统设计
永州处于湖南省南部,永州摩崖石刻代表了碑文石刻艺术的突出成就,其中浯溪碑林等7處摩崖石刻被列入国家级文物保护单位,具有很高的文化价值、历史价值和艺术价值。这里以浯溪碑林为设计案例,开发基于Unity3D的增强现实交互App,研究利用增强现实技术在智能手机上实时呈现摩崖石刻的书法文学等多媒体信息。
(1)系统框架设计
本系统的总体框架如图1所示。
(2)功能模块设计
“浯溪碑林”增强现实交互App在智能手机中安装后,游客使用该App拍摄摩崖石刻碑文或者门票上印制好的碑文图片,就可以在手机屏幕上看到当前碑文的年代、作者、书体类型、记录内容、意蕴等内容,让游客对摩崖石刻文化的内涵和意义有更加具体的了解,助力石刻文化的理解和欣赏。
各个功能模块的划分如下:
UI界面模块:在呈现浯溪碑林实景上的叠加信息时,可以通过人机交互技术实现点击浏览文本信息、收听音频讲解、查看动画,也可选择重新进行拍照识别。
AR识别图库模块:是由浯溪碑林景点实地采集的碑文图片集,并上传至云端识别图库。这个图库是保障游客能使用手机拍照识别碑文进而呈现AR效果的重要一环。
AR跟踪模块:该模块用于捕捉游客手机等移动智能终端的摄像头视角的变化,并据此对虚拟信息资源进行动态匹配,对显示位置进行实时调整,从而保证虚实叠加的和谐性。
AR虚实融合模块:该模块用于处理现实场景与虚拟信息的叠加融合,包括音频(文字解说及音效)、视频、动画、文本信息等内容,帮助游客更好地理解摩崖石刻碑文信息。
AR显示模块:该模块处理现实场景与虚拟信息的叠加显示,可根据交互实时更新。
核心处理模块:主要处理场景管理、碰撞检测、AR跟踪、消息机制等。
系统实现
该App工作的流程是,首先将手机摄像机镜头实时获取的图像进行处理,与云端对应的数据库进行比对,匹配成功后激活相应的动画、视频、音频、文本信息,将其与实景进行虚实叠加融合,并响应用户输入控制,实现人机交互。
整个系统的开发实现过程可分为前期准备、制作实现、系统测试三个环节。
(1)前期准备
本阶段的工作主要是采集碑文信息和构建媒体库。① 采集碑文信息。使用高清数码相机等设备到浯溪碑林景区实地拍摄碑文的清晰图像。这些图像将用于构建AR识别图像集以及三维模型的贴图材质等。② 媒体库的构建。将采集的图片进行处理,形成AR识别图像集,并制作动画、视频、音频等配套内容,搭建涵盖动画、模型、视频、音频、文本信息等内容的媒体库。本系统的媒体素材主要可分为声音、文本、三维动画、视频四大类。其中声音内容主要是碑文解说,可请专业播音员录音,并适当地使用声音剪辑软件进行处理。文本内容主要用于呈现摩崖石刻碑文的年代、作者、书体类型、记录内容等信息。本项目通过查阅书籍文献、邀请永州摩崖石刻专家学者给予指导,来形成系统化的文本信息库。三维模型与动画可以让游客在移动终端上使用单指、双指旋转、缩放石碑的立体动态模型,增加趣味性。本系统使用3dsMax软件进行模型和动画的制作,先后完成建模、UV贴图、三维动画和渲染等四个主要步骤。视频内容主要是以摩崖石刻为主题的情景剧、短视频等,本项目使用Premiere和剪映软件进行处理。
(2)制作实现
① 在Vuforia官方网站上创建并上传识别图库,并生成Unity资源包(UnityPackage)。首先登录Vuforia官网,在Traget Manager选项卡下,点击Add Database,开始创建数据库,在此设置好数据库的名称和类型即可。然后在该数据库中点击Add Target,选择识别对象的类型后,上传该对象的图片或描述数据即可。目标识别图片库来自于前期准备阶段采集的浯溪碑林景区中的碑文图像。最后点击Download Database,选择Unity Editor,Vuforia将把该数据库生成为一个Unity资源包。
② 在Unity3D中新建项目,导入Vuforia开发包,并配置好Vuforia各项功能。通过点击“GameObject”→“Vuforia”→“AR Camera”,在场景中添加AR Camera,然后设置它的“Vuforia Behavior”组件即可。这里会用到之前注册好的License Key,并且需要加载并激活前述步骤中准备好的数据库。在Hierarchy面板中点击添加“AR Image”,在场景中添加一个“Image Target”,在Inspector面板中设置属性,将Image Target Behaviour的数据库设置好。
③ 编写代码实现各个功能模块。在Unity3D项目中导入事先处理好的贴图、模型、动画、声音等素材资源,使用Unity3D脚本编程、动画系统控制好声音、动画、文本等信息呈现的时机条件和执行逻辑,使得“浯溪碑林”增强现实App的音频视频动画相协调,最后编程实现人机交互功能。
(3)系统测试
系统开发完成后,在Unity3D中选择发布平台,本系统发布在Android平台,最终产生了一个apk文件。将该apk安装在手机端测试使用效果。运行该App后,用手机摄像头对准浯溪碑林景区中的碑文,即在手机界面上显示识别结果。经反复测试,本系统功能稳定,声音、动画、视频、文本等多媒介信息能正确显示并协同工作,视频和动画播放流畅,各交互功能正常,达到了增强现实体验的效果。
结论
增强现实技术将现实世界与虚拟世界融合起来,是人们体验世界的新颖方式。使用Unity3D+Vuforia进行移动增强现实应用开发已经是较为流行的做法。本设计开发了一款能够识别石刻碑文图像,并呈现相应的音频、视频、动画、文本等信息的增强現实交互App,能在搭载Android系统的多个手机上稳定运行。随着科技的不断进步,增强现实技术的应用领域必将更为广阔。
参考文献:
[1]徐敏,童强.一种基于Unity3D+Vuforia的增强现实交互App的开发[J].现代计算机(专业版),2016(12):71-75.
[2]罗永东.基于Unity3D的移动增强现实技术与应用研究[D].青岛科技大学,2015.
[3]郭晓敏,申闫春.基于Unity/Vuforia的AR导览系统研究[J].计算机仿真,2019,36(08):165-169.
本文受到永州市2016年度指导性科技计划项目“基于Unity3D的增强现实交互App开发”(永科发[2016]27号)支持。