范志锋 徐敬青
1(武昌工学院机械工程学院 湖北 武汉 430065)2(湖北省绿色风机协同创新中心 湖北 武汉 430065)3(陆军工程大学石家庄校区 河北 石家庄 050003)
末制导炮弹是一种高技术弹药,能够实现对目标的精确打击[1]。与传统无控弹药相比,末制导炮弹内部含有复杂的光电系统。在长期储存过程中,为确保其质量,需要利用专用检测仪器对末制导炮弹内部的光电系统开展性能检测。文献[1]介绍了利用虚拟仪器开展末制导炮弹检测的具体实现方法,但基于虚拟仪器的末制导炮弹性能检测操作过程较为繁琐,需要对操作人员开展专门的末制导炮弹性能检测训练,才能胜任该项工作。文献[2]介绍了一种末制导炮弹检测弹的设计方案,认为开展末制导炮弹性能检测训练,需要使用末制导炮弹性能检测仪和相应的检测弹。根据文献[2]中介绍的方法开展末制导炮弹性能检测训练,存在的主要问题是:要想实现“人手一套”,费用较高,推广应用较难。
近年来,随着计算机软硬件技术的不断发展,虚拟现实技术已经成功应用到教育、医疗、建筑、航天、汽车、导航、军事等社会各个行业和领域[3-9]。虚拟现实技术是一种能够产生与真实场景在视觉、听觉以及触觉等方面及其相似的虚拟场景的计算机技术,用户通过必要的交互设备,在虚拟场景中进行交互操作,达到身临其境的效果,具有强大的沉浸性、交互性和构想性等特征[10-11]。本文克服文献[2]中的方法开展末制导炮弹检测训练的缺点,以虚拟现实技术为理论指导,基于Unity3D、3DMAX、Dreamweaver和Photoshop等软件,设计末制导炮弹检测训练系统,提供末制导炮弹检测虚拟训练功能,以解决院校和弹药检测机构缺乏训练条件的现实问题。
目前,虚拟现实系统主要分为4类:桌面虚拟现实系统、沉浸式虚拟现实系统、增强虚拟现实系统和分布式虚拟现实系统[12]。考虑系统的开发费用和运行成本,末制导炮弹检测训练系统采用桌面虚拟现实技术进行开发,即开发的训练系统是一套软件,利用鼠标进行人机交互操作。整个系统既能够实现单机运行,也能够实现基于局域网多人在线训练。
为提高末制导炮弹检测训练效果,系统应具备检测知识学习功能、检测虚拟操作功能以及训练考核功能。
根据系统应具备的功能,末制导炮弹检测训练系统设计5个功能模块:训练帮助、静态展示、训练演示、虚拟训练、训练考核。
训练帮助模块主要以文字和图片等形式,介绍系统的功能、检测操作步骤、系统操作使用说明等内容。
静态展示模块采用交互操作的形式,主要以图片配合文字说明,展示末制导炮弹检测操作过程中需要使用的所有设备工具以及被测对象。
训练演示模块采用视频的形式,自动演示末制导炮弹检测的操作步骤。
虚拟训练模块采用交互操作的形式,保证训练者按照正确的检测流程进行末制导炮弹检测虚拟训练。
训练考核模块采用交互操作的形式,可以对末制导炮弹检测训练者实施考核,在考核结束后,能自动对训练者进行评分。
根据系统的功能和模块,结合软件开发的一般流程,本文将末制导炮弹检测训练系统开发过程分为5个步骤:
(1) 广泛收集末制导炮弹检测操作的各种素材,包括图片、文字、声音、视频等,并对原始素材对象进行特征分析和归类,以供后续建模使用。
(2) 对检测设备工具、检测对象、训练操作环境等素材采用3D MAX进行三维静态建模,以检测操作真实动作为依据,通过3D MAX软件自带的脚本功能生成的检测动作模型,并输出FBX格式文件。
(3) 在Unity 3D软件中载入FBX文件,以检测操作真实流程为依据,编写C#脚本实现交互,输出静态展示、虚拟训练、训练考核等3个独立的功能模块。
(4) 使用Apowersoft录屏软件,录制虚拟训练全过程操作视频,输出训练演示模块。
(5) 运用Dreamweaver和Photoshop软件设计交互界面,将完成的静态展示、虚拟训练、训练考核以及训练演示模块插入相应的网页中,并添加训练帮助模块,完善后打包发布成网页版训练系统。
系统的具体开发流程如图1所示。
图1 系统开发流程
由于篇幅限制,本文只对系统实现的一些主要技术环节进行说明。
系统需要建立的三维模型包括两类:一是检测过程中需要使用的设备工具和检测弹;二是检测训练操作环境。
三维建模主要在3D MAX软件中进行开发,最终输出FBX格式文件。三维建模按照静态建模、动态建模、FBX文件输出3个步骤进行。
三维静态模型的建立包括创建模型、编辑材质和渲染3个步骤。上述两类三维模型的创建模型方法类似。在3DMAX中均采用多边形建模方法(polygon)进行建模。任何物体都是由点、线、面所组成的,本文需要建立的模型都是以基本形状为基础,通过改变点、线、面来修正造型。对于部分比较复杂的模型,可以在建立基础模型后通过修改命令进行调整。
为了提高三维静态模型的逼真程度,部分三维模型的表面需要使用贴图,如检测仪内置的使用说明书、设备的铭牌等。对于该类贴图,一般采用相机拍摄图片,然后用Photoshop软件对图像进行调节,放大或者缩小贴图尺寸,使贴图适应模型的大小,并更改图像颜色使其与模型匹配。建立的部分三维静态模型见图2。
(a) 电阻检测仪 (b) 性能检测仪
(c) 检测弹 (d) 检测操作台图2 系统部分三维模型
3D MAX软件自带的各类脚本可实现单步虚拟检测操作的各类动作。在得到检测设备工具和检测弹以及检测训练操作环境的三维静态模型后,依据末制导炮弹检测操作的真实动作,对模型添加对应的动作脚本,生成单步三维动态模型。
在生成三维动态模型后,在3D MAX软件中输出FBX格式文件。FBX格式文件包含了模型主要的三维数据元素以及二维、音频和视频媒体元素,有利于下一步使用Unity 3D软件进行交互构建。
本文研究的末制导炮弹检测训练系统是一套桌面虚拟现实系统,交互操作是通过鼠标实现的。交互构建是在Unity 3D软件中通过编写C#脚本实现的,是整个系统开发的核心。下面对3个交互模块的一些典型环节脚本代码进行说明。
1) 静态展示模块 静态展示模块的交互操作,主要要求训练人员用鼠标移动到检测设备工具或检测弹后,系统会自动高亮显示该对象并且提示该对象的具体名称,用鼠标左键点击该对象后,会弹出该介绍该对象的详细图片。部分C#代码如下:
void OnGUI(){
//描边显示文字
if (isShowTip) {
GUIStyle bb=new GUIStyle ();
//GUI文字
bb.normal.background=null;
//GUI背景为空
bb.normal.textColor=new Color (1,0,0);
//字体颜色
bb.fontSize=25;
//字体大小为25
GUIStyle cc=new GUIStyle ();
cc.normal.background=null;
cc.normal.textColor=new Color (0,0,0);
cc.fontSize=25;
GUI.Label(new Rect(Input.mousePosition.
x+22.5f,Screen.height-Input.mousePosi
tion.y-20f,100,40),_name,cc);
//显示字体位置
GUI.Label(new Rect(Input.mousePosition.
x+20f,Screen.height-Input.mousePosi
tion.y-20f,100,40),_name,bb);
}
}
2) 虚拟训练模块 虚拟训练模块的交互操作,主要要求是在操作界面上实时显示操作步骤的前提下,训练人员用鼠标移动到正确的位置并点击左键后,系统开始播放相应的检测动作,直到完成整个检测操作流程。
编写C#代码,主要完成预先存储鼠标在操作界面中的位置信息,并判断当前鼠标位置信息是否与预定的储存位置发生碰撞的功能。当判断射线检测到发生碰撞时,即将鼠标移动到操作对象处时,鼠标指针变为指示箭头,当训练人员点击鼠标左键时,播放动画。部分C#代码如下:
void Click() {
var gg=Input.mousePosition;
//存储鼠标点信息
Ray ray=Camera.main.ScreenPointToRay (gg);
//存储由相机发出的射线信息
RaycastHit hitInfo;
//存储涉嫌碰撞信息
if (Physics.Raycast (ray, out hitInfo)) {
//判断射线检测
Name=hitInfo.collider.transform.name;
//存储射线碰撞到的物体名字
if (Input.GetMouseButtonDown (0)) {
//如果点击鼠标左键
switch (Name) {
//判断物体名字
case "0":
playAnimbbb (0);
//播放打开抽屉的动画
break;
case "1":
playAnimbbb (1);
//播放检测工具取出的动画
foreach (var item in UIgj._instance.uizong) {
//显示物体,遍历数组
item.SetActive (true);
}
3) 训练考核模块 训练考核模块的交互操作,与虚拟训练模块的交互操作类似,不同的是训练考核模块的操作界面上不实时显示操作步骤,同时增加考核计分功能。实现当训练人员需要查看操作步骤时,系统将扣除相应步骤的分数,并在打分板上显示所有的扣分步骤和最终的得分。部分C#代码如下:
public void xianshi(){
//显示提示文字
if (isPre1) {
isPre1=false;
}
if (aa.isPlaying==true) {
isPre=false;
} else {
if (tsLab.enabled==false) {
fen (5);
//扣除分数
tsLab.enabled=true;
ls.Add (tsLab.text);
for (int i=0; i for (int j=i; j ooo[i].text=ls[i]+"[000000FF]-5分[000000FF]"; } //记录窗口中显示扣分步骤以及扣除的分数 } } } } public void fen(int i){ //减分函数 if (num>0) { num-=i; } GameObject.Find ("ff").GetComponent } public void jilu(){ //记录按钮打开和关闭 if (ison1) { zz.SetActive (true); ison1=false; } else{ zz.SetActive (false); ison1=true; } } 本文研究的末制导炮弹检测训练系统界面,用Photoshop软件进行设计。设计的登录界面如图3所示。 图3 系统登陆界面 将设计的界面导入Dreamweaver软件,将各个独立的模块进行系统集成,最终得到打包发布的网页版系统。系统最终生成的主文件名为index.html,是一个网页格式的文件。系统在单机运行时,只需要双击index.html,就进入图3所示的登录界面。系统在局域网运行时,只需要输入Web地址,同样进入系统登录界面。 本文将虚拟现实技术应用于末制导炮弹检测训练领域,运用3D MAX进行了三维建模,运用Unity 3D实现了交互操作,运用Photoshop设计了系统界面,运用Dreamweaver实现了系统集成,最终发布完成了网页版的末制导炮弹检测训练系统。该系统实现了末制导炮弹检测操作全过程模拟,为开展相应的训练提供了平台,具有良好的推广应用前景。同时该系统的设计思路为类似的弹药检测虚拟训练系统设计提供了参考。3.3 界面设计与系统集成发布
4 结 语