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

?

基于Unity的VR模擬飛行軟件設計

2020-10-13 09:37惠鐸鐸馬進胡文東柳平
微型電腦應用 2020年9期

惠鐸鐸 馬進 胡文東 柳平

摘 要: 為了改善模擬飛行的操縱感和體驗感,使模擬飛行更加貼近真實飛行,更好的為航空飛行服務,將VR技術應用于模擬飛行軟件開發(fā)中,用戶通過外接交互設備,使模擬飛行與虛擬現實技術結合起來,實現模擬飛行過程體驗和操控質感的飛躍。本文詳細的介紹了軟件的設計流程及核心關鍵技術要點,同時給出源代碼及解釋。該軟件較傳統(tǒng)的模擬飛行軟件在操縱感和體驗感有了較大的提升,可進一步應用于航空飛行的訓練選拔中。

關鍵詞: Unity; 模擬飛行; VR

中圖分類號: TP311.5 ? ? ?文獻標志碼: A

Abstract: In order to improve the sense of control and experience of simulated flight, make simulated flight closer to real flight, and better serve aviation flight, this article applies VR technology to the development of simulated flight software. Users can connect external interactive equipment to make combination of simulated flight and virtual flight realistic technology to achieve a leap in the texture of the simulated flight process. This article details the software design process and core key technical points, and at the same time gives the source code and explanation. Compared with the traditional flight simulation software, the software has greatly improved the sense of control and experience, and can be further applied to the training and selection of aviation flight.

Key words: unity; simulated flight; VR

0 引言

模擬飛行也可以稱做飛行模擬,是指通過計算機軟件及外部硬件設備來對真實世界飛行中所遇到的各種元素,例如空氣動力,地理環(huán)境,飛行操控系統(tǒng)等,綜合在計算機中進行仿真模擬,并通過外部硬件設備進行飛行仿真操控和飛行感官回饋的一項事物。模擬飛行是依托計算機硬件和軟件技術,應用互聯(lián)網、局域網環(huán)境,進行近似于真實的真飛機的仿真飛行操作技術的運動[1]。高度仿真和互動性強是模擬飛行最顯著的特點。模擬飛行十分經濟,所使用的器材僅僅是普通的家用PC,輔以價格低廉的游戲搖桿等,使經費大大低于實際航空飛行。而模擬飛行和真實飛行的基礎訓練具有融通性,航空領域專家認為模擬飛行是進行真實飛行基礎訓練的最好途徑。模擬飛行還有更加的現實作用是引導青少年投身航空事業(yè),為國家儲備更多的航空人才[2]。

VR(Virtual Reality)即虛擬現實技術,是一種能夠產生與真實場景在視覺、聽覺以及觸覺等方面及其相似的虛擬場景的計算機技術,用戶通過必要的交互設備,在虛擬場景中進行交互操作,達到身臨其境的效果,具有強大的沉浸性、交互性和構想性等特征[3]。將該技術應用到模擬飛行領域中將大大提高模擬飛行設備的性能,使模擬飛行設備更加貼近真實飛行,增強操縱體驗的真實感,將大大提高應用飛行模擬器進行教學、訓練等的效率[4]。

1 軟件設計

該軟件是應用Unity Technologies公司的游戲引擎Unity開發(fā)的,Unity提供了一個功能齊備、容易操作的開發(fā)環(huán)境,幫用戶輕松創(chuàng)建如三維視頻游戲、建筑可視化、實時三維動畫等類型互動內容,是一個全面整合的專業(yè)游戲引擎[5]。它可以利用交互圖形化開發(fā)軟件,可運行在Windows和Mac OS操作系統(tǒng)下,開發(fā)出來的軟件可發(fā)布至Windows、Android等多個平臺[6]。

本軟件是應用Unity自帶的C#腳本語言開發(fā),要求開發(fā)和部署電腦的最低配置為獨立顯卡,4G內存,主頻為3.4GHz,Unity開發(fā)版本為5.1.1。軟件的硬件部分由外接操縱桿和油門桿以及腳舵組成,分別采用賽鈦客X52pro和賽鈦客Rudder Peddal,同時還有外接的虛擬現實頭戴設備索尼HMZ-T1,如圖1所示。

軟件設計流程如圖2所示。

本軟件塑造了一個虛擬現實的三維立體環(huán)境,該環(huán)境是模擬真實的機場創(chuàng)建,在機場上空虛擬了一條可視的航線,該航線的參數來源于真實的飛行參數。操作者通過操縱游戲桿,油門桿和腳舵來控制飛機模型沿著航線飛行。航線的設置總共分為5種,這5種航線的難易程度是等效的。每選擇一種航線的模擬飛行時間是5分鐘,5分鐘結束的時候程序退出。

1.1 登錄界面

運行程序后登錄界面,如圖3所示。

被試輸入姓名同時選擇好軌跡后,點擊開始就可以進入測試,點擊退出則可以退出程序。軌跡的選擇從1-5,難度由低到高,隨著難度的增加,軌跡的坡度逐漸變大,彎度逐漸增多。

界面設計使用Unity自帶的NGUI,NGUI是嚴格遵循KISS原則并用C#編寫的Unity插件,提供強大的UI系統(tǒng)和事件通知框架[7]。NGUI完全集成到Inspector面板中,不需要點擊Play按鈕就能查看結果,在場景視圖中看到的就是在游戲視圖中得到的。每一個UI場景,都是以一個UIRoot為UI游戲對象樹的根。在菜單欄中點擊“NGUI”→“Create”→“2D UI”,本軟件中UIRoot設計,如圖4所示。

1.2 場景參數初始化

當用戶在輸入用戶名和選擇好航線軌跡的時候,點擊開始,程序將初始化模擬飛行場景參數同時打開數據庫。初始化模擬飛行場景參數包括場景地圖的建立、飛機模型的預制、飛行航線的渲染。預設軌跡參數:

void Start()

{

PublicApplicationData.verticallevel = 50;

PublicApplicationData.horizontalleve = 100;

roudwid = 5f;

PreSet();

CreateData();

CreateUpmesh("roud", roudface, roud, physicmaterial, false);

CreateUpmesh("roudV", roudface, roudV, physicmaterial, false);

}

在Unity中,Start()函數是在加載場景后只運行一次的函數,該函數可以用來設置預設場景。

1.3 模擬飛行操作

在模擬飛行過程中,油門桿控制飛機的飛行速度,游戲桿和腳舵控制飛機的飛行方向和姿態(tài),其中前后推游戲桿表示控制飛機的俯仰角度,左右推游戲桿表示控制飛機的滾轉角,腳舵控制飛機的偏航角。在飛行過程中,數據庫打開,實時采集飛行數據,采集數據的頻率為0.2秒/次,采集數據的樣本是飛機模型的重心與飛行航線之間的距離。在模擬飛行中外接虛擬現實頭戴設備索尼HMZ-T1,選擇并排輸入模式,實現三維場景飛行。模擬飛行的場景,如圖5所示。

模擬飛行過程中對飛機操縱的源代碼如下:

void FixedUpdate ()

{

Control();

CaculateParameters();

AddForceAndTouque();

}

在Unity中,FixedUpdate()函數在每固定時間內刷新一次。該函數在固定時間內計算舵面偏角、飛行參數及加載力和力矩。

1.4 數據的采集

本軟件的數據庫是采用Access2007數據庫,在數據庫中包含兩張數據表包括基本信息表(basicMessage)和測試數據記錄表(testRecord),basicMessage表記錄了操作者的姓名和選擇的航線軌跡,testRecord表記錄了飛機模型的重心與飛行航線之間的距離,以及記錄該數據時距離程序運行開始時的時間[8],如圖6所示。

2 關鍵技術

2.1 VR虛擬現實技術

為了使模擬飛行場景更加貼近真實的飛行環(huán)境,我們采用了虛擬現實技術,利用計算機模擬人的雙眼立體視覺,人的雙眼之所以能夠感受到物體的前后遠近位置,是因為人的左右兩眼的視角不同所致,左眼看到的物體稍微偏左側,右眼看到物體稍微偏右側,經由視神經傳至大腦,再由大腦將兩個影像整合成單一個立體影像[9]。我們軟件開發(fā)時在場景中設置兩個攝像機,模擬人的兩只眼睛,兩個攝像機之間的距離模擬人的瞳孔之間的距離。左右攝像機加載在飛機模型上,作為其的子物體跟隨在飛機模型的后方[10],具體設置方法如圖7所示。

攝像機位置之間的設置如圖8、圖9所示。

攝像機初始化腳本為:

using UnityEngine;

using System.Collections;

publicclassCamraControl : MonoBehaviour {

publicCamera camra;

publicGameObject target;

publicRigidbody rigi;

void Start ()

{

rigi=target.GetComponent();

}

}

2.2 飛機飛行動力模型

本程序的飛機模型采用通航飛行氣動模型,在程序初始化時,首先獲取飛機模型剛體,同時預設飛機各項飛行參數。獲取飛機模型剛體代碼planeRigi=this.GetComponent〈Rigidbody〉();在飛機飛行過程中,計算機實時獲取飛機各項操縱值,首先獲取游戲桿橫向、縱向操縱桿量dx、dz,以及左右蹬舵的量dy。

dx = -Input.GetAxis("X");

dz = Input.GetAxis("Z");

dy = Input.GetAxis("Y");

再計算飛機的副翼偏角、平尾偏角、方向舵偏角,以及由油門桿位置計算動力系數。

dx = -dx * 45;

dz = dz *35;

dy = -dy * 25;

dp = -Input.GetAxis("Power") + 1;

計算氣動力的方程為

Y = (Cy0 + Cya * aDeg + Cywy * wy + Cydz * dz) * pf;

X = (Cx0 + Cxa * aDeg * aDeg ) * pf;

Z = Czb * bDeg * pf;

P = Pd * dp;

其中,Y為升力、X為阻力、Z為側力、P為推力。Cy0為零升力系數,Cya為迎角升力系數,aDeg為迎角,Cywy為俯仰升力系數,wy為偏航角速度,Cydz為平尾升力系數,dz為平尾偏轉角,pf為氣動力,Cxa為阻力系數,Czb為測力系數,bDeg為側滑角,Pd為推力系數,dp為油門位置。

Fx = P * Mathf.Cos(aRad) - X;

Fy = P * Mathf.Sin(aRad) + Y;

Fz = Z;

Fx為機頭方向的力,Fy為機背方向的力,Fz為機翼方向的力。計算氣動力矩:

mx = (mxb * bDeg + mxwx * wx + mxwy * wy + mxdx * dx + mxdy * dy)*pf*b;

my = (myb * bDeg + mywx * wx + mywy * wy + mydx * dx + mydy * dy)*pf*b;

mz = (mz0 + mza * aDeg + mzda * da + mzwz * wz + mzdz * dz)*pf*c;

mx為滾轉力矩,my為偏航力矩,mz為俯仰力矩。mxb為側滑角滾轉力矩導數,mxwx為滾轉阻尼系數,wx為滾轉角速度,mxwy為偏航滾轉力矩系數,wy為偏航角速度,mxdx為副翼偏航力矩系數,dx為副翼偏轉角,mxdy為方向舵滾轉力矩系數,dy為方向舵偏轉角,mza為迎角俯仰力矩導數,mzda為迎角變化率俯仰力矩導數,da為迎角變化率,mzwz為俯仰阻尼系數,dz為平尾偏轉角,b為翼展,c為平均氣動弦長。

對飛機加載力和力矩:

Force.x = Fz;

Force.y = Fy;

Force.z = Fx;

Torque.x = Mz;

Torque.y = My;

Torque.z = Mx;

planeRigi.AddRelativeForce(Force, ForceMode.Force);

planeRigi.AddRelativeTorque(Torque,ForceMode.Force);

3 總結

對基于unity的VR模擬飛行軟件的軟件需求和軟件設計進行了詳細的說明,同時對開發(fā)過程中的幾個關鍵問題進行詳細的闡述。將VR引入模擬飛行軟件的開發(fā)中,是讓新興的技術融入模擬飛行中,為該領域增添新的血液和動力,增強人們的模擬飛行體驗,更好服務人類具有重要的意義。在下一步工作中,在與真實飛機操縱感之間的對比中,進一步改進技術,縮小兩者之間的差距,使該軟件可用于飛行員選拔和訓練中。

參考文獻

[1] 惠鐸鐸,馬進,張利利,等.飛行團隊協(xié)作能力測試系統(tǒng)研究與開發(fā)[J].微型電腦應用,2019,35(5):8-10.

[2] 惠鐸鐸,馬進,柳平,等.基于VR技術心理測試軟件開發(fā)[J].計算機技術與發(fā)展,2018,28(2):188-190.

[3] 張雪峰,施浩,朱正,等.基于VR/AR的初教六飛機起落架模型設計制作[J].計算機工程應用技術,2019,15(3):264-265.

[4] Yu-Cheng Lin,Yen-Pei Chen,Huey-Wen Yien,et al. Integrated BIM, game engine andVRtechnologies for healthcare design: A case study in cancer hospital[J]. Advanced Engineering Informatics,2018(36):55-58.

[5] 宣雨松. Unity3D游戲開發(fā)[M]. 北京: 人民郵電出版社,2012: 108-113.

[6] 曲小宇.民用飛機模擬飛行軟件研究[J].軟件導刊,2016,15(7):115-117.

[7] 王愛軍,李中永,顏世波.基于Unity3D的博物館虛擬漫游系統(tǒng)設計[J].湖南工程學院學報,2019,29(1):49-53.

[8] 惠鐸鐸,沈超,馬進,等.基于Unity的團隊績效測評軟件開發(fā)[J].電子測試,2014,10(305):151-152.

[9] 張利利,李仁義,李曉京,等.Unity3D與數據庫通信方法的研究[J].計算機技術與發(fā)展,2014,3(24):229-231.

[10] 張志安.基于VR技術的虛擬校園系統(tǒng)的設計與實現[J].光子學報,2011,5(40):769-772.

(收稿日期: 2019.06.24)

岳普湖县| 罗源县| 泽库县| 调兵山市| 靖江市| 榆中县| 巩义市| 亳州市| 丘北县| 白城市| 吉木萨尔县| 县级市| 南汇区| 常宁市| 泸州市| 华坪县| 海晏县| 南通市| 额济纳旗| 浦江县| 广饶县| 玉林市| 富顺县| 鹿邑县| 阜宁县| 教育| 芒康县| 安多县| 贵溪市| 安国市| 喀什市| 贺州市| 金寨县| 景洪市| 肥乡县| 五莲县| 宁强县| 保定市| 肇州县| 海兴县| 休宁县|