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