APP下载

基于Unity 3D技术的某装备便携式虚拟训练系统研究

2014-09-01林德江秦国伟王国德涂善超

火炮发射与控制学报 2014年4期
关键词:插件手势对象

林德江 ,秦国伟,王国德,涂善超

(武汉军械士官学校,湖北 武汉 430075)

基于Unity 3D技术的某装备便携式虚拟训练系统研究

林德江 ,秦国伟,王国德,涂善超

(武汉军械士官学校,湖北 武汉 430075)

针对现阶段虚拟现实引擎平台通用性不强、虚拟训练系统过于复杂而导致的训练系统应用环境受限的问题,提出了基于3D小游戏理念的虚拟操作训练系统,该系统利用跨平台开发引擎Unity 3D进行开发,以达到简化设计,增强趣味性,提高系统移植性的目的。从经济性和使用效果的角度考虑,提出了在便携式平台上采用手势触摸技术实现虚拟操作训练的新途径。重点研究了系统实现的关键技术,包括利用C#开发系统通用体系结构,以及利用Finger Getures插件实现多任务手势交互操作,进一步通过装备模型对象处理,场景驱动编程,实现了系统运行。实际应用结果表明,该系统不仅能满足虚拟训练的需求,同时也为在便携式平台上尝试手势触摸技术实现虚拟操作训练提供了一定的借鉴。

计算机应用;虚拟训练;Unity 3D;通用体系结构;手势触摸

大型复杂装备的价格昂贵,一般培训机构的保有量少,工学矛盾突出,造成装备操作、使用、训练严重滞后,很大程度上影响了装备操作使用及后续保障能力的快速生成。采用虚拟现实技术,丰富训练手段,降低训练成本,提高训练效果,已成为目前改善“实兵+实地+实装”训练方式的一种常用手段,而现阶段通过Vega或Virtools等虚拟现实引擎开发的虚拟训练系统[1-4]平台通用性不强,只能在安装有应用程序的计算机上进行训练,限制了训练系统的应用环境。Unity 3D是近年来迅速兴起的一种专业游戏引擎,在跨平台开发方面具有非常大的优势[5-7],几乎支持所有的主流平台(PC、Web、移动端),通常只需要一次开发,便能以极小的代价部署到多平台上,若能将其应用于虚拟训练系统的开发当中,必然可以极大程度地丰富训练的途径。

在装备虚拟操作交互方面,目前大多采用鼠标加键盘或者昂贵的沉浸式VR外部设备(如HMD、数据手套、操作手柄等)。用鼠标加键盘的方式操作虚拟对象,体验较差,沉浸感不强,某种程度上影响了装备操作训练效果;采用昂贵的VR外设,又会带来新的成本问题。手势触摸技术近年来在人机交互领域迅猛发展,运用起来十分便捷,若将其运用于装备的虚拟操作训练,对于提高训练的沉浸感,增强趣味性,一定大有益处。

基于此,笔者综合运用Unity 3D引擎技术以及手势触摸技术,在便携式安卓平台基础上开发了某型装备的虚拟训练系统,为便携式平台上实现虚拟训练提供了一定借鉴。

1 系统总体设计

考虑到系统最终运行于安卓平台上,为了既保证软件运行流畅,又不失训练的针对性,系统采用了3D小游戏的设计理念,简化系统,保留最主要的训练功能,同时又增强趣味性。本系统主要包含科目选择、模式选择、引导模式、练习模式、考核模式以及虚拟对象查看等功能。

科目选择功能:系统提供了若干个训练科目,可供受训人员自主选择。系统采用开放式设计,可以随时加入新的训练科目,使训练更加系统。

模式选择功能:系统针对受训人员学习的一般规律,将训练模式划分为引导,练习和考核3种,受训人员可以根据自己的学习情况自主选择训练模式。

引导模式功能:针对初学者,引导模式能自动、完整并且清晰地展示整个装备的操作流程,每个操作处均具有文字提示功能,使受训人员能够按照文字提示,逐步运用特定的手势完成装备虚拟对象的操作,虚拟对象会根据操作改变自己的状态。在该模式中,还具备暂停、播放和重新开始等功能。

练习模式功能:针对逐步掌握训练内容的受训人员,可以选择在没有信息提示下自主练习操作装备虚拟对象,正确的操作会使虚拟对象产生应有的状态改变,操作错误时虚拟对象则不会响应,并发出错误提示。

考核模式功能:在操作实际装备之前,必须通过装备的虚拟操作考核。系统在练习模式的基础上,为受训人员设定倒计时,例如10 min。在规定的时间内,受训人员需逐步完成所有必要操作,任何一步操作错误,虚拟对象不会继续响应,即无法继续下一步骤的操作,若计时结束,受训人员能够完成操作,则认定为考核通过,否则认定为未通过考核。系统将根据受训人员的操作结果,给予一定评价。

虚拟对象查看功能:为了便于受训人员熟悉装备,实时进行交互,系统提供了查看功能。默认将装备虚拟对象最大化地展示在屏幕中,使受训人员在任何模式下,均能通过手势任意的旋转、缩放、移动虚拟对象,360°查看虚拟对象及其部件。通过复位按钮可使变动后的虚拟对象重新回到便于操作的位置。

2 系统实现的关键技术

2.1 通用体系结构实现

由于该型装备涵盖的训练科目很多,所以系统结构的通用性非常重要,为此系统采用了“三层架构”的设计思想,即数据层、逻辑层和UI层相互分离。为了方便处理各层之间的事件和消息,实现程序结构的通用性,定义的关键类如表1所示。

表1 关键类及其功能

续表1 关键类及其功能

程序中的各个关键类关系如图1所示。

GlobalManaer.cs、UIManager.cs和StepManager.cs三者之间是相互耦合的。UIManager.cs主要负责响应和处理UI的消息,同时也与StepManager.cs一起负责处理系统消息,并将处理结果通知GlobalManager.cs。

系统为每种训练模式配置了相应的txt配置文件,包含虚拟对象资源位置、虚拟对象动画步骤和每一步动画的起始帧、结束帧等一系列的信息。受训人员一旦选定某个模式,该模式的状态会被记录在GlobalManager.cs的全局枚举中,并通知UIMananger.cs和StepManager.cs当前系统的运行模式,其会自动地针对当前系统的运行状态做出改变。ConfigReader.cs负责读取相应模式下的txt配置文件,并将读取到的数据传送给StepUnit.cs,生成固定的数据结构{firstFram(起始帧),lastFram(结束帧),delayTime(延时播放的时间),description(对该动作的描述)}unit,存储在链表中,供StepPlayer.cs准备播放使用。如果受训人员操作正确或者需要播放动画,StepManager.cs则通知StepPlayer.cs需要播放的动画,StepPlayer.cs使用AnimationPlayer.cs播放链表中的unit对应的动画,实现交互响应。

基于上述结构,如果需要加入新的训练科目,则只需要把动画制作好,配置好相应的txt配置文件,便可以随时添加进来。

2.2 多任务手势交互操作的实现

该系统实现的另一项关键技术是多任务手势交互操作。手势触摸主要用来实现虚拟环境导航、操作UI和操作装备虚拟对象三方面的功能。因而需要根据功能需求,确定各种任务手势。

虚拟环境的导航也就是实现通过手势查看虚拟对象的功能,实际上就是根据需要改变相机的视角、朝向和位置。据此设计了几种能够满足要求的导航手势:单指上下左右滑动,双指上下左右滑动,双指相对靠近/相对远离。单指左右滑动实现旋转虚拟对象,双指上下左右滑动实现移动虚拟对象,双指相对靠近,相对远离实现放大缩小虚拟对象。

操作UI主要是点击UI的按钮图标,主要用到单手的点击手势。

装备操作手势如图2所示。按照装备的操作要求,在操作时主要有上下拨动操纵杆、短按启动按钮、短按停止按钮、长按调平按钮、旋转固定器等动作。因此,可以通过单指短按,单指长按,上下左右滑动,旋转等手势来实现装备虚拟对象操作。

针对手势任务需要,Unity 3D专门为开发者提供了两个输入对象touch和input,方便获取受训人员触摸的状态,包括触控位置、离开触控的位置、触控的时间、触控的数量等一系列的信息描述[7-8], 利用input和touch,通过各个变量间的组合可以解决任何单一的手势事件,但是这种方法易用性不强,不利于解决面临的复杂问题。为此使用了专门为Unity编写的一个手势插件FingerGestures3.0,该插件底层通过C#代理的形式来实现手势操作,包含5个预设,使用它能方便地监听Unity中的各种手势事件:上下左右四方向的滑动事件、按下事件、抬起事件、移动事件长按事件等。

以单手事件为例来说明系统中对Finger Gestures的运用,如图3所示。首先在Unity project面板中放入“Finger Gertures Initializer预设”用于监听相应的手势事件,接着创建虚拟对象以响应手势操作,最后编写C#脚本,将编写的脚本挂在相应的虚拟对象上,或者其他任何虚拟对象上从而开始接受信息。

由于该插件是通过C#代理形式来接收事件消息的,所以需要用脚本来注册这些事件从而开始接收消息,脚本编程的流程如图4所示。

3 系统的实现

在上述基础上,最终实现该系统还在于场景建模以及场景驱动,系统的开发流程如图5所示。

虚拟对象的真实程度、系统画面效果很大程度上决定了训练的沉浸性,但是不能片面追求画面的效果,而不考虑软件在平台上运行的流畅程度。因此,在利用3ds max2012进行建模时,对于需要交互操作虚拟对象部件,进行细致的建模,对于无关交互的部件则相对粗略,虚拟对象的贴图纹理完全从装备上采集并进行了处理,能够让受训人员感到非常真实。

虚拟对象建立完成后则利用3ds max自带的FBX插件将虚拟对象、动画、贴图资源导出为.FBX格式的文件,导入Unity 3D中进行场景配置,选用适用平板系统版本支持的shader。系统的界面设计运用的是NGUI插件,利用其可以方便地制作简洁友好的交互界面。

场景驱动主要是指脚本语言的编写,也就是功能代码的编写。在本系统的开发中,主要使用的开发语言是C#,另外还用到一些有助于编写脚本的插件,主要有NGUI(UI界面插件,用来制作界面)、FingerGestures3.0插件。利用Visual Studio2010和Unity 自带的Mono Develop进行C#或者Java script脚本编程。将脚本绑定在操作对象或者UI上以实现场景的驱动,编辑完成,即可以通过Unity部署功能发布到Web、PC或者移动端。图6为系统发布成一个APK安装到安卓4.2平台上的运行效果。

4 结束语

笔者采用3D小游戏的设计理念,并基于跨平台开发引擎Unity3D研究开发了某装备便携式虚拟训练系统。采用三层架构的思想,通过C#编程,实现了该系统的通用体系结构,根据系统的设计功能和装备操作要求确定了多任务操作手势,研究了多任务手势操作的实现方法,最终利用该通用体系结构在便携式安卓平台上实现了该装备的虚拟训练,满足了训练要求。与昂贵的沉浸式和增强型虚拟训练系统相比,该系统的硬件要求低,训练的趣味性强,可以随时随地训练,同时方便移植到Web、PC和移动端等多种平台,丰富了训练途径,降低了开发成本,为在便携式平台上利用手势触摸技术实现虚拟操作训练提供了一定的参考。

References)

[1]李万,王学军,崔小鹏,等.GL Studio与Vega Prime在某舰炮虚拟训练仿真系统中的应用[J].火炮发射与控制学报,2010(2):28-30. LI Wan,WANG Xuejun,CUI Xiaopeng,et al. Application of GL Studio and Vega Prime virtual training simulation system of a naval gun[J]. Journal of Gun Launch & Control,2010(2):28-30.( in Chinese)

[2]彭亮,黄心汉.基于HLA和Vega Prime导弹作战虚拟仿真系统研究[J].中南大学学报:自然科学版,2011,42(4) :1015-1020. PENG Liang,HUANG Xinhan. Missile combat virtual simulation system based on HLA and Vega Prime[J]. Journal of Central South University:Science and Technology,2011,42(4):1015-1020.(in Chinese)

[3]王宪成,李勃,李莉.基于Virtools 4.0的某型船艇柴油机虚拟维修关键技术研究[J].装甲兵工程学院学报,2010,24(2) :27-31. WANG Xiancheng,LI Bo,LI Li. Research on key technology of virtual mintenance certain boat diesel engine based on Virtools 4.0[J]. Journal of Academy of Armored Force Engineering,2010,24(2):27-31. ( in Chinese)

[4]杨清文,房施东,杨光,等.基于Virtools的某火箭炮技术检查训练仿真研究[J].计算机测量与控制,2012,20(2):407-410. YANG Qingwen,FANG Shidong,YANG Guang,et al. Research on training simulation of technique check for rocket launcher based on Virtools[J].Computer Mea-surement &Control,2012,20(2):407-410. ( in Chinese)

[5]任国栋,陈林华,陶学锋,等.基于 Unity3D的虚拟博物馆信息可视化系统[J].计算机系统应用,2013,29(9):87-90. REN Guodong,CHEN Linhua,TAO Xuefeng,et al. Virtual museum information visualization system based on Unity3D[J]. Computer Systems & Applications,2013,29(9):87-90. ( in Chinese)

[6]吴彬,黄赞臻,郭雪峰.Unity 4.x从入门到精通[M].北京:中国铁道出版社,2013:1-13. WU Bin,HUANG Zanzhen,GUO Xuefeng. Unity 4.x from the introduction to the master[M]. Beijing:China Railway Press,2013:1-13. ( in Chinese)

[7]金玺曾.Unity 3D 手机游戏开发[M].北京:清华大学出版社,2013:329-333. JIN Xizeng.Mobile game development of Unity 3D[M]. Beijing:Tsinghua University Press,2013:329-333. ( in Chinese)

[8]吴亚峰,于复兴.Unity 3D 游戏开发技术详解与典型案例[M].北京:人民邮电出版社,2012:158-159. WU Yafeng,YU Fuxing. Technology explanation and typical cases of game development by Unity 3D[M]. Beijing: Posts and Telecom Press,2012: 158-159. ( in Chinese)

ResearchonaPortableVirtualTrainingSystemBasedonUnity3DTechnology

LIN Dejiang, QIN Guowei, WANG Guode, TU Shanchao

(Wuhan Ordnance Non-Commissioned Officer Academy,Wuhan 430075,Hubei,China)

Aimed at the limited generality of the virtual reality engine platform and the complexity of the virtual training system, the virtual operation training system based on 3D game concept was put forward for the sake of limited applications environment of existing virtual training system. Cross-platform development engine Unity 3D was used to develop the system so as to achieve the simplicity in design, to make it more interesting to use, and to improve the portability of the system. In addition, the new way to use gesture touch technology for carrying out the virtual operation training on a portable platform was proposed in consideration of economy and the application effect. The key technology of system implementing were focused researched, including using C#to develop a common system architecture and using Finger-Getures plug-in to realize the multitasking gestures interaction. The system was realized on the basis of model processing and script writing. Application results showed that the system can not only meet the training requirements, but also provide some valuable experience for using gesture touch technology to realize virtual operation training on the portable platform.

computer application; virtual training;Unity 3D;common system architecture;gesture touch

2014-06-25;

2014-08-12

林德江(1987-),男,硕士,助教,主要从事装备虚拟训练技术研究。E-mail:lindejiang1808@sina.com

TP391.9;TJ35

A

1673-6524(2014)04-0091-05

猜你喜欢

插件手势对象
晒晒全国优秀县委书记拟推荐对象
判断电压表测量对象有妙招
自编插件完善App Inventor与乐高机器人通信
挑战!神秘手势
基于OSGi的军用指挥软件插件机制研究
攻略对象的心思好难猜
胜利的手势
基于jQUerY的自定义插件开发
区间对象族的可镇定性分析
认手势说数字