基于3DSMAX和Unity3D的末制导炮弹射击准备虚拟训练系统设计

徐敬青,崔 平,文 健,周晓东

(陆军工程大学石家庄校区,石家庄 050003)

摘要:根据末制导炮弹射击准备训练操作复杂、错误操作风险大的特点,提出了末制导炮弹射击准备虚拟训练系统的总体设计方案,并基于3DSMAX和Unity3D软件进行了设计开发。利用3DSMAX进行了模型开发和动画设计,导入Unity3D后进行了脚本程序编写,实现了虚拟训练系统的总体功能,满足了训练需求。

关键词:虚拟训练;末制导炮弹;Unity3D;3DSMAX

1 引言

末制导炮弹是由弹舱、控制舱、发射部三大部分组成,其射击准备过程中各种装定操作比普通榴弹也要复杂得多。为了解决实装训练操作复杂、错误操作风险大的问题,部队配发了末制导炮弹训练弹,用于部队和院校日常教学训练。在运用末制导炮弹训练弹进行射击准备的教学训练实践中,总结了如下问题:① 受训练弹配备数量限制,当参训人数较多时,不能全面展开;② 初次操作训练弹,由于弹体较重,往往容易发生磕碰,甚至造成学员受伤、损坏装备;③ 采用训练弹进行教学训练,需要大量专门的时间和场地,导致在训练的时间和空间上局限性大。虚拟训练系统具有安全、经济、可控、可重复、不受气候条件和场地空间限制等特点,因此,为满足末制导炮弹射击准备的训练需求[1],本研究基于3DSMAX和Unity3D软件对末制导炮弹射击准备虚拟训练系统进行了设计开发。

2 功能设计

末制导炮弹射击准备虚拟训练系统,主要满足学生课上课下在线自主训练和操作技能考核的教学需求,为此针对虚拟训练系统的功能进行了设计,如图1所示。

图1 功能模块总体设计框图

Fig.1 General design of the functional module

围绕学员能力培养的目标,按照装备原理、构造作用与使用训练融合培养的思路,对系统总体功能进行设计,将整个系统分为5个大的功能模块:静态展示、训练演示、虚拟训练、训练考核、训练帮助。

静态展示通过对操作对象和工具的三维建模,用以展示射击准备过程中末制导炮弹的基本原理和构造,以及所用的工具,实现将装备构造原理嵌入到使用训练操作中,进一步加深学员对装备基本知识的理解。

训练演示通过设计虚拟仿真操作动画,展示末制导炮弹射击准备规范的操作步骤,用以指导学员按照规范的操作步骤进行训练。

虚拟训练是整个模块系统的核心,学员进入该模块后,能够在系统的指导下进行射击准备过程中技术检查、装定和对接操作训练,当操作出现错误时,系统能够自动提醒,直至正确为止,并且能重复训练,直至完全掌握操作要领。

训练考核用于对学员射击准备操作技能的考核,学员自主完成全部操作,系统根据操作步骤正确与否,自动给出训练成绩,并给出错误提示。

训练帮助主要内容有末制导炮弹射击操作的基本流程,操作中容易出现的问题,以及虚拟训练系统的操作方法,帮助学员快速掌握操作方法。

3 系统开发

末制导炮弹虚拟训练系统设计采用Unity3D软件,该软件是一款跨平台的专业游戏、动画引擎,用它创建的游戏、动画可以在浏览器、移动设备乃至游戏机等几乎所有常见平台上运行,Unity3D在虚拟训练系统开发方面也得到了广泛应用[2-4]。本文以Unity3D为平台结合三维建模软件3DSMAX介绍了末制导炮弹射击准备虚拟训练系统的开发过程与关键技术。

虚拟训练系统开发过程一般需要经过三维建模、动作设计、模型导入、环境设置、脚本编写、生成发布文件等过程,开发流程如图2所示。

图2 系统开发流程框图

Fig.2 System development flow chart

3.1 三维建模

3DS MAX是Autodesk公司开发的三维模型制作和渲染软件。由于其容易操作、价格低廉、扩展性好、插件丰富、建模功能强大、和其他软件相互配合、仿真程度高等优点,被广泛用于各个设计制作领域[5]。在末制导炮弹射击准备虚拟训练系统设计中,主要用到了3DSMAX软件创建模型、调配材质、渲染、动画合成四大基本功能。

1) 创建模型:创建模型是3DSMAX工作开始的第一步,在对末制导炮弹及射击准备工具的建模过程中,运用了多边形建模、切割、分离、克隆等多个功能,完成了模型的创建。

2) 材质编辑器:材质编辑器功能在于模型材质的创建和调节,也可以用来创建环境和灯光投影效果,使用材质编辑器调配合适的材质,使模型更接近于真实情况。

3) 渲染:是将场景中的各类元素处理成图像的形式,并按照用户的需求决定输出图像的质量。部分模型如图3~图5所示。

图3 包装箱模型

Fig.3 Packing container

图4 末制导炮弹弹舱模型

Fig.4 Teminal-guided projectile module

图5 部分操作工具模型

Fig.5 Some operating tools

3.2 动画设计

3DSMAX不仅能用来对硬件模型进行建模,而且还能进行模型动作的设计以及动画的生成。只有在3DSMAX中对动作设计好才能在Unity3D里面正确的装载出所需要的虚拟训练过程。根据末制导炮弹射击准备操作特点,在设计中首先将有带动关系的物体连接父子关系,就是父物体带动子物体动作,并且更改物体轴心,比方以开箱操作打开包装箱锁扣为例,需要在操作时手动掀开合页,同时锁轴运动,因此需要建立合页和锁轴之间的父子关系,如图6所示。

图6 添加父子关系界面

Fig.6 Add parent-son relation

下面以末制导炮弹包装箱锁扣开合动作为例介绍动画设计过程。如图7所示,首先开启自动关键点功能,点击钥匙图标,在滚条指定方向创建一个3种颜色的点,红颜色代表位移,绿颜色代表旋转,蓝颜色代表缩放。移动滚条移动至20位置,将锁扣前端向上旋转,20位置会生成一个绿色代表旋转的关键点,将滚条移至40位置,将锁扣前端转回来,选择锁扣合页,开启自动关键点功能,点击钥匙图标在滚条指定方向创建一个3种颜色的点,移至20位置,向上旋转合页,使其做出开锁扣时的动作,移至40位置,将合页旋下,使它垂落锁扣前端。

图7 设置旋转合页动作界面

Fig.7 Set the rotary page action

当所有的动画做好之后,为所有做好动画的模型打包,查看关键点是否齐全,查验无误后即可导入Unity3D能实现系统的运行。

3.3 导入Unity3D开发

Unity3D里面提供了声音、图形、渲染和物理等多种功能,可以对环境进行设置[6-7]。在3DSMAX中将整体模型创建、贴完材质、完成动画设计后,就可将模型从3DSMAX中打包导出,直接保存到Unity3D工程文件夹中,保存为fbx格式[8-9]。在Unity3D中,首先创建一个新的Unity工程,将末制导炮弹及其相关工具器材模型从3DSMAX中导入到Unity3D的assets文件中,在Project窗口中就可看到模型了。在Unity3D中的主要开发工作是脚本的设计与实现。

Unity3D的脚本程序是基于Mono平台运行,其内置了Monodelevop脚本编辑器,本文使用了Monodelevop中的C#语言进行对操作模型对象实施交互的输入输出控制,并通过将脚本程序加载至摄像机或模型对象上调试实现实时控制优化。由于在实现交互的过程中,需要使用到Unity3D中的碰撞检测,本系统主要运用的是Box Collider。这里碰撞的作用是使鼠标切换UI,执行附在物体上的脚本命令,另外还模拟控制舱对接过程中的碰撞、装定工具与控制舱接触时的碰撞、控制舱与包装箱之间的碰撞等等。

下面以装定引信作用方式为例,叙述脚本如何驱动虚拟训练过程。当未执行操作前,末制导炮弹处于未执行代码状态,当点击界面左下角工具中的装定扳手之后,将箭头移动到引信装定的工作位置,会产生图8(a)所示动作。

图8 装定引信作用方式示意图

Fig.8 Set fuze action mode

当代码执行完毕后,引信的工作方式从延期(Y)变成了惯性(G)。代码设计如下:

using UnityEngine;

using System.Collections;

public class S19_PaoDan2_YinXinZhongLei:MonoBehaviour {

GameObject xOjb;//定义一个物体xOjb

bool bf=false;//定义开关显示状态

private Color mouseOverColor=Color.yellow;//定义变色

private Color originalColor;//定义原色

private bool GJ=false;//定义工具状态

public GUIStyle mysty1;//定义GUI

void Start() {

bf=true;//出示显示开关1

originalColor=GetComponent().sharedMaterial.color;//获取开关初始原色

}

void OnMouseEnter() {//鼠标移动至引信作用方式开关上后执行此方法

GetComponent().material.color=mouseOverColor;//开关显示颜色变为黄色

}

void OnMouseExit() {//鼠标离开引信作用方式开关上后执行此方法

GetComponent().material.color=originalColor;//开关显示颜色变为原色

}

void Update() {//更新方法

if(bf == false) {//变更开关状态后

xOjb=GameObject.Find("P2_GJ02_001");//寻找场景内"P2_GJ02_001"物体;

xOjb.GetComponent().enabled=false;//隐藏此物体

bf=true;//停止更新

}

}

void OnMouseUp()//鼠标点击引信作用方式开关上后执行此方法

{

if(BianLiangC.gs_GongJu == "0002") {//如果选取工具正确执行一下方法

if(BianLiangC.gl_Step == 12) {//如果步骤状态已达此步骤

xOjb=GameObject.Find("P2_GJ02_001");//寻找物体"P2_GJ02_001"

xOjb.GetComponent().enabled=true;//显示此物体

xOjb=GameObject.Find("PD2");//寻找物体"PD2"

xOjb.GetComponent().CrossFade("T005");//获取此物体动画组件并播放动画

bf=false;//变更开关状态执行更新方法

}

} else {//如果选取工具不正确执行一下方法

GJ=true;

}

}

当执行完上述程序后,引信的装定方式改变,如图8(b)(c)所示。

3.4 训练考核的实现

为了进一步考核学习者在虚拟训练过程的掌握效果,系统设计了训练考核模块。本系统训练考核的实现方式是:在操作的过程中,如果出现操作错误会提示学习者,并且每次提示都会在基础分100分上扣掉一定分值。训练考核模块的主要实现程序如下。

public void Updatechengji()

{//成绩更新方法

if(tishi.gameObject.activeSelf == true)//如过提示打开返回不执行以下方法

return;

tishi.gameObject.SetActive(true);//显示提示

if(chengji > 0)//如果成绩不为0

chengji -= 5;//更新成绩-5

else

chengji=0;//如果成绩为0 不更新

chengjitext.text="成绩:"+chengji;//更新显示的成绩

biaodanchengji.text=chengji.ToString();//更新记录表单的成绩

string sd=jilutext.text; //记录提示

sd += tishi.text+"-5分"+"\n";//将记录的提示添加到表单

jilutext.text=sd;//更新记录

}

public void tishigam(){//隐藏提示方法

if(tishi.gameObject.activeSelf == true)

tishi.gameObject.SetActive(false);

}

操作错误时,系统不运行正确的交互程序,表现为静止状态。当参考人员遇到没有掌握或者遗忘的操作步骤时,使用图示下方提示按钮,系统就会运行上述程序步骤,在基础分上扣掉分值,并且在后续操作中将会执行与上述相同的程序,对参考人员的考核成绩作出评判。图9是使用提示后,系统运行程序发生的状态变化。虚拟训练考核功能的实现为武器装备训练评估提供了重要支撑[10-11]

图9 训练考核界面

Fig.9 Training and assessment interface

4 生成发布文件

在Unity3D中完成脚本编写后,将各模块进行系统集成,最终打包生成网页版运行系统,系统主文件名后缀为.html,是一个网页格式的文件[12]。系统在单机运行时,只需要双击.html后缀文件,尽可进入运行界面,借助Unity WebPlayer插件,可将虚拟训练系统发布到网上使用。运行界面如图10所示。

图10 集成后训练系统界面

Fig.10 The training system after interation

5 结论

针对末制导炮弹射击准备虚拟训练需求,基于3DSMAX和Unity3D软件开发了末制导炮弹射击准备虚拟训练系统,详细介绍了开发流程,完成3DSMAX动画设计与Unity3D脚本编写过程,达到了系统开发目标,为开发其他武器装备虚拟训练条件提供了借鉴。

参考文献:

[1] 刘伊华.单兵巡飞武器虚拟训练系统研究与实现[D].南京:南京理工大学,2018.

Liu Yinhua.Research and implementation of single flight patrol weapons virtual training system[D].NanJing:Nanjing uniwersity of science &technology,2018.

[2] 郭芮,蒋明,郑劼恒等.基于Unity3D的加油车虚拟训练系统设计[J].机械设计,2014,31(3):84-87.

GUO Rui,JING Ming,ZHENG Jieheng.Design virtual training system for off-road group fueling vehicle based Unity3D[J].Journal of Machine Design,2014,31(3):84-87.

[3] 王守尊,陈虎,郭聪.基于Unity3D的舰载机虚拟训练系统设计[J].海军工程大学学报,2016,28(4):92-96.

WANG Shouzun,CHEN Hu,GUO Cong.Design of carier aircraft virtual training system based on Unity3D[J].Journal of Naval University of Engineering,2016,28(4):92-96.

[4] 程伯文,郑一力,黄青青.基于Unity3D的林木联合采育机虚拟训练系统研究[J].系统仿真学报,2018,30(4):1310-1318.

CHENG Bowen,ZHENG Yili,Huang Qingqing.Forestry felling & cultivation machine virtual training system based on unity3D[J].Journal of System Simulaition,2018,30(4):1310-1318.

[5] 胡素芸,邵斌澄,李坤.面向航天员虚拟训练的人机交互系统研制和测试[J].电子测量与仪器学报,2017,31(12):1902-1911.

HU Suyun,SHAO Bingcheng,LI Kun.Design and evaluation of a human-machine system for astronautis virtual training[J].Journal of Electronic Measurement and Instrumentation,2017,31(12):1902-1911.

[6] 周 杰.基于VR技术的某型鱼雷虚拟训练系统的设计与实现[J].物联网技术,2017(6):36-39.

ZHOU Jie.Design and implementation of a torpedo virtual training system based on VR technology[J].Internet of things technologies,2017(6):36-39.

[7] 郭含,王茜,周弘扬.基于Virtool的多人协作式导弹模拟训练系统[J].兵器装备工程学报,2020,41(1):83-85.

GUO Han,WANG Qian,ZHOU Hongyang.Muti-person cooperative missile simulaition training system based on virtools[J].Journal of Ordnance Equipment Engineering,2020,41(1):83-85.

[8] 梁民仓,尹勇,丁天明.分布式深潜器收放操作仿真系统的设计与应用[J].计算机仿真,2020,37(5):306-407.

LIANG Mincang,YIN Yong,DING Tianming.Design and application research of distributed deep submersible lauching and retrieve operation simulation system[J].Computer Simulation,2020,37(5):306-407.

[9] 魏国强,朱元武,王杰,等.便携式装甲射击模拟训练器设计[J].兵器装备工程学报,2020,41(2):35-39.

WEI Guoqiang,ZHU Yuanwu,WANG Jie.Design of portable armored shooting training simulator[J].Journal of Ordnance Equipment Engineering,2020,41(2):35-39.

[10] 欧阳中辉,郭遨宇,刘文彪.基于改进可拓云的岸舰导弹武器系统训练评估方法[J].兵器装备工程学报,2020,41(4):58-63.

OUYANG Zhonghui,GUO Aoyu,LIU Wenbiao.Training evaluation of shore-to-ship missle weapon system based on improved extension cloud[J].Journal of Ordnance Equipment Engineering,2020,41(4):58-63.

[11] 范志锋,徐敬青.基于虚拟现实技术的末制导炮弹检测训练系统[J].计算机应用与软件,2019,36(2):139-142.

FAN Zhifeng,XU Jingqing.Terminal guided projectile detection training system based on virtual reality[J].Computer Applications and Software,2019,36(2):139-142.

Virtual Training System Design of Terminal Guided Projectile Fire Preparation Based on 3DSMAX and Unity3D

XU Jingqing, CUI Ping, WEN Jian, ZHOU Xiaodong

(Shijiazhuang Campus of Army Engineering University, Shijiazhuang 050003, China)

Abstract: According to the characteristics of complex operation and high risk of error operation, this paper put forward the overall design scheme of the virtual training system terminal guided projectile shooting preparation, and developed it based on 3DSMAX and Unity3D software. The model development and animation design were carried out by using 3DSMAX, and the script program is written after importing the Unity3D, which realizes the overall function of the virtual training system and meets the training needs.

Key words virtual training; terminal guided projectile; Unity3D; 3DSMAX

收稿日期:2020-09-16;

修回日期:2020-10-25

作者简介:徐敬青(1983—),男,博士,讲师。

通信作者:崔平(1981—),男,硕士,讲师。

doi: 10.11809/bqzbgcxb2021.07.006

本文引用格式:徐敬青,崔平,文健,等.基于3DSMAX和Unity3D的末制导炮弹射击准备虚拟训练系统设计[J].兵器装备工程学报,2021,42(07):30-34.

Citation format:XU Jingqing, CUI Ping, WEN Jian, et al.Virtual Training System Design of Terminal Guided Projectile Fire Preparation Based on 3DSMAX and Unity3D[J].Journal of Ordnance Equipment Engineering,2021,42(07):30-34.

中图分类号:TJ41

文献标识码:A

文章编号:2096-2304(2021)07-0030-05

科学编辑 黄景德 博士(珠海科技学院教授、博导)责任编辑 周江川