摘要:本文為實(shí)現(xiàn)虛擬現(xiàn)實(shí)程序開發(fā)的有效簡(jiǎn)化,借助PAR平臺(tái)和PAR方法,總結(jié)出一種虛擬現(xiàn)實(shí)程序開發(fā)的新方法。
關(guān)鍵詞:VR技術(shù);Unity 3D; PAR平臺(tái)
隨著我國(guó)科學(xué)技術(shù)水平的不斷提高,各種高新技術(shù)不斷被研發(fā)出來(lái)并投入使用,其中以虛擬現(xiàn)實(shí)技術(shù)(VR)最受各行各業(yè)及技術(shù)研發(fā)人員的關(guān)注,可是在其實(shí)際應(yīng)用當(dāng)中,基于虛擬現(xiàn)實(shí)技術(shù)開發(fā)的應(yīng)用均需要由計(jì)算機(jī)軟件來(lái)實(shí)現(xiàn),進(jìn)而導(dǎo)致虛擬現(xiàn)實(shí)系統(tǒng)軟件尤為復(fù)雜,為此本文將PAR平臺(tái)及方法為基礎(chǔ),結(jié)合虛擬現(xiàn)實(shí)軟件系統(tǒng)主要特征,對(duì)開發(fā)虛擬現(xiàn)實(shí)軟件的新方法進(jìn)行探討。
1 概述
VR技術(shù)是集計(jì)算機(jī)、多媒體、傳感器、人工智能等多種先進(jìn)技術(shù)于一體進(jìn)而達(dá)成人機(jī)交互的一種技術(shù)手段,其可以將當(dāng)前存在的多種技術(shù)進(jìn)行合理應(yīng)用,以此模擬出各式各樣的真實(shí)世界,從而讓人們產(chǎn)生到身臨其境的感覺(jué)。以當(dāng)前科學(xué)技術(shù)的發(fā)展趨勢(shì)來(lái)看,VR技術(shù)在未來(lái)必定成為各行業(yè)的發(fā)展基礎(chǔ),由于其具有較強(qiáng)的跨學(xué)科性,目前已經(jīng)成為科技探索中的第三種手段[1]。VR技術(shù)主要包含三個(gè)特征:其一,沉浸感,指人在虛擬環(huán)境和獲得與現(xiàn)實(shí)世界差距不大的感受;其二,交互性,指人處于虛擬環(huán)境中時(shí),能與虛擬環(huán)境中的事物交互,同時(shí)可于人機(jī)操作界面反饋;其三,構(gòu)想性,人機(jī)交互時(shí)人可不受限制的選擇任一場(chǎng)景漫游,進(jìn)而讓人在各種虛擬環(huán)境中產(chǎn)生更多新想法[2]。
2 Unity 3D簡(jiǎn)介
Unity 3D是一款操作相對(duì)簡(jiǎn)單的游戲開發(fā)工具,是一個(gè)由Unity Technologies公司開發(fā)并進(jìn)行全面整合的專業(yè)游戲引擎[3]。Unity 3D編輯器在微軟公司開發(fā)Windows系統(tǒng)和蘋果公司專屬M(fèi)ac OS X系統(tǒng)中均能穩(wěn)定運(yùn)行,并可在Windows、Mac、iPhone、Android、Windows phone 8等系統(tǒng)平臺(tái)中發(fā)布游戲,同時(shí)也可在Unity web player插件輔助下進(jìn)行網(wǎng)頁(yè)游戲發(fā)布。相比其他游戲引擎,Unity 3D具有更強(qiáng)的跨平臺(tái)性、交互性及可移植性,得到了許多游戲制作公司的青睞[4]。Unity 3D的最初設(shè)計(jì)目的并非虛擬現(xiàn)實(shí),但在場(chǎng)景開發(fā)時(shí)開發(fā)者能實(shí)時(shí)預(yù)覽場(chǎng)景變化,致使其逐漸被VR所利用,物理碰撞器、網(wǎng)絡(luò)功能、燈光特效等功能都可由Unity 3D直接提供,從而可一定程度上降低開發(fā)者工作量,縮短場(chǎng)景渲染時(shí)間,進(jìn)而使得虛擬現(xiàn)實(shí)的開發(fā)效率大幅度提升。
3 Unity 3D開發(fā)VR程序基本過(guò)程
研究發(fā)現(xiàn),開發(fā)一個(gè)典型VR程序通常要進(jìn)行需求分析、模型建立和C#腳本開發(fā)與測(cè)試三個(gè)步驟,本文以相對(duì)簡(jiǎn)單的VR球類游戲?qū)σ陨先齻€(gè)步驟進(jìn)行舉例說(shuō)明。
3.1 程序需求分析
游戲玩法介紹:在一個(gè)盒子中,存在n個(gè)普通小球、一個(gè)較大氣球及一個(gè)透明板,游戲過(guò)程中需借助VR設(shè)備吹動(dòng)氣球,VR設(shè)備與攝像頭在此過(guò)程中能對(duì)用戶嘴部和肢體動(dòng)作行動(dòng)態(tài)捕捉,以評(píng)定用戶吹氣球的動(dòng)作,從而將用戶吹氣球的過(guò)程模擬出來(lái),游戲開始后透明板會(huì)以一定速度向氣球移動(dòng),用戶吹動(dòng)氣球并撞到小球后得分,并使得透明板向遠(yuǎn)離氣球的方向移動(dòng)一段時(shí)間,此段時(shí)間過(guò)后透明板繼續(xù)向氣球移動(dòng),直至透明板撞到氣球,游戲結(jié)束,游戲結(jié)構(gòu)詳見圖1。
3.2 模型建立與加載
以往軟件系統(tǒng)實(shí)現(xiàn)人機(jī)交互多是常通過(guò)等標(biāo)準(zhǔn)輸出入設(shè)備,VR軟件系統(tǒng)則無(wú)需這些硬件設(shè)施,用戶在使用VR設(shè)備期間,僅需要一臺(tái)設(shè)備就可以直接進(jìn)入VR軟件系統(tǒng)為其營(yíng)造的3D環(huán)境中,設(shè)備還能實(shí)時(shí)監(jiān)測(cè)用戶的動(dòng)作與表情,進(jìn)而達(dá)成人機(jī)交互,由此可見,3D建模在VR軟件系統(tǒng)中發(fā)揮著極為重要的作用。通常情況下,3D建模需要首先使用3DS MAX等3D建模軟件進(jìn)行模型設(shè)計(jì),并將這些設(shè)計(jì)好的模型以.fbx或.obj格式存儲(chǔ)起來(lái),隨后將這些模型文件導(dǎo)入U(xiǎn)nity 3D中行上色處理,此過(guò)程中,Unity 3D主要提供了Assetbundle.Load讀取和加載資源與Resources.Load動(dòng)態(tài)加載資源兩種加載方法。第一種加載方法主要是為了應(yīng)對(duì).fbx格式文件無(wú)法在Unity 3D中實(shí)現(xiàn)穩(wěn)定運(yùn)行的狀況,因此普通情況下,常會(huì)利用這種加載方法先將文件轉(zhuǎn)換為.prefab格式,隨后再導(dǎo)入U(xiǎn)nity 3D中進(jìn)行上色。第二種加載方法能夠從缺省打進(jìn)程序包中的AssetBundle里面行資源加載,但通常此類文件需要由用戶自建,運(yùn)行時(shí)為動(dòng)態(tài)加載,加載路徑與文件來(lái)源均能由用戶指定,所以利用這種方式進(jìn)行資源加載,可有效解決資源依賴問(wèn)題,以便于用戶制定路徑和來(lái)源對(duì)GameObject進(jìn)行快速加載[6]。
3.3 C#腳本開發(fā)與測(cè)試
C#腳本是一種以C#為主要編寫方式、以控制3D模型移動(dòng)和功能為主要目的的控制程序,在Unity 3D導(dǎo)入所有以.prefab格式儲(chǔ)存的3D模型后,需用進(jìn)行C#腳本編寫以實(shí)現(xiàn)對(duì)模型的控制。各個(gè)C#腳本相互制約、相互聯(lián)系,其能通過(guò)對(duì)用戶數(shù)據(jù)進(jìn)行全面收集,進(jìn)而控制3D模型,從而完成人機(jī)交互,并達(dá)成多種功能。
4 VR程序開發(fā)關(guān)鍵技術(shù)
4.1 3D建模技術(shù)
研究表明,模型精細(xì)程度與用戶體驗(yàn)之間存在緊密聯(lián)系,因此在一般情況下,優(yōu)秀的VR作品都會(huì)伴隨精致的3D模型,想要構(gòu)建出更為精細(xì)的3D模型,則需要計(jì)算機(jī)圖形技術(shù)和立體顯示技術(shù)這兩種技術(shù)手段的幫助。計(jì)算機(jī)圖形技術(shù)是一種利用計(jì)算機(jī)完成圖形生成、顯示及繪制的技術(shù),圖形在計(jì)算機(jī)中多以數(shù)據(jù)形式存在和表達(dá),如果想要將對(duì)圖形進(jìn)行顯示、繪制、打印等操作,則需要將數(shù)據(jù)轉(zhuǎn)化成線條,此技術(shù)不僅可以實(shí)現(xiàn)大批量機(jī)械圖、電路圖等圖形的快速規(guī)范制作,同時(shí)還能通過(guò)其制作動(dòng)態(tài)圖形和三維圖形,從而將繪圖無(wú)法解決的問(wèn)題有效解決。立體顯示技術(shù)則是一種能實(shí)現(xiàn)虛擬現(xiàn)實(shí)的技術(shù)手段,現(xiàn)階段存在的方式主要包括雙色眼鏡、立體顯示器、真三維立體顯示器、主動(dòng)立體顯示等[7]。
4.2 C#腳本編寫技術(shù)
C#作為一款由微軟公司研發(fā)的程序設(shè)計(jì)語(yǔ)言,主要面向于.NETFramework和NET Core之上的高級(jí)程序設(shè)計(jì)。應(yīng)用Unity 3D開發(fā)VR程序的過(guò)程中,需要開發(fā)者對(duì)3D模型進(jìn)行腳本編寫才能使其運(yùn)作起來(lái),富有生命力,因此在此期間難免會(huì)使用C#語(yǔ)言來(lái)進(jìn)行腳本編寫,并且VR程序越大,需要編寫的C#腳本便會(huì)越多越復(fù)雜。
5 VR在已拓展PAR平臺(tái)中的實(shí)現(xiàn)
5.1 PAR平臺(tái)及方法
PAR平臺(tái)和PAR方法是一種綜合性較強(qiáng)的軟件開發(fā)環(huán)境。PAR平臺(tái)是一種由Apla代碼轉(zhuǎn)換至高級(jí)程序設(shè)計(jì)語(yǔ)言的自動(dòng)轉(zhuǎn)換工具,包含Radl轉(zhuǎn)換為Apla的自動(dòng)轉(zhuǎn)換系統(tǒng)、Apla轉(zhuǎn)換為Java的自動(dòng)轉(zhuǎn)換系統(tǒng)、Apla轉(zhuǎn)換為C++的自動(dòng)轉(zhuǎn)換系統(tǒng)等;PAR方法主要由一系列建模語(yǔ)言和形式化規(guī)則兩方面內(nèi)容組成。
5.2 PAR平臺(tái)拓展思路
框架選擇是軟件開發(fā)過(guò)程中十分重要的步驟之一,高性能框架可在軟件開發(fā)的后續(xù)工作中發(fā)揮出重要作用,但是并非所有軟件框架均可達(dá)到完美程度,比如利用Unity 3D進(jìn)行引擎開發(fā)時(shí),就會(huì)存在許多需要使用C#編寫代碼的問(wèn)題,但針對(duì)這些問(wèn)題,合理使用PAR平臺(tái)及方法,便只需要進(jìn)行少量代碼編寫,即可將一些相對(duì)復(fù)雜的功能設(shè)計(jì)出來(lái),進(jìn)而使編程效率得到大幅度提升[8]。
5.2.1 PAR方法簡(jiǎn)化VR程序開發(fā)過(guò)程
通過(guò)對(duì)大量VR程序開發(fā)過(guò)程進(jìn)行研究,現(xiàn)己明確VR程序的開發(fā)過(guò)程,因此便可將由一系列建模語(yǔ)言和形式化規(guī)則組成的PAR方法拓展到VR領(lǐng)域,并通過(guò)使用效率驅(qū)動(dòng)的開發(fā)方法對(duì)程序進(jìn)行簡(jiǎn)化,從而實(shí)現(xiàn)程序自動(dòng)化。因此簡(jiǎn)化VR程序開發(fā)過(guò)程時(shí),首先可利用PAR方法中的建模語(yǔ)言對(duì)利用UML建模的VR程序進(jìn)行簡(jiǎn)化,其次利用Apla語(yǔ)言對(duì)C#腳本的編寫效率進(jìn)行全面提升,從而減少VR程序開發(fā)所需時(shí)間,并確保開發(fā)者無(wú)需熟悉C#語(yǔ)言,即可實(shí)現(xiàn)復(fù)雜C#腳本的編寫,最后通過(guò)將Apla語(yǔ)言編寫代碼轉(zhuǎn)化成C#腳本,以便于Unity 3D程序隨時(shí)調(diào)用。
5.2.2 PAR平臺(tái)拓展數(shù)據(jù)庫(kù)
使用Unity 3D進(jìn)行VR程序開發(fā)時(shí),大多數(shù)VR程序均要使用數(shù)據(jù)庫(kù)操作,但是利用Unity 3D本身提供的圖形化界面無(wú)法確保這些數(shù)據(jù)庫(kù)操作能夠有效實(shí)現(xiàn),而是需要通過(guò)Visual Studio編寫以下程序來(lái)實(shí)現(xiàn):
更新數(shù)據(jù):
string s=“server=localhost: database=u3dproject; uid=sa;pwd=qwe”;
SqIConnection conn-new SqIConnection
conn.Open0;
SqICommandcmd=new SqICommand0;
cmd.Connection=conn;
cmd.CommandText=“INSERT INTO Userlnfo VALUES (Jom.Boy,1 7,Namchang)”;
SqID ataReader=sdFcmd.ExecuteReader0;
讀取數(shù)據(jù):
string s=“server=localhost;database=u3dproj ect;uid=sa;pwd=qwe";
SqIConnection conn=new SqIConnection(s);
conn.Open0;
SqICommandcmd=new SqICommand0;
cmd.Connection-conn:
cmd.CommandText=“select*from Table”:
SqIDataReadersdr =cmd.ExecuteReader();
while (sdr.Read0){
print(sdr[O].ToString0); )
cmd.Dis pose();
6 結(jié)束語(yǔ)
大數(shù)據(jù)時(shí)代的到來(lái),以及互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,虛擬環(huán)境中的交互體驗(yàn)越來(lái)越受到關(guān)注,VR技術(shù)不僅改變了人機(jī)交互方式,同時(shí)也改變了人類的生活方式,致使基于VR技術(shù)的程序開發(fā)顯得極為重要,為有效應(yīng)對(duì)當(dāng)前VR程序開發(fā)方法復(fù)雜的現(xiàn)象,應(yīng)積極探索新方法以簡(jiǎn)化VR程序開發(fā),其不僅有助于加快VR程序開發(fā)速度,同時(shí)對(duì)于促進(jìn)我國(guó)VR技術(shù)發(fā)展也具有一定推動(dòng)作用。
參考文獻(xiàn)
[1]馬寶忠,孫聰,趙連政等,基于虛擬現(xiàn)實(shí)的變電站交直流電源操作仿真系統(tǒng)設(shè)計(jì)[J].電子設(shè)計(jì)工程,2020,28 (19):31-34+39.
[2]閆亞剛,劉恒,李中旗等,基于虛擬現(xiàn)實(shí)技術(shù)的高壓開關(guān)設(shè)備三維檢修系統(tǒng)設(shè)計(jì)[J].電子設(shè)計(jì)工程,2020,28 (17):156-159+164.
[3]蔣寧,徐濟(jì)惠,基于可視化的VR編輯引擎[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2020,29 (5):76-81.
[4]高偉,王昱霖,郭瑾.國(guó)外虛擬現(xiàn)實(shí)與增強(qiáng)現(xiàn)實(shí)技術(shù)教育研究熱點(diǎn)及啟示[J].開放學(xué)習(xí)研究,2020,25 (2):47-54+62.
[5]彭亮,仲思東,李學(xué)鵬.基于真三維模型的室內(nèi)定位系統(tǒng)設(shè)計(jì)[J].科學(xué)技術(shù)與工程,2020,20 (13):5205-5209.
[6]馮佳,安建強(qiáng).虛擬現(xiàn)實(shí)技術(shù)在國(guó)內(nèi)教育中的運(yùn)用現(xiàn)狀與趨勢(shì)分析[J].開放學(xué)習(xí)研究,2020,25 (1):39-47.
[7]谷冰,基于虛擬現(xiàn)實(shí)技術(shù)和智慧校園設(shè)計(jì)研究[J].電子測(cè)試,2020 (5):135-136.
[8]周哲泓,薛錦云,黃捷文.虛擬現(xiàn)實(shí)軟件系統(tǒng)開發(fā)方法研究[J].計(jì)算機(jī)工程與科學(xué),201 9,41 (11):1968-197 5.
作者簡(jiǎn)介
李傳志(1984-),男,吉林省吉林市人。碩士學(xué)位,講師。研究方向?yàn)橛?jì)算機(jī)科學(xué)與技術(shù)。