APP下载

虚拟化移动数字图书馆的关键技术研究

2016-02-07吕学明

网络安全技术与应用 2016年11期
关键词:漫游引擎虚拟化

◆吕学明

(山西旅游职业学院 山西 030006)

虚拟化移动数字图书馆的关键技术研究

◆吕学明

(山西旅游职业学院 山西 030006)

本文将数字图书馆建设与最新的3D虚拟、移动开发技术相结合,实现了数字图书馆的立体化、移动化,为用户提供了更加直观便利的图书资源共享服务。并针对具体的系统开发工作进行了虚拟功能规划与关键性技术应用的研究与实践,为现有数字图书馆的虚拟移动服务功能拓展提供一定的参考依据。

数字图书馆;3D虚拟;移动开发;Unity3D引擎

0 引言

随着移动通讯技术与计算机网络技术的综合发展,基于移动端的数字图书馆也得到了快速普及和应用,这一新型的图书资源共享方式为各类读者提供了更加便利的图书共享渠道,颠覆了传统的图书资源管理模式。在此基础上为了能进一步改善用户的数字阅读体验,为用户提供更加真实、立体且灵活的图书阅读方式,本文将尝试结合现在最新的3D虚拟交互技术进行数字移动图书馆的仿真建设。

1 虚拟化移动交互技术概述

虚拟化移动交互是借助计算机图形学实现的一种高端人机交互功能[1]。首先需要构建出高仿真现实环境的三维虚拟场景,然后利用移动终端的多点触控、重力感应等输入接口实现灵活的人机交互控制[1]。

目前虚拟化数字平台开发的模式主要有两种:一是借助各类计算机合成技术构建三维虚拟场景[2],例如2008年由IBM开发的“虚拟故宫博物馆”项目,就是采用了数字影像合成、图像压缩、立体声数字音响等多种计算机合成技术呈现出了一个基于PC端的三维仿真故宫博物馆,再通过传统的键盘、鼠标输入方式实现场景的交互浏览;二是利用现下比较成熟的3D虚拟引擎实现三维虚拟场景的搭建,例如网络中刚刚出现一些的虚拟旅游景区的推广演示项目,就是利用各类3D虚拟引擎实现3D场景的搭建和渲染,再结合引擎内置的UI组件实现软件的交互控制操作。

现下专用于构建3D虚拟系统的软件主要有Unity3D引擎、FAR CRY引擎、GAMEBRY0引擎等[3]。其中Unity3D(一下简称U3D)是2010年由Unity Technologies开发的一款较新的3D虚拟开发工具,它提供的开放性开发平台使其发展即为迅速,众多游戏开发者基于此平台不断开发出新的插件功能,使其在虚拟场景的渲染、人工智能寻路、UI界面设计、移动平台的移植等方面都更为优化、且易于实现。因此本文将选择Unity3D开发工具实现虚拟化数字图书馆的构建,并可支持基于Android移动客户端的访问。

2 虚拟化移动数字图书馆的设计与实现

2.1 虚拟化移动数字图书馆的功能设计

构建虚拟化移动数字图书馆,在功能设计上需具备以下方面的功能:

(1)图书馆全景漫游功能。在该功能模块设计中,首先设有全景浏览与分区域漫游两种模式,在全景模式下可浏览图书馆全貌,切换至区域模式后,可由虚拟大厅进入各个阅读区漫游;其次设置有两种漫游方式,第一人称视角漫游和第三人称视角漫游。前者直接以用户的视角实现场景漫游,代入感更为强烈,但可视范围较小。后者是由用户通过场景中的虚拟人物角色控制实现场景的漫游交互,代入感较弱,视线范围较广。用户可依据个人操作习惯进行漫游模式的切换。

(2)3D电子书阅读功能。在用户进行图书的选择和阅览时,本系统将提供仿实景的3D图书阅览与2D传统阅读两种模式。在用户浏览书架,选择图书时,可以3D的方式呈现各类图书场景;在进行单本图书阅读时可切换至2D阅读模式。

(3)基于移动端的虚拟交互功能。用于提供常规的界面操作控件,在界面布局上支持的分辨率版本有:1280×800(PC端)、960*540(Android中阶机)、1024×600(三星平板)。

(4)其他功能。除了原有的电子图书馆信息管理功能之外,另新增有3D模式下的漫游控制功能、场景跳转功能。由于3D软件的运行对系统性能要求较高,在移动端运行尤其需要考虑软件运行的系统开销问题,因此针对性能较低的移动客户端,还提供有关闭3D辅助功能的系统控制模块。

2.2 虚拟化移动数字图书馆实现的主要技术手段

针对虚拟化移动数字图书馆开发中的各个功能模块设计环节中,所涉及的关键性技术手段主要是为了解决以下问题:

首先是图书馆中各个区域场景的切换跳转功能实现,手动场景跳转可以通过控件调用Application函数来实现;场景的自动切换则需要通过边界碰撞检测技术来实现。碰撞检测技术可分为静态检测与动态检测,其中静态检测算法简单,检测速度快,但不够精确;动态检测算法较为复杂,但能够实现精确的碰撞检测,适用于较为复杂的场景环境。由于本系统中的虚拟场景并不复杂,同时考虑到软件的运行效率,选择了基于静态的包围盒检测算法。具体实现过程为:先在场景的边界处设置几何障碍物,并渲染为透明色,并为其添加包围盒碰撞属性;编写脚本,调用OnTriggerEnter方法,实现碰撞检测控制。主要代码示例如下:

其次是视角范围的调整,基于移动端的视角控制主要有两种方法:一是通过界面上绘制的UI手柄控件来实现视角的调整,但这种方式在实现视角的水平移动时更为方便,在视线范围的调整上并不符合移动用户的操作习惯,且反应不够准确;二是通过多点触控方式灵活调整视线范围,通过手指在屏幕上的划动快速调整视角远近,更为灵活准确。因此本系统主要采用多点触控方式实现用户角色的视线范围调整。

在U3D中已提前预置有结构体“Touch”,其中主要成员包含一个Touch类型的数组变量,最多可设置5个值,对应5点触控,根据Android系统性能,一般常用的到是单点触控与两点触控;position坐标变量,用于记录手指在屏幕上落点位置(二维坐标);枚举类型变量phase,用于判定手指在屏幕上的操作方式,例如其中的Moved控制器,用于判定滑动操作;Began,用于判定点击操作等。定义完成Touch结构体后,即可通过Input.touch方法调用实现触屏控制。

最后是软件运行效率的优化问题,3D类软件的运行往往对系统性能要求比较高。这主要是因为3D场景的渲染和显示需要占用大量的内存空间,如没有合理的内存回收机制,软件运行时间越长,系统效率就会越低。在移动端进行系统访问时,软件开销过大对系统性能的影响就会更加明显。

在本软件开发过程中,为了进一步降低系统开销,合理利用内存空间是必须要解决的问题之一。对此笔者主要通过以下技术手段对软件进行了优化改进:

(1)遮罩剔除技术,在U3D 5.0专业版内置的 Occlusion Culling 插件中提供有免费的Occlusion Culling(遮罩剔除)功能。利用该功能可以屏蔽场景中当前视角下被其他物体遮挡的模型,不对其进行渲染计算,以减少当前模型的渲染数量,从而减少对内存的占用。

(2)场景重复资源再利用机制,场景的频繁切换同样会造成系统的巨大开销,这主要是因为U3D默认的场景切换机制为了减少内存开销,每次切换场景后系统都会对上一场景进行自动销毁,如此切换场景就需要不断的重新加载场景资源。对于场景中共用的一些资源也要反复被销毁和加载。这样的内存回收机制,本意是为了减少内存的占用,但却忽略了多个场景中需要被重复调用的资源利用。针对这一问题笔者巧妙的利用了static(静态)初始化方法创建一个静态脚本,在脚本中将重复调用的场景资源定义为全局变量;然后通过DontDestroyOnLoad方法调用禁止销毁预先定义好的全局变量;再将脚本绑定到所需场景中的指定对象上即可使得重复资源不再被重复销毁和调用。

对于本软件开发过程中内存资源的合理调用优化方案的设计,除了以上两点之外,还可以从内存垃圾管理、高级脚本和本地引擎脚本之间的通信开销优化、动态对象库搭建、模型贴图材质共享等方面做进一步的改进与完善。这也将是本文下一步将要研究的主要内容。

3 结论

本文以虚拟化移动数字图书馆建设为重点研究对象,在简单了解了当前较为流行的3D虚拟开发工具——Unity3D引擎基础上结合最新的3D虚拟、移动开发技术对数字图书馆建设的进行了整体功能规划。并针对虚拟化数字图书馆建设中几个关键性技术问题,提出了切实有效的解决方案。以期为数字图书馆建设的未来发展方向提供一定参考依据。

[1]陆颖隽.虚拟现实技术在数字图书馆的应用研究[D].武汉:武汉大学,2013.

[2]何雪晨,陈振云,周自斌.虚拟现实技术应用教程[M].北京:清华大学出版社,2012.

[3]朱晴.3D 游戏开发技术设计与应用[D].上海:上海交通大学,2009.

[4]深入浅出聊Unity3D项目优化:从Draw Calls到GC.http://blog.jobbole.com/84323/.2014.

猜你喜欢

漫游引擎虚拟化
新海珠,新引擎,新活力!
基于OpenStack虚拟化网络管理平台的设计与实现
对基于Docker的虚拟化技术的几点探讨
霹雳漫游堂
三生 三大引擎齐发力
蓝谷: “涉蓝”新引擎
浅析虚拟化技术的安全保障
H3C CAS 云计算管理平台上虚拟化安全防护的实现
NASA漫游记
边走边看:漫游海底 梦想成真