国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于3DSMAX和Unity3D的末制導(dǎo)炮彈射擊準(zhǔn)備虛擬訓(xùn)練系統(tǒng)設(shè)計(jì)

2021-08-06 11:08:10徐敬青周曉東
兵器裝備工程學(xué)報(bào) 2021年7期
關(guān)鍵詞:炮彈制導(dǎo)射擊

徐敬青,崔 平,文 健,周曉東

(陸軍工程大學(xué)石家莊校區(qū),石家莊 050003)

1 引言

末制導(dǎo)炮彈是由彈艙、控制艙、發(fā)射部三大部分組成,其射擊準(zhǔn)備過程中各種裝定操作比普通榴彈也要復(fù)雜得多。為了解決實(shí)裝訓(xùn)練操作復(fù)雜、錯(cuò)誤操作風(fēng)險(xiǎn)大的問題,部隊(duì)配發(fā)了末制導(dǎo)炮彈訓(xùn)練彈,用于部隊(duì)和院校日常教學(xué)訓(xùn)練。在運(yùn)用末制導(dǎo)炮彈訓(xùn)練彈進(jìn)行射擊準(zhǔn)備的教學(xué)訓(xùn)練實(shí)踐中,總結(jié)了如下問題:① 受訓(xùn)練彈配備數(shù)量限制,當(dāng)參訓(xùn)人數(shù)較多時(shí),不能全面展開;② 初次操作訓(xùn)練彈,由于彈體較重,往往容易發(fā)生磕碰,甚至造成學(xué)員受傷、損壞裝備;③ 采用訓(xùn)練彈進(jìn)行教學(xué)訓(xùn)練,需要大量專門的時(shí)間和場地,導(dǎo)致在訓(xùn)練的時(shí)間和空間上局限性大。虛擬訓(xùn)練系統(tǒng)具有安全、經(jīng)濟(jì)、可控、可重復(fù)、不受氣候條件和場地空間限制等特點(diǎn),因此,為滿足末制導(dǎo)炮彈射擊準(zhǔn)備的訓(xùn)練需求[1],本研究基于3DSMAX和Unity3D軟件對末制導(dǎo)炮彈射擊準(zhǔn)備虛擬訓(xùn)練系統(tǒng)進(jìn)行了設(shè)計(jì)開發(fā)。

2 功能設(shè)計(jì)

末制導(dǎo)炮彈射擊準(zhǔn)備虛擬訓(xùn)練系統(tǒng),主要滿足學(xué)生課上課下在線自主訓(xùn)練和操作技能考核的教學(xué)需求,為此針對虛擬訓(xùn)練系統(tǒng)的功能進(jìn)行了設(shè)計(jì),如圖1所示。

圖1 功能模塊總體設(shè)計(jì)框圖

圍繞學(xué)員能力培養(yǎng)的目標(biāo),按照裝備原理、構(gòu)造作用與使用訓(xùn)練融合培養(yǎng)的思路,對系統(tǒng)總體功能進(jìn)行設(shè)計(jì),將整個(gè)系統(tǒng)分為5個(gè)大的功能模塊:靜態(tài)展示、訓(xùn)練演示、虛擬訓(xùn)練、訓(xùn)練考核、訓(xùn)練幫助。

靜態(tài)展示通過對操作對象和工具的三維建模,用以展示射擊準(zhǔn)備過程中末制導(dǎo)炮彈的基本原理和構(gòu)造,以及所用的工具,實(shí)現(xiàn)將裝備構(gòu)造原理嵌入到使用訓(xùn)練操作中,進(jìn)一步加深學(xué)員對裝備基本知識的理解。

訓(xùn)練演示通過設(shè)計(jì)虛擬仿真操作動(dòng)畫,展示末制導(dǎo)炮彈射擊準(zhǔn)備規(guī)范的操作步驟,用以指導(dǎo)學(xué)員按照規(guī)范的操作步驟進(jìn)行訓(xùn)練。

虛擬訓(xùn)練是整個(gè)模塊系統(tǒng)的核心,學(xué)員進(jìn)入該模塊后,能夠在系統(tǒng)的指導(dǎo)下進(jìn)行射擊準(zhǔn)備過程中技術(shù)檢查、裝定和對接操作訓(xùn)練,當(dāng)操作出現(xiàn)錯(cuò)誤時(shí),系統(tǒng)能夠自動(dòng)提醒,直至正確為止,并且能重復(fù)訓(xùn)練,直至完全掌握操作要領(lǐng)。

訓(xùn)練考核用于對學(xué)員射擊準(zhǔn)備操作技能的考核,學(xué)員自主完成全部操作,系統(tǒng)根據(jù)操作步驟正確與否,自動(dòng)給出訓(xùn)練成績,并給出錯(cuò)誤提示。

訓(xùn)練幫助主要內(nèi)容有末制導(dǎo)炮彈射擊操作的基本流程,操作中容易出現(xiàn)的問題,以及虛擬訓(xùn)練系統(tǒng)的操作方法,幫助學(xué)員快速掌握操作方法。

3 系統(tǒng)開發(fā)

末制導(dǎo)炮彈虛擬訓(xùn)練系統(tǒng)設(shè)計(jì)采用Unity3D軟件,該軟件是一款跨平臺的專業(yè)游戲、動(dòng)畫引擎,用它創(chuàng)建的游戲、動(dòng)畫可以在瀏覽器、移動(dòng)設(shè)備乃至游戲機(jī)等幾乎所有常見平臺上運(yùn)行,Unity3D在虛擬訓(xùn)練系統(tǒng)開發(fā)方面也得到了廣泛應(yīng)用[2-4]。本文以Unity3D為平臺結(jié)合三維建模軟件3DSMAX介紹了末制導(dǎo)炮彈射擊準(zhǔn)備虛擬訓(xùn)練系統(tǒng)的開發(fā)過程與關(guān)鍵技術(shù)。

虛擬訓(xùn)練系統(tǒng)開發(fā)過程一般需要經(jīng)過三維建模、動(dòng)作設(shè)計(jì)、模型導(dǎo)入、環(huán)境設(shè)置、腳本編寫、生成發(fā)布文件等過程,開發(fā)流程如圖2所示。

圖2 系統(tǒng)開發(fā)流程框圖

3.1 三維建模

3DS MAX是Autodesk公司開發(fā)的三維模型制作和渲染軟件。由于其容易操作、價(jià)格低廉、擴(kuò)展性好、插件豐富、建模功能強(qiáng)大、和其他軟件相互配合、仿真程度高等優(yōu)點(diǎn),被廣泛用于各個(gè)設(shè)計(jì)制作領(lǐng)域[5]。在末制導(dǎo)炮彈射擊準(zhǔn)備虛擬訓(xùn)練系統(tǒng)設(shè)計(jì)中,主要用到了3DSMAX軟件創(chuàng)建模型、調(diào)配材質(zhì)、渲染、動(dòng)畫合成四大基本功能。

1) 創(chuàng)建模型:創(chuàng)建模型是3DSMAX工作開始的第一步,在對末制導(dǎo)炮彈及射擊準(zhǔn)備工具的建模過程中,運(yùn)用了多邊形建模、切割、分離、克隆等多個(gè)功能,完成了模型的創(chuàng)建。

2) 材質(zhì)編輯器:材質(zhì)編輯器功能在于模型材質(zhì)的創(chuàng)建和調(diào)節(jié),也可以用來創(chuàng)建環(huán)境和燈光投影效果,使用材質(zhì)編輯器調(diào)配合適的材質(zhì),使模型更接近于真實(shí)情況。

3) 渲染:是將場景中的各類元素處理成圖像的形式,并按照用戶的需求決定輸出圖像的質(zhì)量。部分模型如圖3~圖5所示。

圖3 包裝箱模型

圖4 末制導(dǎo)炮彈彈艙模型

圖5 部分操作工具模型

3.2 動(dòng)畫設(shè)計(jì)

3DSMAX不僅能用來對硬件模型進(jìn)行建模,而且還能進(jìn)行模型動(dòng)作的設(shè)計(jì)以及動(dòng)畫的生成。只有在3DSMAX中對動(dòng)作設(shè)計(jì)好才能在Unity3D里面正確的裝載出所需要的虛擬訓(xùn)練過程。根據(jù)末制導(dǎo)炮彈射擊準(zhǔn)備操作特點(diǎn),在設(shè)計(jì)中首先將有帶動(dòng)關(guān)系的物體連接父子關(guān)系,就是父物體帶動(dòng)子物體動(dòng)作,并且更改物體軸心,比方以開箱操作打開包裝箱鎖扣為例,需要在操作時(shí)手動(dòng)掀開合頁,同時(shí)鎖軸運(yùn)動(dòng),因此需要建立合頁和鎖軸之間的父子關(guān)系,如圖6所示。

圖6 添加父子關(guān)系界面

下面以末制導(dǎo)炮彈包裝箱鎖扣開合動(dòng)作為例介紹動(dòng)畫設(shè)計(jì)過程。如圖7所示,首先開啟自動(dòng)關(guān)鍵點(diǎn)功能,點(diǎn)擊鑰匙圖標(biāo),在滾條指定方向創(chuàng)建一個(gè)3種顏色的點(diǎn),紅顏色代表位移,綠顏色代表旋轉(zhuǎn),藍(lán)顏色代表縮放。移動(dòng)滾條移動(dòng)至20位置,將鎖扣前端向上旋轉(zhuǎn),20位置會生成一個(gè)綠色代表旋轉(zhuǎn)的關(guān)鍵點(diǎn),將滾條移至40位置,將鎖扣前端轉(zhuǎn)回來,選擇鎖扣合頁,開啟自動(dòng)關(guān)鍵點(diǎn)功能,點(diǎn)擊鑰匙圖標(biāo)在滾條指定方向創(chuàng)建一個(gè)3種顏色的點(diǎn),移至20位置,向上旋轉(zhuǎn)合頁,使其做出開鎖扣時(shí)的動(dòng)作,移至40位置,將合頁旋下,使它垂落鎖扣前端。

圖7 設(shè)置旋轉(zhuǎn)合頁動(dòng)作界面

當(dāng)所有的動(dòng)畫做好之后,為所有做好動(dòng)畫的模型打包,查看關(guān)鍵點(diǎn)是否齊全,查驗(yàn)無誤后即可導(dǎo)入U(xiǎn)nity3D能實(shí)現(xiàn)系統(tǒng)的運(yùn)行。

3.3 導(dǎo)入U(xiǎn)nity3D開發(fā)

Unity3D里面提供了聲音、圖形、渲染和物理等多種功能,可以對環(huán)境進(jìn)行設(shè)置[6-7]。在3DSMAX中將整體模型創(chuàng)建、貼完材質(zhì)、完成動(dòng)畫設(shè)計(jì)后,就可將模型從3DSMAX中打包導(dǎo)出,直接保存到Unity3D工程文件夾中,保存為fbx格式[8-9]。在Unity3D中,首先創(chuàng)建一個(gè)新的Unity工程,將末制導(dǎo)炮彈及其相關(guān)工具器材模型從3DSMAX中導(dǎo)入到Unity3D的assets文件中,在Project窗口中就可看到模型了。在Unity3D中的主要開發(fā)工作是腳本的設(shè)計(jì)與實(shí)現(xiàn)。

Unity3D的腳本程序是基于Mono平臺運(yùn)行,其內(nèi)置了Monodelevop腳本編輯器,本文使用了Monodelevop中的C#語言進(jìn)行對操作模型對象實(shí)施交互的輸入輸出控制,并通過將腳本程序加載至攝像機(jī)或模型對象上調(diào)試實(shí)現(xiàn)實(shí)時(shí)控制優(yōu)化。由于在實(shí)現(xiàn)交互的過程中,需要使用到Unity3D中的碰撞檢測,本系統(tǒng)主要運(yùn)用的是Box Collider。這里碰撞的作用是使鼠標(biāo)切換UI,執(zhí)行附在物體上的腳本命令,另外還模擬控制艙對接過程中的碰撞、裝定工具與控制艙接觸時(shí)的碰撞、控制艙與包裝箱之間的碰撞等等。

下面以裝定引信作用方式為例,敘述腳本如何驅(qū)動(dòng)虛擬訓(xùn)練過程。當(dāng)未執(zhí)行操作前,末制導(dǎo)炮彈處于未執(zhí)行代碼狀態(tài),當(dāng)點(diǎn)擊界面左下角工具中的裝定扳手之后,將箭頭移動(dòng)到引信裝定的工作位置,會產(chǎn)生圖8(a)所示動(dòng)作。

圖8 裝定引信作用方式示意圖

當(dāng)代碼執(zhí)行完畢后,引信的工作方式從延期(Y)變成了慣性(G)。代碼設(shè)計(jì)如下:

using UnityEngine;

using System.Collections;

public class S19_PaoDan2_YinXinZhongLei:MonoBehaviour {

GameObject xOjb;//定義一個(gè)物體xOjb

bool bf=false;//定義開關(guān)顯示狀態(tài)

private Color mouseOverColor=Color.yellow;//定義變色

private Color originalColor;//定義原色

private bool GJ=false;//定義工具狀態(tài)

public GUIStyle mysty1;//定義GUI

void Start() {

bf=true;//出示顯示開關(guān)1

originalColor=GetComponent().sharedMaterial.color;//獲取開關(guān)初始原色

}

void OnMouseEnter() {//鼠標(biāo)移動(dòng)至引信作用方式開關(guān)上后執(zhí)行此方法

GetComponent().material.color=mouseOverColor;//開關(guān)顯示顏色變?yōu)辄S色

}

void OnMouseExit() {//鼠標(biāo)離開引信作用方式開關(guān)上后執(zhí)行此方法

GetComponent().material.color=originalColor;//開關(guān)顯示顏色變?yōu)樵?/p>

}

void Update() {//更新方法

if(bf == false) {//變更開關(guān)狀態(tài)后

xOjb=GameObject.Find("P2_GJ02_001");//尋找場景內(nèi)"P2_GJ02_001"物體;

xOjb.GetComponent().enabled=false;//隱藏此物體

bf=true;//停止更新

}

}

void OnMouseUp()//鼠標(biāo)點(diǎn)擊引信作用方式開關(guān)上后執(zhí)行此方法

{

if(BianLiangC.gs_GongJu == "0002") {//如果選取工具正確執(zhí)行一下方法

if(BianLiangC.gl_Step == 12) {//如果步驟狀態(tài)已達(dá)此步驟

xOjb=GameObject.Find("P2_GJ02_001");//尋找物體"P2_GJ02_001"

xOjb.GetComponent().enabled=true;//顯示此物體

xOjb=GameObject.Find("PD2");//尋找物體"PD2"

xOjb.GetComponent().CrossFade("T005");//獲取此物體動(dòng)畫組件并播放動(dòng)畫

bf=false;//變更開關(guān)狀態(tài)執(zhí)行更新方法

}

} else {//如果選取工具不正確執(zhí)行一下方法

GJ=true;

}

}

當(dāng)執(zhí)行完上述程序后,引信的裝定方式改變,如圖8(b)(c)所示。

3.4 訓(xùn)練考核的實(shí)現(xiàn)

為了進(jìn)一步考核學(xué)習(xí)者在虛擬訓(xùn)練過程的掌握效果,系統(tǒng)設(shè)計(jì)了訓(xùn)練考核模塊。本系統(tǒng)訓(xùn)練考核的實(shí)現(xiàn)方式是:在操作的過程中,如果出現(xiàn)操作錯(cuò)誤會提示學(xué)習(xí)者,并且每次提示都會在基礎(chǔ)分100分上扣掉一定分值。訓(xùn)練考核模塊的主要實(shí)現(xiàn)程序如下。

public void Updatechengji()

{//成績更新方法

if(tishi.gameObject.activeSelf == true)//如過提示打開返回不執(zhí)行以下方法

return;

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

if(chengji > 0)//如果成績不為0

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

else

chengji=0;//如果成績?yōu)? 不更新

chengjitext.text="成績:"+chengji;//更新顯示的成績

biaodanchengji.text=chengji.ToString();//更新記錄表單的成績

string sd=jilutext.text; //記錄提示

sd += tishi.text+"-5分"+" ";//將記錄的提示添加到表單

jilutext.text=sd;//更新記錄

}

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

if(tishi.gameObject.activeSelf == true)

tishi.gameObject.SetActive(false);

}

操作錯(cuò)誤時(shí),系統(tǒng)不運(yùn)行正確的交互程序,表現(xiàn)為靜止?fàn)顟B(tài)。當(dāng)參考人員遇到?jīng)]有掌握或者遺忘的操作步驟時(shí),使用圖示下方提示按鈕,系統(tǒng)就會運(yùn)行上述程序步驟,在基礎(chǔ)分上扣掉分值,并且在后續(xù)操作中將會執(zhí)行與上述相同的程序,對參考人員的考核成績作出評判。圖9是使用提示后,系統(tǒng)運(yùn)行程序發(fā)生的狀態(tài)變化。虛擬訓(xùn)練考核功能的實(shí)現(xiàn)為武器裝備訓(xùn)練評估提供了重要支撐[10-11]。

圖9 訓(xùn)練考核界面

4 生成發(fā)布文件

在Unity3D中完成腳本編寫后,將各模塊進(jìn)行系統(tǒng)集成,最終打包生成網(wǎng)頁版運(yùn)行系統(tǒng),系統(tǒng)主文件名后綴為.html,是一個(gè)網(wǎng)頁格式的文件[12]。系統(tǒng)在單機(jī)運(yùn)行時(shí),只需要雙擊.html后綴文件,盡可進(jìn)入運(yùn)行界面,借助Unity WebPlayer插件,可將虛擬訓(xùn)練系統(tǒng)發(fā)布到網(wǎng)上使用。運(yùn)行界面如圖10所示。

圖10 集成后訓(xùn)練系統(tǒng)界面

5 結(jié)論

針對末制導(dǎo)炮彈射擊準(zhǔn)備虛擬訓(xùn)練需求,基于3DSMAX和Unity3D軟件開發(fā)了末制導(dǎo)炮彈射擊準(zhǔn)備虛擬訓(xùn)練系統(tǒng),詳細(xì)介紹了開發(fā)流程,完成3DSMAX動(dòng)畫設(shè)計(jì)與Unity3D腳本編寫過程,達(dá)到了系統(tǒng)開發(fā)目標(biāo),為開發(fā)其他武器裝備虛擬訓(xùn)練條件提供了借鑒。

猜你喜歡
炮彈制導(dǎo)射擊
畫與理
樹上長“炮彈”
為什么射擊最高的成績是10.9環(huán),而不是11環(huán)
機(jī)槍射擊十八式
裝填炮彈
“炮彈”表妹
基于MPSC和CPN制導(dǎo)方法的協(xié)同制導(dǎo)律
基于在線軌跡迭代的自適應(yīng)再入制導(dǎo)
騎炮彈飛行
實(shí)戰(zhàn)化近距離快速射擊方法初探
巴林左旗| 扎赉特旗| 茂名市| 金沙县| 正阳县| 建昌县| 南和县| 稷山县| 名山县| 涿鹿县| 潼南县| 喀什市| 阿拉善盟| 崇仁县| 丹棱县| 芦山县| 宜州市| 盐源县| 莱西市| 博白县| 田阳县| 青冈县| 延庆县| 榕江县| 安徽省| 高碑店市| 微博| 泰和县| 包头市| 宁强县| 灵璧县| 措勤县| 宁波市| 临桂县| 洪泽县| 蕉岭县| 海伦市| 周宁县| 浮梁县| 陈巴尔虎旗| 于都县|