基于AR和移动终端的博物馆智能导览系统的设计与实现
博物馆传统的导览方式主要有讲解牌、讲解器、专业人员讲解等。传统的展览、导览方式已经不能完全满足公众的需求。随着数字化和移动计算技术的高速发展,“互联网+”将成为博物馆的发展方向。将移动计算、增强现实(AR)等技术应用于博物馆的展览和导览,能够有效增加展览的形式,拓展展品的背景信息,同时能够为参观者带来全新的互动体验,进而更好地发挥博物馆文化传承与服务大众的职能。AR技术是在虚拟现实的基础上发展起来的一种技术。增强现实具有虚实结合、实时交互和三维配准的特点。将其应用于博物馆的展览和导览,能够实现虚拟内容与真实场景的结合,不仅能为参观者提供关于展品的文字介绍,还能够叠加图像、配乐、语音解说、视频以及三维模型等信息,进而把以静态为主的参观方式转变为多感官互动参与的动态参观方式。本智能导览系统的设计结合了华航航天博物 馆的布展实际情况,采用 C/S 结构,客户端运行于Android平台,基于Unity3D引擎和增强现实SDK——Vuforia开发;数据库部署在云端。使用本系统,参观体验者可以通过多种形式获取展品的相关信息,获得完全不同于传统的观展体验,从而提升人们对航天科技知识的认知效果。
一、Vuforia sdk简介
本系统基于Vuforia sdk实现了AR 识别功能。Vuforia sdk能够完美的兼容unity3D开发,是高通公司推出的针对移动设备扩增实境应用的软件开发工具包。开发者借助它可以轻松地为任何应用添加增强现实方面的功能,允许开发者识别图片和物体,或者在真实世界中重建环境内容。Vuforia sdk的关键特性包括对图片、物体、文本和标记的识别和追踪,以及重建环境,可将预先制作的3维模型叠加在真实场景中。Vuforia 平台主要包括三个组件,分别是Vuforia引擎、工具集和云识别服务。Vu⁃ foria sdk是一个客户端类库,可以静态集成入开发者的应用;其工具集可用来创建对象、管理对象数据和确保应用正确授权;云识别服务可根据开发者 需要识别和管理大量的图片以及当数据库需要频 繁更新时,提供数据管理服务。
二、系统设计
2.1 系统功能
系统主要功能包括:为用户提供展品相关的信息,包括与展品的简介、相关背景信息;展示形式包括展品有关的图片、模型、视频和动画,以及讲解语音;交互控制方式包括点选、拖动旋转、增强现实标识扫描、三维静态呈现、三维动画播放、音视频播放和图片文字显示;通过使用基于移动设备的增强现实SDK的扫描特征码识别功能,导入展品的背景信 息,如文字、音视频、模型,与实际展品虚实结合,增强交互性和趣味性;为参观者提供定位和导航服务。
2.2 系统设计
系统包括服务器部分和客户端部分,采用模块化设计,支持网络三层架构。服务器部分部署在云端,主要运行数据库以实现各类信息和资源的管理、存储功能。客户端包括登陆注册、博物馆概览、场景管理、增强现实、动画等资源管理、地图和导航共6个功能模块。演示内容包括与展品有关的简介信息、背景、应用领域说明等;演示形式包括展品有关的图片、模型、视频和动画,以及讲解语音。交互方式包括点选、拖动旋转、增强现实标识扫描、三维静态呈现、三维动画播放、音频播放和图片文字显示。此外还可提供展馆的内部布局、参观者当前位置和路径规划。
三、系统实现
在系统的详细设计和实现阶段,涉及三方面的工作:资源编辑制作、应用界面和功能的设计和编程、数据库和服务器的设计编程。在资源编辑制作方面,主要工作为制作和编辑展品相关的解说音频、文字和图片信息,以及制作模型、动画和特效,具体不再赘述。在应用界面的实现上,采用了Unity引擎的UI界面自动实例化技术,采用Unity引擎自带的一个完整UI系统——UGUI来创建和实例化界 面。以下阐述系统主要功能的设计与实现。
3.1 AR扫描
基于Vuforia SDK实现AR扫描功能的开发流程如下所表述:首先在Vuforia 官网注册开发者账号并得到一个开发者key 后,在Vuforia的基于web的工具 ——Target Manager下面创建一个数据库,用于标识物的管理。根据实际的需求,从多个角度对标识物进行拍摄,将图片上传到数据库,Vuforia的服务。会对拍摄的图片进行实时的评分,并反馈到对应的个人数据库中。然后在 Target Manager 的 WEB 接 口下载数据库,与移动AR开发包(包括Vuforia扩展包、模型包、特效包)一起导入到Unity3D 中。成功导入后,在 Unity3D 工程的 Assets 目录中下会增加 一个Vuforia文件目录和一些其他文件。 然后在Unity3D中创建场景,添加ARCamera和 ImageTarget。设置 Vuforia Configuration,将得到的 key复制粘贴到App license Key中,设置相机方向, 默认为 Camera default,代码会自动检测设备的相机,默认会开启后摄像头。待相机设置完毕后点击 Add Database,将之前存放图片的数据库增加进去,然后在Image Target Behaviour里面点击Add target 按钮,把需要识别的目标图片添加进去,最终在设置里面把 Vuforia Augmented realit 选项勾选上,至此AR基本操作设置完毕。在场景中将 Main Camera 删除,将Vuforia/Pre⁃ fabs目录下的ARCamera相机拖至场景中。将Vufo⁃ ria/Prefabs的Image Target也拖入至场景中,选择要识别的照片,这里的图片是事先通过Vuforia官网上传到数据库的。最后对识别的图片进行场景的编辑,例如添加3D模型,视频等。本模块最重要的部分是场景制作。在制作模型时,当对其添加动画时,要同时进行脚本的编辑, 最后添加在模型上面。对模型的缩放、拖拽等都需要编辑脚本来实现。接下来为代码实现部分,将需 要显示的三维模型物体自动添加到 ImageTarget下面,然后实现AR相机的自动开启和关闭。
3.2 视频播放
视频和动画播放主要用到 Unity3D 的 Video Player 组建和 Audio Source 组建,主要包括视频的初始化,Video Player和Audio Source的自动添加和 一些关键的设置,主要的类为PlayVideo,该类主要包括 VideoPlayer 组建的自动态添加,Audio Source 的自动添加,Url 的设置,也可以播放本地的视频, 添加完毕之后需要对组建进行初始化设置,以及计算视频长度和时间。
3.3 导航模块
本应用的导航模块使用蜂鸟视图的FengMap Android SDK进行二次开发。该SDK提供了多种工具以及其他附加功能,便于开发者在自己的应用中快速开发与室内地图和导航相关的功能。以下重点介绍地图的初始化、显示和路径规划的实现。
3.3.1 SDK配置和地图显示
首先要对SDK进行相关的初始化,并完成对地 图的添加。我们制作了一个简单的2D室内地图, 将一些展品的位置信息,以及展馆和附属设施的位 置信息标注在地图上。然后提交并通过了审核,同时返回了一个地图ID号。最后在配置文件中引入该地图ID,并初始化SDK。特别对SDK引用的Con⁃ text全局变量进行初始化。地图初始化时可配置楼层显示数量,由于我们只制作了一层楼的地图,故使用了其默认显示。地图的最大和最小显示级别给出了地图在应用中可以放大和缩小的边界值。 将这两个值分别确定为 28 和 18,并将初始级别确定为23。此外还设置了默认朝向以及地图初始化后为二维显示状态。
3.3.2 路径规划的实现
FengMap Android SDK支持设置起点和终点的路径规划,实现路径规划最重要的就是找到起始坐 标和终点坐标。首先要初始化路径分析器。由于在退出地图后会释放路径分析器对象,所以在初始化时首先要根据参数 Path 获取一次当前的分析器对象,然后添加模拟起始点。其次,根据给定的起 点和所处的楼层进行路径分析。如果分析成功,即可返回路径经过的坐标点集合。
3.4 数据库设计
本系统采用MySQL数据库管理系统,创建数据库名称为 museum,用以存储系统所需数据。共包含6个表,分别为参观者基本信息、扫描记录、展品信息、展厅信息、展品媒体信息和展品与媒体对应表。 参观者基本信息表包含的字段有参观者ID、参观者实名、登录密码、身份证照片和是否有过不适 当行为;扫描记录表包含参观者ID和扫描过的展品特征码ID两个字段;展品信息表存储的是展品或者展品的基本信息,包括展品ID,展品名称,展品所在展厅;展厅信息表只存储了展厅的基本信息,包括 展厅ID、展厅名称、展厅类别说明等信息;展品媒体信息表用来保存每件展品所对应的增强多媒体信息,包图片、音频、视频、三维模型等,字段中保存了这些资源的文件存储路径;展品与媒体对应表中每一件展品都有之对应的多媒体信息,通过展品编号 可以找到与之对应的多媒体信息编号,反之亦然。
3.5 服务器的搭建以及数据库的连接
3.5.1 客户端配置
在Unity3D中连接数据库必须为其添加必要的动态链接库,首先创建一个名为Plugin的文件夹,在文件夹下面添加 I18N.dll、I18N.CJK.dll、I18N.West. dll、Mysql.Data.dll、System.Data.dll、System.Drawing. dll。目前使用的动态链接库为.Net 4.5,这六个动态链接库缺一不可。
3.5.2 服务器配置
本系统的服务器端部署在光子服务器(Photon⁃ Server),服务器的具体配置如下: 首先,创建类库将 photonserver 下载的 lib 文件夹中三个程序集引用添加进来;第二步,改写服务器端 MyGameServer 类,将它去继承 ApplicationBase 这个类库,并向里面添加 ClientPee 类,最后开始修改 PhotonServer.config 配置文件;第三步,向工程里面添加 log4net.dll 和 ExitGames.logging.log4Net.dll, 接着修改log4net.config 配置文件,并在复制到输出目录改为始终复制。
3.5.3 在Unity客户端发起与服务器的连接
把PhotonServer中的两个配置文件直接导入到 unity的Plugins文件里面,然后创建一个空物体,命名为 PhotonEngine,并在上面创建一个脚本 Pho⁃ tonEngine(用来管理与服务器端的连接),打开脚本写入连接的信息。在 unity3D 的 PhotonEngine 脚本 里面有一个方法专门接受服务器的响应(OnOpera⁃ tionResponse);然后在这个方法中去接收,同样用 (opCode)方法中去指定接受哪个响应。在处理客户端的请求的 (OnOperationRequest)方法里面写 入,发送后在unity客户端里面的PhotonEngine类里面有一个方法( OnEvent),这个方法表示当服务器 端向客户端发送通知时会通过(OnEvent)来进行响应。最后利用 NHibernate 数据库映射连接到数据库。
四、系统测试
本系统的开发实现采用了引擎和工具,开发过程中对每个主要功能模块都做过功能测试。系统客户端程序编译成功后,首先在PC机上进行测试, 然后再下载到移动设备(如手机)上进行功能测试。客户端在 PC 机上测试时,进入展品界面后的效果如图所示;点击“AR扫描”之后进入AR扫 描界面,将扫描框对准相应图片,即可利用AR展示出3d模型进行细致观看。
五、结语
本导览系统实现了预期的功能,不仅可以为参观者提供展品的相关信息并播放、叠加显示各类增强信息,为参观带来全新的交互体现,还可以收集参观者的偏好并归档形成大数据,为展品陈列和内容的更新优化提供依据。下一步的工作主要包括展品素材资源的编辑管理客户端的实现,以及AR相关功能和导航功能的拓展,最终将本系统开发成为一个具有较高实用价值的博物馆智能移动导览系统。