王文心,鄧欣睿,秦永欣
(1.東南大學(xué)交通學(xué)院,南京 210000;2.東南大學(xué)計算機科學(xué)與工程學(xué)院,南京 210000;3.東南大學(xué)機械工程學(xué)院,南京 210000)
近年來,虛擬現(xiàn)實技術(shù)和增強現(xiàn)實技術(shù)發(fā)展迅速,在各個行業(yè)和領(lǐng)域的應(yīng)用更加廣泛。計算機收集各種輔助信息,使得用戶與真實場景實現(xiàn)交互。隨著交通強國戰(zhàn)略的提出,交通基礎(chǔ)設(shè)施建設(shè)也顯得更為重要,而實驗室正是基礎(chǔ)設(shè)施建設(shè)的搖籃[1]。
虛擬實驗室能提供直觀的實驗室場館全貌和相應(yīng)的實驗儀器,方便學(xué)生獲取相關(guān)實驗信息,學(xué)習(xí)實驗操作,實現(xiàn)與實驗場館設(shè)施的遠程互動[2]。本文結(jié)合虛擬現(xiàn)實和增強現(xiàn)實的技術(shù)特點,將其應(yīng)用于東南大學(xué)交通學(xué)院試驗中心各實驗室的虛擬展示和交互之中,設(shè)計與實現(xiàn)了一個基于Unity 3D 的實驗室虛擬漫游軟件,打破了空間和時間的限制,實際運用在相關(guān)教學(xué)及宣傳普及領(lǐng)域。
虛擬現(xiàn)實技術(shù)(virtual reality,VR)以計算機技術(shù)為基礎(chǔ),綜合了電腦仿真、傳感器、網(wǎng)格并行處理、人工智能等多種技術(shù),通過給用戶同時提供多種感官信息,使用戶仿佛身臨其境。依靠計算機系統(tǒng),用戶可以自定義生成一個三維空間。用戶在該環(huán)境中,借助多種輸入輸出設(shè)備,感知和探索客觀世界。借助于虛擬現(xiàn)實,用戶可以突破時間空間的限制,優(yōu)化感官感受,提高對客觀世界的認識水平。虛擬現(xiàn)實的關(guān)鍵技術(shù)主要包括:人機交互技術(shù)、傳感器技術(shù)、動態(tài)環(huán)境建模技術(shù)、系統(tǒng)集成技術(shù)和三維圖像的實時刷新技術(shù)[3]。
隨著計算機水平的提高,增強現(xiàn)實技術(shù)(augment reality,AR)是發(fā)展來的一門新技術(shù)。它借助計算機技術(shù),將構(gòu)建的輔助虛擬信息如模型等疊加到真實世界,使虛擬的物體信息和真實的環(huán)境信息出現(xiàn)在同一個畫面或空間。用戶可以感知被呈遞的信息,獲得與真實世界漫游相似的體驗感。增強現(xiàn)實系統(tǒng)通過分析大量輸入數(shù)據(jù),獲取場景中各種位置信息,使生成的虛擬物體以合適的姿態(tài)精確地定位到真實場景中的特定位置。增強現(xiàn)實的關(guān)鍵技術(shù)主要包括:跟蹤注冊技術(shù)、顯示技術(shù)、人機交互技術(shù)[4]。
圖1 增強現(xiàn)實技術(shù)
3DsMax 是一款強大的三維動畫渲染和制作軟件,在模型制造領(lǐng)域有不可替代的作用。它功能種類豐富、靈活性高,可用來制作多種建筑模型、工業(yè)產(chǎn)品結(jié)構(gòu)圖及效果圖等。該軟件可模擬不同環(huán)境、不同風(fēng)格的渲染效果,擁有強大的材質(zhì)編輯功能。
Vuforia SDK 封裝了底層用來圖像識別的計算機視覺模塊,Vuforia 為開發(fā)者提供了一系列參數(shù)設(shè)置。開發(fā)者只需配置參數(shù),然后基于底層的識別算法便可開發(fā)出自己想要的AR 程序。Vuforia 功能豐富,如圖像追蹤、物體追蹤、環(huán)境追蹤等。
整個設(shè)計軟件效果:進入軟件后,調(diào)用手機攝像頭,對準(zhǔn)已導(dǎo)入數(shù)據(jù)庫的實驗室環(huán)境、實驗器材或展板時,系統(tǒng)能夠在現(xiàn)實場景之上出現(xiàn)疊加音視頻、文本、3D 模型或VR 體驗等增強效果。在界面指示下,用戶可以多維了解試驗中心相關(guān)知識和實驗器材的操作方法,也能跟隨導(dǎo)覽,走近感興趣的下一目標(biāo)點,繼續(xù)游覽學(xué)習(xí)。
2.1.1 3D建模
建筑信息模型(BIM)現(xiàn)在是交通基礎(chǔ)設(shè)施建設(shè)的新工具,3DsMax 能構(gòu)建出三維虛擬、內(nèi)含完整信息集成的模型。借助內(nèi)置基礎(chǔ)的模型庫進行打形,對簡單的幾何模型進行調(diào)整與組合,可以快速對三維建模搭建一些最基本的骨骼框架,真實比例還原實驗儀器。將模型轉(zhuǎn)換為可編輯多面體,然后使用點、線、面的選取修改功能來細化模型,最后修改貼圖和材質(zhì),賦予模型細膩有質(zhì)感的外觀。
圖2 軟件整體設(shè)計架構(gòu)
圖3 土體原位測試車建模
2.1.2 虛擬場景
為了達到全真模擬的效果,利用魚眼攝像機拍攝,軟件中進行圖像識別特征點拼接,獲取試驗中心全景圖。貼到Unity3D 中的天空盒上,將整個視角放置于天空盒中,把二維布局區(qū)域虛擬成為現(xiàn)實的三維效果,保證立體感、真實性。
圖4 全景圖
虛擬部分地形通過terrain 用不同筆刷加之柔化效果,繪制出山巒與河流,細節(jié)上添加樹木、房屋、車輛等模型,使地形自然逼真。
光照渲染采用實時烘培,這是一種在運行時動態(tài)計算光照的渲染方式,可以讓游戲場景看起來更加真實、細節(jié)更加豐富。但是通過調(diào)整發(fā)現(xiàn)本軟件所需的計算量較大,實時渲染可能會因設(shè)備問題跟不上導(dǎo)覽進程。因此,部分大量計算且精密程度要求不高的場景,改為了前向渲染以提高效率。
通過Unity3D 中的粒子系統(tǒng),模擬實驗器材操作時的環(huán)境效果,如室內(nèi)操作時的粉塵、室外作業(yè)時的雨雪天氣。如將單一粉塵形狀作為基本粒子,設(shè)置預(yù)設(shè)腳本控制發(fā)射數(shù)目、形狀、路線以及生命周期內(nèi)的各種變化,最終實現(xiàn)仿真場景。
圖5 特效渲染
2.2.1 自主漫游場景
VR 靈境模塊之中,使用者通過第三人稱視角進入虛擬環(huán)境中體驗交通學(xué)院教學(xué)實踐體系中重要組成部分——道路勘測設(shè)計實習(xí)。
圖6 道路勘測設(shè)計實習(xí)
第三人稱視角下,可以看到虛擬人物。人物擁有完整骨骼動畫,有著豐富的動作庫,在不同狀態(tài)下有對應(yīng)的動作效果。移動腳本掛載在人物身上,使用者通過搖桿操控方向行進,按鍵可跑動、跳躍。同時系統(tǒng)中有重力模擬器效果,從高處墜落或跳躍時,編入的g值會保證效果真實。
碰撞檢測器能保證人物和物體有著真實存在感,避免出現(xiàn)“穿?!爆F(xiàn)象。在模型內(nèi)部堆疊透明材質(zhì)立方體,為其物理狀態(tài)賦予剛體組件。剛體相遇即根據(jù)各自物理屬性如摩擦系數(shù)、反彈性能得到不同效果。如:虛擬人物可以乘坐并操控試驗車輛;在添加風(fēng)組件之后,由于剛體組件及碰撞體的添加,樹木等會出現(xiàn)隨風(fēng)搖曳的效果。
除人物控制外的其它物體移動可通過兩種方式完成:一是通過Unity3D 中的算法,可將實習(xí)場地中復(fù)雜的山川河流、道路橋梁等關(guān)系簡化為帶有一定信息的網(wǎng)格,在這些網(wǎng)格的基礎(chǔ)上通過一系列的計算來實現(xiàn)AI 自動尋路效果;二是通過Animation 動畫控制物體的大小、坐標(biāo)、方向等物理性質(zhì)隨時間軸不斷變化或循環(huán),將組件賦予物體,以完成實時運動變化。
由于場景較大,加之實習(xí)場地林場森林覆蓋率高、地形起伏大、視野不開闊,需要獲取人物周邊環(huán)境信息。這就需要以小地圖形式用圖標(biāo)來代替真實的模型。
創(chuàng)建一個頂視角攝像機,計算出Unity 中場景的長和寬,計算出模型在場景中的X與Y軸,然后計算X與Y的位置在場景大地圖上的比例,按照比例給新創(chuàng)建Render Texture 小地圖賦值并進行邊緣鋸齒狀問題的優(yōu)化解決。當(dāng)人物運動時,縮小的圖標(biāo)在地圖上實時變化,即可清楚地從小地圖中獲取地理信息。
2.2.2 UUII界面布設(shè)
為了便于用戶在網(wǎng)絡(luò)端參觀實驗室時實現(xiàn)不同場景的切換,我們利用Unity3D 軟件結(jié)合C#腳本實現(xiàn)這一功能。當(dāng)選擇不同的圖片時,調(diào)用添加在該對象上Button 組件的OnClick 事件,使用SceneManager.LoadScene 方法切換到對應(yīng)場景。
在實驗室場景漫游中,我們希望用戶同時能夠聽到對應(yīng)的語音講解,實現(xiàn)首次加載進入場景時自動播放背景音樂,并且通過單擊UI 界面控制音樂的打開和關(guān)閉。使用AudioSource 組件來控制音樂的播放,需要在Hierarchy 窗口中創(chuàng)建一個Audio Source 對象。然后在Inspector 窗口中設(shè)置AudioSource 組件的參數(shù),例如是否在游戲開始時自動播放音樂(Play On Awake),是否循環(huán)播放音樂(Loop),音量大?。╒olume)。
此外,視頻可以用來在虛擬實驗室中展示實驗過程或者提供教學(xué)指導(dǎo),用戶可以通過觀看視頻來了解實驗的步驟和注意事項。在Unity中,可以使用VideoPlayer 組件播放視頻。將VideoPlayer 組件添加到一個游戲?qū)ο笊?,然后在運行時在游戲?qū)ο蟮募y理上播放視頻。
當(dāng)觸發(fā)某個實驗室物體時,系統(tǒng)調(diào)用彈出對話框?qū)ξ矬w的功能進行介紹和說明。使用觸發(fā)器(Trigger)來實現(xiàn)當(dāng)物體進入觸發(fā)器區(qū)域時調(diào)用事件。觸發(fā)器是一個不可見的碰撞器,它可以檢測其他物體是否進入了它的區(qū)域。在場景中創(chuàng)建一個空物體,并為其添加一個碰撞器組件(如Box Collider 或Sphere Collider)。然后在碰撞器組件的檢查器面板中勾選“Is Trigger”選項,將碰撞器轉(zhuǎn)換為觸發(fā)器。接下來,在物體上添加一個腳本,并在腳本中編寫OnTrigger-Enter、OnTriggerStay 和 OnTriggerExit方法來處理觸發(fā)器事件。當(dāng)其他物體進入觸發(fā)器區(qū)域時,將調(diào)用OnTriggerEnter 方法;當(dāng)其他物體停留在觸發(fā)器區(qū)域時,將每幀調(diào)用一次OnTriggerStay方法;當(dāng)其他物體離開觸發(fā)器區(qū)域時,將調(diào)用OnTriggerExit方法。
圖7 對話框效果
2.3.1 AARR識別
在Vuforia 系統(tǒng)中創(chuàng)建所需要識別庫,可以包括圖像識別、多對象識別和實物識別。將識別對象導(dǎo)入識別庫,在比率一欄會顯示出星級。為提高識別效率,多次嘗試優(yōu)化識別對象的特征點,最終得到交通學(xué)院試驗中心的識別庫。生成unitypackage 并導(dǎo)入Unity3D,打開Vuforia SDK,調(diào)用AR camera即可使用。
2.3.2 AARR疊加融合
在AR camera識別出對象之后,軟件將展示增強效果。對于基本實驗器材或試驗區(qū)域,利用UI 設(shè)計部分中的Canvas 畫布半透明地展現(xiàn)實時場景上疊加的相關(guān)音視頻、文字簡介,并且配有相關(guān)對話框程序,使用者可根據(jù)需求選擇軟件服務(wù)。對于不方便當(dāng)場使用的大型室外設(shè)備,疊加原比例三維模型并配有介紹,使用者可自行放大,翻轉(zhuǎn)觀看學(xué)習(xí)。對于不同的課程實習(xí)中需要學(xué)習(xí)掌握的實驗儀器,疊加效果將識別出對應(yīng)操作階段,根據(jù)指示箭頭指向下一步儀器需要操作的部位,指導(dǎo)使用者學(xué)習(xí)使用儀器。同時,在識別對應(yīng)部分時還可以將系統(tǒng)跳轉(zhuǎn)到對應(yīng)VR靈境模塊進行虛擬實習(xí)。
圖8 AR識別效果
2.3.3 導(dǎo)覽系統(tǒng)
導(dǎo)覽系統(tǒng)依賴的是軟件內(nèi)部識別庫和已寫入的地理信息,不存在因為室內(nèi)衛(wèi)星定位信號不強而導(dǎo)致的問題。我們試圖使用AR+GPS 組件,此功能與地圖框集成方向接口以創(chuàng)建實時增強現(xiàn)實路由,允許應(yīng)用程序用戶查看方向、導(dǎo)航說明、距離等。我們嘗試使用此組件創(chuàng)建基于位置的導(dǎo)航AR體驗,創(chuàng)建自定義路線Mapbox 未映射的地方,創(chuàng)建自定義內(nèi)容腳本來構(gòu)建基于軟件自身的獨特體驗。
我們以研究虛擬現(xiàn)實技術(shù)和增強現(xiàn)實技術(shù)在室內(nèi)導(dǎo)覽系統(tǒng)中的應(yīng)用為載體,基于東南大學(xué)交通學(xué)院試驗中心,利用Unity3D 引擎開發(fā)了一款視景仿真的實驗室場館漫游系統(tǒng)。設(shè)計控制方便、通用性強、有廣闊的應(yīng)用前景,其研究成果能宣傳普及交通運輸相關(guān)的一批重大科研裝備的線下使用與線上虛擬體驗,降低了實驗教學(xué)經(jīng)濟和時間雙重成本,有著重要的實際意義和應(yīng)用價值。
進一步展望,本軟件的整體構(gòu)架和模式可以擴展到其它實驗室、博物館、體育場館等室內(nèi)體系[5]。開發(fā)場館設(shè)施的場景交互漫游功能,實現(xiàn)用戶交互、視點控制、場景空間置換等功能,讓人們足不出戶就能感受到ARVR 所構(gòu)成的靈境世界。