王佳祺 , 程明智 , 劉 龍 , 洪 宇 , 趙云帆 , 李駿宇 , 杜 萌
(1.北京印刷學(xué)院,北京 102600;2.三十五中國(guó)際部高二英才班,北京 102606;3.中國(guó)農(nóng)業(yè)大學(xué),北京 100091)
虛擬現(xiàn)實(shí)技術(shù)是利用計(jì)算機(jī)模擬虛擬環(huán)境從而給人以環(huán)境沉浸感。各行各業(yè)對(duì)VR 技術(shù)的需求日益旺盛,特別是傳統(tǒng)文化領(lǐng)域。由于傳統(tǒng)文化有其獨(dú)特的地域特征,人們必須到指定地區(qū)才能體會(huì)到特別的傳統(tǒng)文化。通過(guò)虛擬技術(shù)與傳統(tǒng)文化的結(jié)合,從內(nèi)容傳播的角度來(lái)說(shuō),突破了空間、時(shí)間的限制,同時(shí)以一種新興有趣的內(nèi)容展現(xiàn)形式[1],幫助優(yōu)質(zhì)文化得以傳播;從文化保護(hù)的角度來(lái)說(shuō),一方面讓消失的歷史重獲新生[3],另一方面作為數(shù)據(jù)庫(kù)保留,為日后研究提供資料[2]。因此,傳統(tǒng)文化與虛擬現(xiàn)實(shí)結(jié)合的應(yīng)用有重要意義。
秦淮燈會(huì)的歷史十分悠久,它是南京民間文化和民俗活動(dòng)的品牌[6]。秦淮燈彩是秦淮燈會(huì)最亮麗的主角,也是南京民間手工藝術(shù)的特色品牌,更是非物質(zhì)文化遺產(chǎn)保護(hù)與利用的成功范例,但以秦淮燈彩為主要內(nèi)容的秦淮燈會(huì)并未在文化數(shù)字孿生上做過(guò)多的規(guī)劃。所以,本作品將秦淮燈會(huì)文化與虛擬現(xiàn)實(shí)技術(shù)結(jié)合,讓用戶通過(guò)沉浸式交互體驗(yàn),感受秦淮燈會(huì)的氛圍并了解相關(guān)習(xí)俗,傳播具有中國(guó)特色的傳統(tǒng)燈會(huì)文化。
虛擬現(xiàn)實(shí)(Virtual Reality,VR)[5]是利用電腦或其他智能計(jì)算設(shè)備模擬產(chǎn)生一個(gè)三維空間的虛擬世界,提供用戶關(guān)于視覺(jué)、聽(tīng)覺(jué)、觸覺(jué)等感官的模擬,讓用戶如同身歷其境一般。可以及時(shí)、沒(méi)有限制地觀察三維空間內(nèi)的事物。該技術(shù)的出現(xiàn)是計(jì)算機(jī)圖形學(xué)、人機(jī)接口技術(shù)、傳感器技術(shù)以及人工智能技術(shù)等交叉與綜合的結(jié)果[4]。它是一種可以創(chuàng)建和體驗(yàn)虛擬世界的計(jì)算機(jī)仿真系統(tǒng),利用計(jì)算機(jī)生成一種模擬環(huán)境,通過(guò)計(jì)算機(jī)技術(shù)產(chǎn)生的電子信號(hào),將其與各種輸出設(shè)備結(jié)合使其轉(zhuǎn)化為能夠讓人們感受到的現(xiàn)象。
本文開(kāi)發(fā)使用的虛擬現(xiàn)實(shí)硬件是HTC VIVE。HTC VIVE 是由HTC 公司與Valve 公司聯(lián)合開(kāi)發(fā)的一款VR 頭顯產(chǎn)品,于2015 年3 月在MWC2015上發(fā)布,如圖1 所示。借助Valve 龐大的應(yīng)用體系和SteamVR 提供的技術(shù)支持,在Steam 平臺(tái)上已經(jīng)可以體驗(yàn)多種虛擬現(xiàn)實(shí)的應(yīng)用。HTC VIVE 虛擬現(xiàn)實(shí)頭盔的內(nèi)置揚(yáng)聲器和110 度視野,以其優(yōu)秀的視聽(tīng)表現(xiàn),相比其他虛擬現(xiàn)實(shí)頭盔能夠?yàn)橥婕規(guī)?lái)最全面、最完整的VR 虛擬現(xiàn)實(shí)體驗(yàn)。
圖1 HTC VIVE
UGUI 是Unity 官方的UI 實(shí)現(xiàn)方式,自Unity4.6 以后,Unity 官方推出了新版UGUI 系統(tǒng)。新版UGUI 系統(tǒng)相比于OnGUI 系統(tǒng)更加人性化,而且是一個(gè)開(kāi)源系統(tǒng),利于游戲開(kāi)發(fā)人員進(jìn)行游戲界面開(kāi)發(fā)。UGUI 系統(tǒng)具有3 個(gè)特點(diǎn):靈活、快速和可視化。對(duì)于應(yīng)用開(kāi)發(fā)者來(lái)說(shuō),UGUI 有運(yùn)行效率高、執(zhí)行效果好、易于使用、方便擴(kuò)展,與Unity3D 兼容性高等優(yōu)點(diǎn)。UGUI 為廣大開(kāi)發(fā)者提供了一些常用的控件,包括文本顯示、圖片顯示、按鈕、復(fù)選框、滑動(dòng)條、滾動(dòng)條、下拉菜單、輸入框、滾動(dòng)視窗等,利用這些控件可以快速搭建界面。但是在虛擬現(xiàn)實(shí)環(huán)境中,無(wú)法直接利用UGUI 進(jìn)行用戶界面的交互,需要結(jié)合射線和額外的腳本實(shí)現(xiàn)與用戶界面的交互,在本文3.1 中會(huì)進(jìn)行詳細(xì)介紹。
SteamVR Unity Plugin2.0(簡(jiǎn)稱(chēng)SteamVR2.0),是由Value 公司開(kāi)發(fā)的集成VR 功能的插件,其中提供了傳送、抓取、物理系統(tǒng)等功能,并且提供了一個(gè)示例場(chǎng)景供用戶學(xué)習(xí)。相較于SteamVR1.0,SteamVR2.0 能夠使開(kāi)發(fā)者在編程中更專(zhuān)注于用戶的動(dòng)作,改為使用SteamVR Input System,開(kāi)發(fā)人員可以在應(yīng)用程序之外定義默認(rèn)的動(dòng)作并與按鍵進(jìn)行綁定,而不需要將輸入視為某一特定設(shè)備的特定按鍵。同時(shí),SteamVR2.0 將人物功能封裝成一個(gè)預(yù)制體,讓用戶可以直接使用。本文利用了Steam-VR2.0 中預(yù)設(shè)的人物(Player)作為用戶視角,手柄射線及手柄預(yù)設(shè)動(dòng)作制作交互內(nèi)容。
本作品在虛擬現(xiàn)實(shí)環(huán)境中,以秦淮燈會(huì)為主要呈現(xiàn)場(chǎng)景,利用手柄體驗(yàn)制作燈彩的過(guò)程,并在場(chǎng)景中呈現(xiàn)有關(guān)秦淮燈會(huì)習(xí)俗的介紹和互動(dòng)。在場(chǎng)景一中,用戶需要借助手柄,將燈彩需要的燈架、帶不同花色的明紙、燈芯、燈柄進(jìn)行組裝,制作完成一盞屬于自己的彩燈后,進(jìn)入場(chǎng)景二參觀秦淮燈會(huì)。場(chǎng)景二是體驗(yàn)秦淮河游船和燈會(huì)民俗,利用勻速游船功能在秦淮燈會(huì)中進(jìn)行沉浸式的游船體驗(yàn),同時(shí)也可以利用手柄和射線在民俗店進(jìn)行猜燈謎、掛燈籠、賞糖畫(huà)等活動(dòng)。
本作品的流程設(shè)計(jì)如圖2 所示。在場(chǎng)景一中,利用SteamVR2.0 實(shí)現(xiàn)燈彩制作需要的交互。進(jìn)入場(chǎng)景二后,利用代碼實(shí)現(xiàn)勻速游船功能,同樣利用SteamVR2.0 實(shí)現(xiàn)水面場(chǎng)景的傳送和與民俗店鋪的交互體驗(yàn)功能。
圖2 作品流程圖
本作品用戶提供了蓮花燈、金魚(yú)燈、兔子燈三種可以進(jìn)行體驗(yàn)制作的彩燈。第一步為彩燈骨架制作,用戶需要按照桌面上提示的步驟依次將彩燈骨架利用手柄拾取,SteamVR2.0 賦予了骨架物理屬性,讓用戶可以拾起骨架,實(shí)現(xiàn)骨架拼接,緊接著拾取桌面上新出現(xiàn)的花紋明紙為彩燈進(jìn)行裱糊,接下來(lái)為拾取燈座安裝在裱糊完成的燈籠的底部,完成彩燈的外形制作,最后,拾取燈芯,放入燈彩中間的空隙中,可以從外面看到燈芯在發(fā)光。完整的燈彩制作完成,用戶依照流程進(jìn)入下一個(gè)場(chǎng)景。如圖3 為兔子燈制作的效果圖。
圖3 兔子燈制作的效果圖
在這個(gè)場(chǎng)景中,實(shí)現(xiàn)了游船功能,用戶坐在小船上在河中央進(jìn)行游覽,按動(dòng)手柄的按鍵進(jìn)行勻速前進(jìn),更像是在現(xiàn)實(shí)中劃船的感覺(jué),提升了位移的沉浸感。利用SteamVR2.0 實(shí)現(xiàn)了三種不同餡料的元宵制作、猜燈謎、掛燈彩,賞糖畫(huà)等民俗活動(dòng),讓用戶在虛擬場(chǎng)景中體驗(yàn)秦淮民俗。
早期使用較多的是NGUI 插件,現(xiàn)在Unity 為開(kāi)發(fā)者提供了非常完善的圖形化界面解決方案:UGUI 圖形界面系統(tǒng)。在SteamVR 插件中沒(méi)有與UGUI 交互的預(yù)設(shè),因此本文結(jié)合插件中的射線腳本(SteamVR_LaserPointer.cs)和下文中提到的腳本進(jìn)行射線與UGUI 的交互功能的實(shí)現(xiàn)。
實(shí)現(xiàn)腳本如下:
作品中的秦淮燈會(huì)場(chǎng)景中,主要使用按鍵控制的勻速位移作為主要移動(dòng)方式,使用SteamVR 2.0內(nèi)置的Teloporting 和TeleportPoint 組件。將插件中的Teleporting.prefab 拖入場(chǎng)景,即可開(kāi)啟傳送功能,按圓盤(pán)即可發(fā)出傳送貝塞爾曲線,將Teleport-Point 為傳送點(diǎn),直接拖入場(chǎng)景中需要傳送到達(dá)的位置,實(shí)現(xiàn)比較完善的傳送功能(如圖4)進(jìn)行輔助位移。
圖4 Teleport 功能
3.2.1 勻速位移功能實(shí)現(xiàn)
勻速位移主要通過(guò)以下代碼進(jìn)行實(shí)現(xiàn):首先判斷用戶的移動(dòng)狀態(tài),即上鍵(下鍵左鍵右鍵同理)被按下時(shí),player(用戶)的位置將在世界空間范圍內(nèi)以自身為原點(diǎn),向前位移,攝像機(jī)的朝向決定了位移的方向,按下按鍵的時(shí)間和用戶設(shè)定的速度(speed 值)決定了位移的距離。
3.2.2 實(shí)現(xiàn)效果展示
作品中游船功能的實(shí)現(xiàn)效果如圖5 所示。用戶站在船上,圖中為HMD(頭戴式顯示器)中的畫(huà)面,遵循默認(rèn)按鍵的預(yù)設(shè),用戶可以利用圓盤(pán)鍵的上下左右進(jìn)行位移,HMD 的視點(diǎn)可以調(diào)節(jié)移動(dòng)的方向。在秦淮河上游覽時(shí),可以使用傳送功能到達(dá)各個(gè)民俗的體驗(yàn)區(qū),制作不用餡料的元宵作為紀(jì)念品放置在船上,與燈籠互動(dòng)進(jìn)行猜燈謎、掛燈彩、賞糖畫(huà)等民俗活動(dòng)。
圖5 游船功能實(shí)現(xiàn)效果
本作品利用Unity3D 開(kāi)發(fā)引擎和SteamVR2.0插件實(shí)現(xiàn)了以制作燈彩和秦淮燈會(huì)習(xí)俗體驗(yàn)為主要功能的秦淮燈會(huì)沉浸式交互體驗(yàn)。作品主要分為兩部分,第一部分中提供了三種不同的燈彩制作的全流程體驗(yàn),第二部分是秦淮燈會(huì)兩種民間習(xí)俗的游船體驗(yàn)。未來(lái)對(duì)于作品的優(yōu)化方向主要分為兩個(gè)方面,美術(shù)效果的優(yōu)化和針對(duì)作品功耗的優(yōu)化。美術(shù)效果主要是針對(duì)燈彩制作部分和整體場(chǎng)景。燈彩的外層明紙效果與現(xiàn)實(shí)還存在一定差距,物理系統(tǒng)也不夠完善,場(chǎng)景的燈光、材質(zhì)都可以更加還原現(xiàn)實(shí)。在實(shí)際測(cè)試中,發(fā)現(xiàn)夜游秦淮場(chǎng)景中,河水和燈光的GPU 占有量非常高,場(chǎng)景中Shader 的變體數(shù)量也非常多,在后續(xù)優(yōu)化中,會(huì)排除不需要的變體,同時(shí)優(yōu)化河水的材質(zhì),將場(chǎng)景燈光提前烘焙成LightingMap,以減少場(chǎng)景實(shí)時(shí)光照的計(jì)算量。