孫奇,樊嘉琪,程健
(北方工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,北京 100144)
暴風(fēng)魔鏡是一款虛擬現(xiàn)實(shí)頭戴式顯示設(shè)備,根據(jù)左右眼屏幕顯示圖像的不同,使用戶腦海中產(chǎn)生立體感的圖像,增強(qiáng)用戶的沉浸感;而在此基礎(chǔ)上運(yùn)行的三維場(chǎng)景是以計(jì)算機(jī)圖形學(xué)為基礎(chǔ),通過三維技術(shù)將游戲元素以立體方式呈現(xiàn)出來,經(jīng)過信息融合和交互式的三維動(dòng)態(tài)視景使用戶沉浸到虛擬環(huán)境中,從而給用戶帶來較為逼真的虛擬現(xiàn)實(shí)體驗(yàn)。
三維場(chǎng)景的實(shí)現(xiàn)需要游戲引擎的支持[1],通過游戲引擎將模型、圖片、聲音等不同的元素進(jìn)行整合從而形成較為逼真的三維環(huán)境。而Unity3D游戲引擎具有強(qiáng)大的編輯器功能,跨平臺(tái)性等特點(diǎn),受到開發(fā)人員的歡迎。為了開發(fā)出較為逼真的太陽系三維展示系統(tǒng),結(jié)合暴風(fēng)魔鏡和Unity3D游戲引擎進(jìn)行研究是非常具有實(shí)際意義。
畫面切換技術(shù)是將左右眼圖像交互顯示在屏幕上的方式[2]。因暴風(fēng)魔鏡本身包含立體眼鏡和立體顯示模式,這里需要將左右眼圖像(以垂直同步訊號(hào)分隔的畫面)分送到左右眼顯示設(shè)備,將垂直同步訊號(hào)作為快門切換同步訊號(hào)即可達(dá)成立體顯像的目的。在三維場(chǎng)景制作過程中,畫面切換技術(shù)應(yīng)用在場(chǎng)景跳轉(zhuǎn),場(chǎng)景加載等過程中。在這里為了避免立體顯像的閃爍影響用戶的體驗(yàn),需要左右眼都需要保證能夠提供至少每秒60個(gè)畫面,也就是說垂直掃描頻率必須達(dá)到120Hz或更高。
為了增強(qiáng)用戶的體驗(yàn),需要設(shè)置自動(dòng)導(dǎo)航,讓用戶沿著固定的路徑進(jìn)行漫游。這里通過研究Camera Path Animator插件,掌握插件中的各個(gè)接口及功能的使用,在熟悉掌握Bezier和Hermite曲線的實(shí)現(xiàn)的基礎(chǔ)上,通過設(shè)置路線標(biāo)點(diǎn),調(diào)整轉(zhuǎn)向等功能來實(shí)現(xiàn)自動(dòng)漫游,一般情況下,自動(dòng)漫游需要用戶來進(jìn)行選擇,若一旦選擇自動(dòng)漫游,不需要進(jìn)行手工控制;待自動(dòng)漫游結(jié)束后可通過手柄等方式來控制視角的切換。為了增強(qiáng)系統(tǒng)的可玩性,從不同角度,不同地點(diǎn)引入自動(dòng)漫游是非常有必要的。
為了保證系統(tǒng)的順暢運(yùn)行,避免因模型加載過多
而影響系統(tǒng)的使用,這里涉及到異步加載,所謂的異步加載會(huì)在系統(tǒng)運(yùn)行時(shí)開啟一個(gè)異步任務(wù)將它們按照規(guī)定的次序或方式進(jìn)行加載并顯示出來,一般而言是通過設(shè)置資源腳本,掛載到某對(duì)象上,在執(zhí)行某場(chǎng)景時(shí)進(jìn)行判斷加載,比較適合加載較大的三維場(chǎng)景。因本系統(tǒng)涉及到較多的模型和圖片,若不使用異步加載,會(huì)在手機(jī)中出現(xiàn)卡頓現(xiàn)象,影響用戶體驗(yàn)。所以說,研究異步加載技術(shù)非常具有必要。
為了增強(qiáng)系統(tǒng)的真實(shí)性,提高用戶體驗(yàn),需要在三維場(chǎng)景中添加虛擬人物,而虛擬人物需要涉及到角色動(dòng)畫,如走路,揮手等,這就要用到Unity3D的Anima?tion動(dòng)畫編輯器,將虛擬人物的動(dòng)畫序列進(jìn)行拆分,按照設(shè)定的順序和邏輯進(jìn)行播放,從而使系統(tǒng)更加真實(shí)和人性化,在本系統(tǒng)中使用到角色動(dòng)畫的有空姐,博士、游客等。
由于行星中有不少氣態(tài)行星,為了增加真實(shí)性,在場(chǎng)景中增加大氣層是非常必要的。這里使用體積霧插件Fog Volume;它是一種體積霧的渲染器,用來模擬大規(guī)模的氣體效果,可用來調(diào)整在外觀和性能上的需求。有了Fog Volume,可以在游戲中體驗(yàn)乘坐宇宙飛船穿越大氣層的樂趣,增加了趣味性。
為了完成基于暴風(fēng)魔鏡太陽系三維展示系統(tǒng)的開發(fā),除了需要研究暴風(fēng)魔鏡相關(guān)技術(shù)外,也需要研究Unity3D游戲引擎本身的模型加載和自動(dòng)漫游技術(shù),為了使三維環(huán)境更加具有真實(shí)性,研究與Unity3D相關(guān)的Camera Path Animator自動(dòng)漫游插件、Fog Volume體積霧插件,從場(chǎng)景搭建、角色控制等方面將太陽系三維展示系統(tǒng)劃分成角色漫游、場(chǎng)景加載、場(chǎng)景特效、暴風(fēng)魔鏡SDK等部分,其設(shè)計(jì)如圖1所示。
角色控制是整個(gè)太陽系三維展示系統(tǒng)的核心,其中包括角色漫游和角色動(dòng)畫。為了使系統(tǒng)較為真實(shí),設(shè)置了同伴、空姐、博士等虛擬人物,通過添加角色動(dòng)畫使不同的虛擬人物活動(dòng)起來,增強(qiáng)用戶的體驗(yàn)。角色動(dòng)畫通過兩種方式實(shí)現(xiàn):一是通過Unity3D中的An?imation動(dòng)畫編輯器,拆分角色動(dòng)畫,在系統(tǒng)運(yùn)行后,自動(dòng)循環(huán)的播放其動(dòng)畫;二是通過JavaScript編程讓人物移動(dòng),通過腳本文件來實(shí)現(xiàn)藍(lán)牙通信,從而通過手柄來控制人物向不同的方向移動(dòng),從而形成不同的動(dòng)畫效果。
角色漫游分自動(dòng)漫游和手柄控制兩種方式,自動(dòng)漫游是虛擬人物乘坐宇宙飛船、在設(shè)定好的路徑中,沿著設(shè)定的路徑去游覽各大行星;手柄控制是通過藍(lán)牙通信方式,將上、下、左、右發(fā)送到手機(jī)上進(jìn)行控制。角色漫游涉及到碰撞檢測(cè),若沒有碰撞檢測(cè),無法檢測(cè)到執(zhí)行的操作或移動(dòng)的方向等操作。
圖1 太陽系三維展示系統(tǒng)劃分
場(chǎng)景控制分為場(chǎng)景搭建和場(chǎng)景跳轉(zhuǎn)兩部分,場(chǎng)景搭建要考慮到星球分為氣態(tài)行星和巖質(zhì)行星。巖質(zhì)行星包括水星、金星、火星,這三個(gè)星球根據(jù)地表不同,額外需要登陸場(chǎng)景。因飛船從地球出發(fā),所以地球上需要地球基地場(chǎng)景。而其他木、土、天王、海王星均為氣態(tài)星球,飛船都需要穿過不同大氣層才能近距離觀察星球。所以說,場(chǎng)景搭建是太陽系三維展示系統(tǒng)的基礎(chǔ),只有搭建好場(chǎng)景,才能實(shí)現(xiàn)三維系統(tǒng)。
場(chǎng)景跳轉(zhuǎn)是在碰撞檢測(cè)技術(shù)下實(shí)現(xiàn)的,由系統(tǒng)中的用戶分別觸碰各種物體,達(dá)到切換場(chǎng)景的效果。比如在地球基地,就由“我”來觸碰宇宙飛船,從而跳轉(zhuǎn)到飛船內(nèi)部場(chǎng)景。因?yàn)閳?chǎng)景眾多,在系統(tǒng)中處處體現(xiàn)。
在場(chǎng)景搭建細(xì)節(jié)處理上,UI設(shè)計(jì)是不可缺少的環(huán)節(jié),它讓游戲劇情更加真實(shí)合理化,例如基地方向標(biāo),基地監(jiān)測(cè)宇宙圖、飛船行駛準(zhǔn)則等二維圖片,需要分別結(jié)合到不同場(chǎng)景中推動(dòng)劇情發(fā)展。而在設(shè)計(jì)過程中,圖片分辨率大小、重繪度、圖片是否壓縮等都是需要考慮的問題。
音頻特效是游戲中的重要組成部分,本游戲主要通過“向?qū)еv解”展現(xiàn)教育意義,所以在游戲制作中需要大量宇宙知識(shí)文本的撰寫和聲音錄制工作。除了要在不同場(chǎng)景、不同情況下播放語音、背景音樂,還需要在游戲中添加人物行走、開門、登陸等特殊音效,增加系統(tǒng)的真實(shí)性和趣味性。Unity3D游戲引擎支持AIFF、WAV、MP3等格式[3],可以依據(jù)游戲的需要來選擇不同的格式,這里注意的是需要添加Audio Source控件,將相應(yīng)的音樂或音效拖入到對(duì)應(yīng)的控件中,后再通過腳本以便執(zhí)行音樂或音效的播放。
場(chǎng)景特效包含粒子系統(tǒng)和氣態(tài)星球兩個(gè)部分。粒子系統(tǒng)分為流體粒子、破碎粒子、煙霧粒子等幾類,在宇宙飛船和地球基地中分別有所體現(xiàn)。而在氣態(tài)星球中,則應(yīng)用大氣層粒子特效技術(shù),模擬不同氣體包圍星球、氣體緩慢移動(dòng)的效果。
場(chǎng)景特效的加入不僅可以美化游戲界面加強(qiáng)游戲的觀賞性,同時(shí)還可以使用戶在虛擬的世界中體驗(yàn)到現(xiàn)實(shí)世界中很難經(jīng)歷的一些景象[4]。
暴風(fēng)魔鏡的SDK是暴風(fēng)魔鏡所提供的軟件開發(fā)工具包,用于在不同環(huán)境下進(jìn)行開發(fā),方便程序員在不同的開發(fā)環(huán)境下調(diào)用。在這里使用的是Unity3D開發(fā)包,具體操作是用虛擬現(xiàn)實(shí)攝像機(jī)替換Unity場(chǎng)景中的主攝像機(jī),完成左右眼分屏,并獲取手機(jī)的陀螺儀數(shù)據(jù),啟用頭部跟蹤以調(diào)整玩家視角,后使用圖像抗鏡片畸變函數(shù),進(jìn)行圖像和顏色的特殊處理;為了便于控制,開啟手機(jī)藍(lán)牙來連接暴風(fēng)魔鏡的手柄,更好地控制角色漫游。
本文通過研究Unity3D游戲引擎中的角色控制、場(chǎng)景加載、暴風(fēng)魔鏡SDK等技術(shù),設(shè)計(jì)并開發(fā)了太陽系三維展示系統(tǒng),從而證明暴風(fēng)魔鏡和Unity3D游戲引擎聯(lián)合開發(fā)的可行性和實(shí)用性。游戲開發(fā)所需的軟件環(huán)境是Unity3D,硬件為暴風(fēng)魔鏡5代。
圖2是在地球基地的漫游截圖,玩家在“博士”的講解下,熟悉地球基地以及各個(gè)設(shè)備的作用,后通過地球基地進(jìn)入到宇宙飛船,如圖3所示。
圖2 地球基地截圖
圖3 宇宙飛船內(nèi)部截圖
圖4 外太空及火星截圖
圖3是聽“博士”介紹八大行星,跟著向?qū)У囊暯莵聿榭窗舜笮行堑耐饷蔡卣?,圖4是通過宇宙飛船看到的太空?qǐng)鼍耙约皥?chǎng)景跳轉(zhuǎn)后的火星場(chǎng)景。
本文在掌握Unity3D和暴風(fēng)魔鏡SDK的相關(guān)知識(shí)的基礎(chǔ)上,按照設(shè)計(jì)的劇情實(shí)現(xiàn)太陽系三維展示系統(tǒng)的開發(fā),包括場(chǎng)景搭建、角色漫游、音頻特效等技術(shù),從而體現(xiàn)出Unity3D的強(qiáng)大性和兼容性。為了增加游戲的真實(shí)性,重點(diǎn)研究了自動(dòng)漫游技術(shù)、Fog Volume氣體效果以及碰撞檢測(cè)技術(shù);因制作過程中時(shí)間精力有限,在教育方法上稍顯單一,趣味性不強(qiáng),需要在娛樂性上得到進(jìn)一步完善和體現(xiàn)。
[1]李杰,孫奇,陳愛玲.基于Unity3D的音樂交互游戲設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2017,(19):62-65.
[2]百度百科“VR眼鏡”詞條[EB/OL].http://https://baike.baidu.com/item/VR%E7%9C%BC%E9%95%9C/18675220?fr=aladdin,2017-10-25/2017-10-31
[3]楊娜,李杰,廖金巧.基于Unity3D的三維生態(tài)莊園游戲設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2015(01):45-48.
[4]謝韜.基于Unity3D粒子系統(tǒng)的游戲特效實(shí)現(xiàn)[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2015(24):30-32.1.