• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Unity3D與VR頭盔的虛擬現(xiàn)實(shí)體感游戲開(kāi)發(fā)

      2017-09-09 20:01:22張陽(yáng)楊長(zhǎng)強(qiáng)鄭慧平
      軟件導(dǎo)刊 2017年8期
      關(guān)鍵詞:虛擬現(xiàn)實(shí)

      張陽(yáng)+楊長(zhǎng)強(qiáng)+鄭慧平

      摘 要:智能手機(jī)迅速普及,VR虛擬現(xiàn)實(shí)頭盔技術(shù)亦日趨成熟。將手機(jī)與VR頭盔結(jié)合,開(kāi)發(fā)出虛擬現(xiàn)實(shí)的手機(jī)體感游戲。利用手機(jī)中的陀螺儀系統(tǒng),實(shí)現(xiàn)慣性定位來(lái)捕獲人身體的變化,達(dá)到體感操作目的。使用Unity3D雙屏顯示與VR頭盔結(jié)合,通過(guò)手機(jī)便可身臨其境地體驗(yàn)到沉浸式的虛擬現(xiàn)實(shí)效果。配合藍(lán)牙搖桿控制器,玩家通過(guò)佩戴裝載有智能手機(jī)的VR頭盔,即可體驗(yàn)身臨其境的虛擬現(xiàn)實(shí)體感游戲。

      關(guān)鍵詞:虛擬現(xiàn)實(shí);Unity3D;VR;手機(jī)體感游戲

      DOIDOI:10.11907/rjdk.171222

      中圖分類(lèi)號(hào):TP319

      文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào)文章編號(hào):1672-7800(2017)008-0119-04

      0 引言

      VR虛擬現(xiàn)實(shí)技術(shù)是一種可以創(chuàng)建和體驗(yàn)虛擬世界的計(jì)算機(jī)仿真系統(tǒng)。它利用計(jì)算機(jī)生成一種模擬環(huán)境,是一種多源信息融合的交互式三維動(dòng)態(tài)視景和實(shí)體行為系統(tǒng)仿真[1]。2015年三星、谷歌、微軟等大型公司進(jìn)軍VR市場(chǎng),2016年被業(yè)內(nèi)稱(chēng)為VR元年。本文中的游戲使用的暴風(fēng)魔鏡四代VR頭盔作為交互式硬件。

      Unity3D游戲引擎平臺(tái)開(kāi)放、交互友好,可使用C#、JS、Boo語(yǔ)言進(jìn)行開(kāi)發(fā),并可發(fā)布成PC、網(wǎng)頁(yè)、安卓、蘋(píng)果、家用機(jī)等跨平臺(tái)應(yīng)用版本,使用Unity3D可以更好地普及虛擬現(xiàn)實(shí)體感游戲?;赨nity3D開(kāi)發(fā)并發(fā)布成手機(jī)應(yīng)用,將安裝有應(yīng)用的手機(jī)放入暴風(fēng)魔鏡等主流VR頭盔中,使玩家沉浸式地體驗(yàn)體感游戲。

      1 概述

      本游戲策劃取材于“真人CS”戶(hù)外對(duì)抗活動(dòng)。游戲采用第一人稱(chēng)視角,玩家佩戴VR頭盔后,通過(guò)頭部和身體的移動(dòng)控制角色移動(dòng)與玩家視野,用藍(lán)牙控制器控制游戲角色射擊。在360°沉浸式的VR視覺(jué)效果中,體感方式控制游戲,在游戲中取得資源,完成任務(wù)通過(guò)關(guān)卡。

      程序開(kāi)發(fā)分為美工開(kāi)發(fā)、游戲場(chǎng)景與UI搭建、游戲程序設(shè)計(jì)、角色程序設(shè)計(jì)、VR系統(tǒng)配置幾個(gè)部分。游戲開(kāi)發(fā)流程如圖1所示。

      游戲設(shè)計(jì)過(guò)程:調(diào)用Unity官方API函數(shù)AnimationEvent創(chuàng)建動(dòng)畫(huà)事件播放過(guò)場(chǎng)動(dòng)畫(huà),AudioSettings實(shí)現(xiàn)音頻控制,通過(guò)GUIContent界面內(nèi)容、GUILayout界面布局、GUIStyleState界面風(fēng)格狀態(tài)函數(shù)對(duì)界面內(nèi)容進(jìn)行編輯,實(shí)現(xiàn)模式選擇等功能。游戲中設(shè)置多處場(chǎng)景觸發(fā)器,當(dāng)玩家抵達(dá)規(guī)定的地方時(shí),觸發(fā)道具獲得與場(chǎng)景變化。游戲中玩家需要找到并操作智能計(jì)算機(jī)控制臺(tái),關(guān)閉路徑上的陷阱,打開(kāi)通過(guò)下一關(guān)卡的控制門(mén)。

      VR系統(tǒng)開(kāi)發(fā)需要使用可以放入手機(jī)的VR頭盔,游戲程序通過(guò)調(diào)用手機(jī)內(nèi)的陀螺儀裝置實(shí)現(xiàn)慣性定位、虛擬漫游,并使用藍(lán)牙遙控器對(duì)手機(jī)中游戲應(yīng)用進(jìn)行控制。VR頭盔如圖2所示,藍(lán)牙遙控器如圖3所示。

      人眼之所以能分辨出立體物體與平面物體,是因?yàn)槿说膬蓚€(gè)眼睛看到不同的視覺(jué)畫(huà)面。VR頭盔利用這一點(diǎn),將人的兩個(gè)眼睛看到的畫(huà)面單獨(dú)分開(kāi)顯示,這就要求在游戲開(kāi)發(fā)時(shí)設(shè)置成雙屏畫(huà)面。雙屏畫(huà)面有細(xì)微差別,以供人眼看到后顯示出三維效果。游戲畫(huà)面如圖2所示,佩戴頭盔后的操作效果如圖2左下角所示。

      2 游戲程序算法

      2.1 A星算法

      游戲設(shè)計(jì)了多種敵方機(jī)器人,要使敵方機(jī)器人進(jìn)入防御狀態(tài)很容易,可通過(guò)設(shè)置坐標(biāo)位置或采用Unity3D中的AI設(shè)計(jì)方法。但要讓敵人智能逼真地動(dòng)起來(lái),就需要用到相應(yīng)的算法——A星算法。

      A星算法在人工智能中是一種典型的啟發(fā)式搜索算法[2],解決搜索問(wèn)題的過(guò)程就是從開(kāi)始位置點(diǎn)經(jīng)過(guò)每一個(gè)過(guò)程位置點(diǎn)到目標(biāo)位置點(diǎn)的過(guò)程。這些點(diǎn)構(gòu)成一個(gè)圖的數(shù)據(jù)結(jié)構(gòu),這個(gè)圖就是狀態(tài)空間,狀態(tài)空間搜索就是在這些點(diǎn)中找到一條從起點(diǎn)到終點(diǎn)的路徑過(guò)程。

      一般情況下,使用的狀態(tài)空間搜索類(lèi)似于數(shù)據(jù)結(jié)構(gòu)中圖的遍歷方法,分為深度優(yōu)先和廣度優(yōu)先兩種搜索方式。廣度優(yōu)先,顧名思義是從初始點(diǎn)一層一層向下找,直到找到目標(biāo)為止。深度優(yōu)先是按照層的順序先搜索完成一個(gè)分支,再搜索另一個(gè)分支,直至找到目標(biāo)為止。當(dāng)過(guò)程中的點(diǎn)過(guò)多時(shí),無(wú)論是深度優(yōu)先搜索還是廣度優(yōu)先搜索,都會(huì)使得搜索效率降低,因此需要使用啟發(fā)式搜索算法。

      之所以稱(chēng)為啟發(fā)式搜索算法是因?yàn)檫@種算法只是一種猜測(cè)。啟發(fā)式搜索就是從起點(diǎn)對(duì)周?chē)總€(gè)位置點(diǎn)進(jìn)行評(píng)估,將起點(diǎn)周?chē)c(diǎn)寫(xiě)進(jìn)open表中,計(jì)算出表中每個(gè)點(diǎn)的h(n)和g(n),得到評(píng)估值f(n),將f(n)較小的值寫(xiě)進(jìn)close表中,繼續(xù)將close表中周?chē)狞c(diǎn)加入open表中,注意障礙物和已加入的點(diǎn)不作處理。逐個(gè)對(duì)位置點(diǎn)遍歷直到終點(diǎn)目標(biāo)。啟發(fā)中的估價(jià)用估價(jià)函數(shù)表示:

      f(n)=g(n)+h(n)(1)

      函數(shù)表示的含義如下:f(n):節(jié)點(diǎn)n的估價(jià)函數(shù);g(n):在狀態(tài)空間中從初始位置點(diǎn)到第n個(gè)位置點(diǎn)的實(shí)際代價(jià);h(n):從n到目標(biāo)節(jié)點(diǎn)最佳路徑的估計(jì)代價(jià)[3]。

      h(n)是估計(jì)出來(lái)的,計(jì)算方法有多種,這里采用最方便的方法,即h(n)等于起點(diǎn)和終點(diǎn)所在行差的絕對(duì)值加上起點(diǎn)和終點(diǎn)所在列差的絕對(duì)值。h(n)在啟發(fā)搜索中對(duì)位置的估價(jià)起著很重要的作用。A星搜索在搜索時(shí)能夠利用啟發(fā)式信息智能地調(diào)整搜索策略。

      A星搜索是一種迭代的有序搜索。從起點(diǎn)開(kāi)始通過(guò)評(píng)價(jià)函數(shù)f*(n)評(píng)價(jià)點(diǎn)close表中各個(gè)鄰接點(diǎn)的狀態(tài)。若新的預(yù)測(cè)值小于之前迭代值則將該點(diǎn)作為新的迭代點(diǎn),直到遍歷到終點(diǎn)為止。

      定義如下:

      f*(n)=g*(n)+h*(n)(2)

      其中各函數(shù)表示的具體含義如下:g*(n):表示沿路徑從起點(diǎn)到當(dāng)前點(diǎn)的移動(dòng)耗費(fèi);h*(n):從第n個(gè)點(diǎn)到目標(biāo)點(diǎn)的估算代價(jià);f*(n):從初始點(diǎn)經(jīng)過(guò)第n個(gè)點(diǎn)到達(dá)目標(biāo)點(diǎn)的預(yù)計(jì)值[4]。將這個(gè)值與之前的迭代值比較,若小于迭代值便將該點(diǎn)加入“最優(yōu)路徑”中,當(dāng)?shù)侥繕?biāo)點(diǎn)時(shí)迭代結(jié)束,得到的路徑便是“最優(yōu)路徑”。endprint

      A星算法思想就是從起始點(diǎn)開(kāi)始不斷迭代的過(guò)程,下一個(gè)迭代點(diǎn)從目前點(diǎn)的周?chē)c(diǎn)產(chǎn)生,計(jì)算出目前點(diǎn)的f*(n)值和周?chē)c(diǎn)的f*(n)值,每次保留數(shù)值最小的f*(n)將其加入最優(yōu)路徑表中。如此下去,直到迭代到終點(diǎn)為止。這是一個(gè)不斷搜索的過(guò)程,最后得到的路徑便是最優(yōu)路徑。

      2.2 OBB包圍盒碰撞檢測(cè)算法

      三維物體的碰撞檢測(cè)比二維物體復(fù)雜得多,這里使用OBB包圍盒碰撞檢測(cè)算法實(shí)現(xiàn)。在游戲引擎中,對(duì)于場(chǎng)景物體進(jìn)行表面凸分解,組織層次凸塊二叉樹(shù),然后為凸塊構(gòu)建OBB包圍盒,最后對(duì)凸塊進(jìn)行三角形帶壓縮編碼來(lái)完成三維物體間的碰撞檢測(cè)[5]。

      構(gòu)建凸塊的OBB包圍盒,凸塊所有頂點(diǎn)的坐標(biāo)向量協(xié)方差矩陣計(jì)算如下:

      Cjk=13n∑ni=0(pjipki+qjiqki+rjirki)(3)

      μ=13n∑ni=0(pi+qi+ri)1≤j,k≤3(4)

      p、q、r為凸塊頂點(diǎn)的三維坐標(biāo)系,μ為三維坐標(biāo)凸塊的向量均值,C是協(xié)方差矩陣。碰撞檢測(cè)中遍歷物體的層次凸塊二叉樹(shù),可采用SAT來(lái)判斷兩個(gè)凸多邊形是否發(fā)生重疊,檢測(cè)凸塊OBB包圍盒是否相交,以實(shí)現(xiàn)碰撞檢測(cè)算法,最終完成相應(yīng)的游戲開(kāi)發(fā)設(shè)計(jì)。

      2.3 陀螺儀空間定位算法

      主流手機(jī)中都內(nèi)置有陀螺儀傳感器,三軸磁傳感器的坐標(biāo)方向是參考地磁場(chǎng),當(dāng)運(yùn)動(dòng)控制器件指向發(fā)生變化時(shí),相對(duì)于地磁場(chǎng)會(huì)有一定變化。當(dāng)運(yùn)動(dòng)控制器件指向任意方向時(shí),地磁場(chǎng)產(chǎn)生的作用會(huì)分配在磁傳感器的三軸上,表示為如下關(guān)系式:

      axisX2+axisY2+axisZ2=Cgnd(5)

      axisX:地磁場(chǎng)向量在傳感器X軸上的分量;axisY:地磁場(chǎng)向量在傳感器Y軸上的分量;axisZ:地磁場(chǎng)向量在傳感器Z軸上的分量; Cgnd:地磁場(chǎng)向量目前作用于運(yùn)動(dòng)控制器件的磁場(chǎng)強(qiáng)度。axisX、axisY、axisZ是目前地磁傳感器三軸采集的磁場(chǎng)強(qiáng)度值,進(jìn)行必要的數(shù)據(jù)處理后,可計(jì)算出平面指向角α和俯仰角δ:

      α=arctanaxisYaxisX(6)

      δ=arctanaxisZaxisX2+axisY2(7)

      重力加速度方向在某一固定位置是恒定的[5],根據(jù)重力加速度在多軸加速度傳感器上的分量可計(jì)算出此時(shí)設(shè)備的俯仰角。

      根據(jù)計(jì)算出的俯仰角信息、加速度信息以及重力感應(yīng)信息,實(shí)時(shí)定位用戶(hù)的頭部運(yùn)動(dòng)狀態(tài),根據(jù)用戶(hù)的頭部變化、視角變化,控制游戲引擎中的攝像機(jī)位置,實(shí)現(xiàn)攝像機(jī)完全跟隨用戶(hù)視角變化而移動(dòng),達(dá)到VR虛擬現(xiàn)實(shí)效果。

      3 游戲?qū)崿F(xiàn)

      Unity3D 是一款功能強(qiáng)大的專(zhuān)業(yè)游戲開(kāi)發(fā)引擎,可用于創(chuàng)建3D交互式應(yīng)用程序,也可以跨平臺(tái)發(fā)布。它支持絕大多數(shù)文件格式,具有易用、靈活的著色器、支持聯(lián)網(wǎng)、實(shí)時(shí)三維圖形混音頻流及視頻流[6]等功能。本游戲使用 MAYA 進(jìn)行場(chǎng)景建模。為了達(dá)到更好的視覺(jué)效果,在建模過(guò)程中進(jìn)行了一系列優(yōu)化,以充分達(dá)到逼真沉浸式的體驗(yàn)效果。

      3.1 游戲開(kāi)發(fā)需求分析

      在游戲開(kāi)發(fā)設(shè)計(jì)中,需求分析是首要也是最重要的環(huán)節(jié),良好的分析活動(dòng)有助于避免或盡早剔除早期錯(cuò)誤,提高游戲開(kāi)發(fā)效率與質(zhì)量,降低開(kāi)發(fā)成本。

      此游戲故事情節(jié)開(kāi)始于一家邪惡集團(tuán)派遣各式各樣的殺人暴徒和機(jī)器人來(lái)毀滅城市。玩家可以選擇獨(dú)闖虎穴、直搗黃龍,潛入總部毀滅基地。游戲角色是一位機(jī)槍手,游戲氛圍刺激緊張,在玩家還在研究手中武器時(shí),敵人可能已經(jīng)沖上來(lái)。正是這種駭人的對(duì)手,使玩家必須打起十二分精神,仔細(xì)觀察周?chē)?,找到一切隱性的通關(guān)秘訣。精致逼真的3D場(chǎng)景,眾多的特殊道具,帶給玩家全新的視覺(jué)和玩法體驗(yàn)。

      根據(jù)劇情游戲設(shè)計(jì)3個(gè)關(guān)卡:第1關(guān)以科幻色彩濃厚的工業(yè)大樓作為主要場(chǎng)景,任務(wù)是玩家潛入軍事基地收集情報(bào),殺死邪惡暴徒并破壞設(shè)備,然后順利逃出軍事基地;第2關(guān)任務(wù)是潛入基地深處殺死幕后指揮官并破壞設(shè)備,在到達(dá)指揮室的過(guò)程中,玩家要不斷收集場(chǎng)景中紙片,紙片內(nèi)容會(huì)指引玩家找到指揮官;第3關(guān)玩家需要到達(dá)基地總部引爆炸彈,毀掉整個(gè)軍事基地,贏得最后勝利。

      在游戲中玩家扮演機(jī)槍手,可射擊或躲避,可操縱敵軍設(shè)備,通過(guò)藍(lán)牙控制器以及頭部和身體移動(dòng)來(lái)控制方向、躲避敵人、射擊、更換裝備等。在突破游戲設(shè)計(jì)關(guān)卡后,完成設(shè)定的劇情任務(wù)便可獲勝。

      3.2 場(chǎng)景優(yōu)化

      三維虛擬游戲中,模型建立是非常重要的部分,逼真的場(chǎng)景能夠迅速吸引玩家的眼球,激發(fā)玩家的興趣。然而VR游戲又不同于普通游戲,最大差別在于VR的渲染是普通游戲的兩倍,因此在性能優(yōu)化上必須下很大功夫。

      (1)使用法線貼圖優(yōu)化表面。在搭建模型方面,為了實(shí)現(xiàn)逼真效果,必然要建立很多畫(huà)面,導(dǎo)致渲染次數(shù)增加,性能消耗增大。為解決這一問(wèn)題,最直接的方法便是改建模,每個(gè)模型減掉一半的面來(lái)實(shí)現(xiàn),但這樣逼真效果就會(huì)降低。在保證高性能和高逼真度的情況下,本文使用法線貼圖優(yōu)化表面。

      (2)烘焙技術(shù)。在Unity中,實(shí)時(shí)光照可帶來(lái)很好的體驗(yàn)效果,但由于手機(jī)CPU有限,實(shí)時(shí)光照過(guò)多會(huì)導(dǎo)致渲染次數(shù)增加,最終反映在畫(huà)面上便是抖動(dòng)嚴(yán)重,出現(xiàn)卡頓眩暈現(xiàn)象。為了解決這個(gè)問(wèn)題,在游戲中選擇一個(gè)實(shí)時(shí)光照,其它作為烘焙光照。光照探針(lightprobe)能對(duì)靜態(tài)物品產(chǎn)生一個(gè)模擬光照,但這個(gè)光照是靜態(tài)的,在游戲開(kāi)始時(shí)進(jìn)行渲染,游戲過(guò)程中不會(huì)重復(fù)渲染。這樣做的好處就是在游戲開(kāi)始時(shí)只做一次渲染,不必進(jìn)行重復(fù)渲染,大大提高了渲染效率。

      (3)遮擋剔除技術(shù)。游戲中每個(gè)被展示的部分放在一個(gè)特別的包中,稱(chēng)之為“描繪指令”(draw call),通過(guò)這個(gè)包傳遞到3D部分在屏幕上顯示[7]。CPU負(fù)責(zé)相應(yīng)模型和場(chǎng)景的包裝和顯示。場(chǎng)景中每一顆子彈消耗的字節(jié)和一個(gè)角色消耗的字節(jié)是一樣的,如果不降低 draw call,電腦就會(huì)把場(chǎng)景中所有的物體都進(jìn)行渲染,嚴(yán)重增加了CPU的負(fù)載,降低了渲染效率。解決這個(gè)問(wèn)題需要用到遮擋剔除技術(shù)。遮擋剔除即當(dāng)物體被其它物體遮擋,不出現(xiàn)在攝像機(jī)可視范圍內(nèi)時(shí),不對(duì)其進(jìn)行渲染。遮擋剔除并不是自動(dòng)完成的,需要進(jìn)行相應(yīng)設(shè)置。首先關(guān)卡中的幾何體必須分割成不同尺寸的塊,每個(gè)塊生成一個(gè)可見(jiàn)列表,當(dāng)攝像機(jī)位于該范圍內(nèi)時(shí)激活列表,不在列表中的將其剔除。endprint

      (4)LOD技術(shù)。該技術(shù)需要建兩個(gè)模型,一個(gè)面數(shù)多,較為逼真,一個(gè)面數(shù)少,較為粗糙,具體執(zhí)行過(guò)程如下:定義兩個(gè)關(guān)鍵距離D1和D2作為攝像機(jī)和場(chǎng)景距離,當(dāng)實(shí)際距離小于D1時(shí),調(diào)用高清模型,當(dāng)距離大于D2時(shí),調(diào)用較粗糙模型。通過(guò)選擇不同精度模型,大量減少繪制的頂點(diǎn)數(shù)目,從而對(duì)游戲場(chǎng)景的實(shí)時(shí)效果進(jìn)行優(yōu)化。在Unity中可以通過(guò)Component→Rendering→LODGroup進(jìn)行操作,選擇需要控制的模型以及進(jìn)行距離設(shè)置。

      (5)像素優(yōu)化。overdraw指一個(gè)像素被多次繪制,像素優(yōu)化的重點(diǎn)便是降低overdraw??刂评L制順序,便是為了最大限度地避免overdraws。在PC上,資源無(wú)限,為了得到最準(zhǔn)確的渲染結(jié)果,繪制順序可能是從后往前繪制不透明物體,然后再繪制透明物體進(jìn)行混合。但在移動(dòng)平臺(tái)上,這種方式會(huì)造成大量的overdraw。從前往后繪制之所以可以減少overdraw,都是因?yàn)樯疃葯z驗(yàn)的功勞[8]。

      在Unity中,Shader中被設(shè)置為“Geometry” 隊(duì)列的對(duì)象都是從前往后繪制,而其它固定隊(duì)列(如“Transparent”、“Overla”等)的物體,則都是從后往前繪制。這意味著,可以盡量把物體的隊(duì)列設(shè)置為“Geometry” ,還可以充分利用Unity隊(duì)列來(lái)控制繪制順序。例如,天空盒子幾乎覆蓋了所有像素,并且它永遠(yuǎn)會(huì)在所有物體的后面。因此,可以將它的隊(duì)列設(shè)置為“Geometry+1”,這樣就可保證降低overdraws。

      3.3 代碼優(yōu)化

      代碼編寫(xiě)過(guò)程中,能夠使用單例就盡量少用靜態(tài)。單例在程序中只保留一份,而靜態(tài)是多個(gè);使用對(duì)象池對(duì)重復(fù)使用的物體進(jìn)行統(tǒng)一管理;使用預(yù)加載方式,對(duì)一些資源加載造成的卡頓進(jìn)行處理;盡量不使用foreach,而是使用for。foreach會(huì)涉及到迭代器的使用,而每一次循環(huán)所產(chǎn)生的迭代會(huì)帶來(lái)24 Bytes的垃圾,循環(huán)10次就是240Bytes;不要直接訪問(wèn)gameobject的tag屬性,比如if (go.tag ==“machine”)最好換成if (go.CompareTag (“machine”)),因?yàn)樵L問(wèn)物體的tag屬性會(huì)在堆上額外分配空間,如果在循環(huán)中這么處理,留下的垃圾就可想而知了;對(duì)代碼多一些重構(gòu)處理,程序的架構(gòu)設(shè)計(jì)必須耦合性低,易于擴(kuò)展。

      3.4 CPU優(yōu)化

      CPU優(yōu)化可通過(guò)減少Draw Calls實(shí)現(xiàn),平時(shí)用的最多的還有批處理。所謂批處理就是將很多物體一起處理的意思,條件是同一材質(zhì)物體。對(duì)于同一材質(zhì)物體,除了頂點(diǎn)數(shù)據(jù)的差異外無(wú)其它差別,將這些頂點(diǎn)數(shù)據(jù)合并起來(lái)交給CUP處理,便是一次批處理,這大大降低了CUP的消耗。

      Unity中有兩種批處理方式:動(dòng)態(tài)批處理和靜態(tài)批處理。動(dòng)態(tài)批處理會(huì)對(duì)每一幀進(jìn)行計(jì)算,大量增加CUP開(kāi)銷(xiāo);靜態(tài)批處理可使游戲引擎盡量降低繪制物體所產(chǎn)生的DrawCall。由于合并后的物體需要額外內(nèi)存資源來(lái)存儲(chǔ),所以?xún)?nèi)存占用會(huì)增加,CPU資源會(huì)減少。在繪制圖形,例如桌子、椅子等時(shí),可以在編輯器里設(shè)置成靜態(tài),所有具有相同材質(zhì)的物體會(huì)被組合成一個(gè)網(wǎng)絡(luò),調(diào)用一個(gè)繪制,降低了CUP消耗[9]。

      3.5 特殊效果

      VR中第一人稱(chēng)能很好地模擬機(jī)槍手的視角,再加上真實(shí)的環(huán)境、氣氛、聲音,玩家很容易沉浸在游戲中,本游戲通過(guò)環(huán)境氣氛、特效、光影(烘焙)和聲音等方面進(jìn)行強(qiáng)化。

      3.6 游戲敵人AI功能

      人工智能在游戲中非常重要,它可通過(guò)一些隨機(jī)的數(shù)字讓敵人做一些動(dòng)作或邏輯,在Unity中通過(guò)AI腳本程序?qū)崿F(xiàn)。傳統(tǒng)的射擊游戲設(shè)計(jì),都是通過(guò)一套AI規(guī)則進(jìn)行判斷,無(wú)論玩家做出什么行為,都會(huì)根據(jù)AI規(guī)則作出相應(yīng)的行動(dòng),因?yàn)榇_定性太強(qiáng),易使玩家覺(jué)得單調(diào),因此,需要引入更多的隨機(jī)性。

      為使機(jī)器人AI 更具智能,加入了模糊概率算法,提高了不確定性,給玩家一種新奇感。當(dāng)玩家靠近敵人并在敵人視線之內(nèi),敵人便會(huì)進(jìn)行攻擊,可以通過(guò)腳本設(shè)定敵人攻擊速度以及移動(dòng)速度、命中率等。腳本寫(xiě)得足夠詳細(xì),游戲玩起來(lái)才足夠靈活。

      針對(duì)游戲需求,設(shè)計(jì)的非玩家角色控制算法具備主動(dòng)和被動(dòng)控制兩種狀態(tài)[10]。處于被動(dòng)時(shí),要考慮是否被攻擊為觸發(fā)條件以及作出相應(yīng)對(duì)策,如果非玩家角色被觸發(fā)則轉(zhuǎn)向主動(dòng)狀態(tài)。在主動(dòng)狀態(tài)時(shí),如果有目標(biāo)進(jìn)入一個(gè)特定的距離范圍,非玩家角色就進(jìn)入攻擊模式,否則處于防備狀態(tài)。

      4 結(jié)語(yǔ)

      本文著重闡述了游戲開(kāi)發(fā)過(guò)程中涉及到的算法、場(chǎng)景搭建規(guī)范以及優(yōu)化技巧,通過(guò)復(fù)雜的AI系統(tǒng)創(chuàng)造出更加真實(shí)的角色行為,大大增強(qiáng)了游戲的逼真性及可玩性。游戲玩法多樣,故事情節(jié)豐富。玩家戴著VR頭盔,手持藍(lán)牙遙控器,通過(guò)頭部和身體的移動(dòng),便能盡情享受激戰(zhàn)中帶來(lái)的快感。

      VR技術(shù)日趨成熟,新的應(yīng)用層出不窮,在醫(yī)療、教育、建筑等行業(yè)應(yīng)用逐步發(fā)展,但VR游戲依然是VR的重要發(fā)展部分。如何做到泛而不濫、內(nèi)容精良,在策劃和優(yōu)化上要下功夫。本文著重闡述了游戲開(kāi)發(fā)中涉及到的優(yōu)化方法,以提高游戲的流暢性及逼真度,無(wú)論是場(chǎng)景搭建還是AI設(shè)計(jì)都會(huì)給用戶(hù)帶來(lái)全新的體驗(yàn)。

      參考文獻(xiàn):

      [1] 陳浩磊,鄒湘軍,陳燕,等.虛擬現(xiàn)實(shí)技術(shù)的最新發(fā)展與展望[J].中國(guó)科技論文在線,2011,20(8):1-15.

      [2] 林中盛.基于DGPS/GIS機(jī)場(chǎng)場(chǎng)面交通管理系統(tǒng)的研究與開(kāi)發(fā)[D].南京:南京航空航天大學(xué), 2004.

      [3] 劉爽.基于VRML的虛擬現(xiàn)實(shí)場(chǎng)景漫游技術(shù)研究與實(shí)現(xiàn)[D].長(zhǎng)春:吉林大學(xué),2007.

      [4] 魏博.基于cocos2d-x跨平臺(tái)引擎的趣味籃球游戲設(shè)計(jì)與開(kāi)發(fā)[D].西安:西安電子科技大學(xué),2014.

      [5] 實(shí)時(shí)碰撞檢測(cè)技術(shù)研究[EB/OL].[ 2012-09-04].http://www.docin.com.

      [6] 伍傳敏,張帥,邱錦明.基于Unity3D的FPS游戲設(shè)計(jì)與開(kāi)發(fā)[J].三明學(xué)院學(xué)報(bào),2012,29(2):2-6.

      [7] J LU,Z PAN,H LIN,et al.Virtual leaning environment for medical education based on VRML and VTK[J].Computers & Graphics ,2014(6):25-26.

      [8] P L WEISS,A S JESSEL.Vitual reality application to work[J].Work,2001(2):25-26.

      [9] 申薇,夏利文.虛擬現(xiàn)實(shí)技術(shù)[M].北京:希望出版社,2012.

      [10] 陳雪梅.基于 Unity3D 的手機(jī)游戲開(kāi)發(fā)[J].電子技術(shù)與軟件工程,2016,45(1):71-72.endprint

      猜你喜歡
      虛擬現(xiàn)實(shí)
      論虛擬現(xiàn)實(shí)藝術(shù)的“沉浸”
      REALITY BITES
      風(fēng)口上的虛擬現(xiàn)實(shí)
      商周刊(2017年24期)2017-02-02 01:42:55
      虛擬現(xiàn)實(shí)技術(shù)向科幻小說(shuō)借靈感
      海外星云(2016年7期)2016-12-01 04:18:00
      HTC斥資千萬(wàn)美元入股虛擬現(xiàn)實(shí)設(shè)備商WEVR
      淺談虛擬現(xiàn)實(shí)
      申扎县| 濮阳县| 泽普县| 彝良县| 沛县| 平湖市| 抚顺县| 三河市| 聂拉木县| 广州市| 乐山市| 宜春市| 修水县| 克拉玛依市| 南京市| 珠海市| 吴桥县| 锡林浩特市| 东港市| 武宣县| 延津县| 靖西县| 安泽县| 通榆县| 眉山市| 盐城市| 来凤县| 达州市| 阳山县| 申扎县| 陵水| 杭锦旗| 专栏| 平江县| 福海县| 湾仔区| 同仁县| 枝江市| 利津县| 云霄县| 巢湖市|