楊佗 索南尖措 譚濤 張國能


摘要:近年來,傳統意義上的2D視角的地圖瀏覽或圖片瀏覽,已經不能很好地滿足用戶沉浸式游覽的需求。文章以羅布林卡為例,利用Unity引擎制作虛擬瀏覽平臺,讓更多的用戶可以游覽了解羅布林卡。
關鍵詞:VR;漫游系統;Unity3D;虛擬現實
中圖分類號:TP391 ? ? ?文獻標識碼:A
文章編號:1009-3044(2022)29-0057-03
1 引言
西藏得天獨厚的自然環境和地理位置創造了其獨特的歷史文化。羅布林卡直譯為寶貝園林,為全國重點文物保護單位,地理位置位于西藏自治區拉薩市西郊。由達賴七世建造于18世紀40年代,全園占地36萬多平方米,其中主要建筑有格桑頗章、金色頗章、達登明久頗章等宮殿,房屋370多間,是西藏園林現存中規模最大、歷史文化古跡最多的園林。同時羅布林卡內也保存著大量珍貴的文物和典籍,具有十分重要的歷史意義和文化意義。2001年11月,聯合國教科文組織批準羅布林卡列入世界文化遺產—拉薩布達拉宮歷史建筑群(布達拉宮、羅布林卡及大昭寺)的擴展項目[1]。利用虛擬現實技術可以將保護羅布林卡的手段提高到新的階段,同時可以更好地發揮出自身的文化價值,在互聯網中成為更好的資源,真正做到“共享資源”。
2 相關技術及發展應用
虛擬現實技術是一種有效地模擬生物在自然環境中的視、聽、動等行為的交互技術, 其概念是發展的和變化的[2]。隨著VR(虛擬現實)技術、AR(增強現實)技術及處理器,顯卡等硬件的快速普及和發展,虛擬現實技術在社會上已經有著極為廣泛的應用,同時發展空間巨大。VR技術近些年來飛速發展,在科學計算、航空航天、影視旅游、游戲娛樂、軍事訓練等諸多領域得到了一定的應用,同時為旅游、教育、文娛、零售等行業帶來了新的活力和營銷模式。
3 項目實現的意義
西藏地處高原,地理位置比較特殊,對于許多想要來西藏旅游,卻因為各種原因無法到來的人來說,虛擬旅游是一個很好的選擇。使用虛擬現實技術構建起虛擬三維仿真世界,可以使更多的人認識從不同角度了解認識羅布林卡,可以更好地保護和宣傳歷史文化古跡,以減輕旅游人數過多對景區的壓力。同時虛擬現實技術下的旅游可以滿足特殊旅游群體的需求,例如一些殘障人士或一些追求不同體驗的游客,他們對于旅游的要求較高,而虛擬旅游可以很大程度上滿足這些特殊旅游者的愿望,解決特殊人群的旅游需求[3]。
4 系統實現思路
系統開發過程中以軟件工程方法學為基礎, 以實際需求為導向, 設計系統內各模塊的功能。系統大致實現流程圖如圖2。
4.1 資料收集
虛擬游覽平臺建立在現實中的真實場景基礎之上。因此獲得真實可靠的景點的三維空間數據信息十分關鍵。
首先對景點進行測量畫圖,拍照記錄等操作,在計算機上制作出景點的平面CAD圖像,為后期的建模工作提供最基礎的信息。同時,利用Adobe Photoshop等圖像處理軟件對拍攝的圖像進行修剪,精細化處理,為后期景點模型的貼圖制作做好準備。
其次準確記錄景點的地形地貌,利用相機等對景區進行拍攝測繪留存,在建立建筑物景點的三維模型時會簡單很多,擁有可參考的數據則對于制作景區的三維模型更加方便。對自然景點進行場景計算機重繪比較困難,因此將會花費更多時間來進行三維模型的建立。
最后在收集景點的三維空間資料的同時,收集各個羅布林卡各個宮殿建筑的歷史資料及事跡等。對各份資料進行處理,為后面制作景區的交互內容打下基礎。再利用Photoshop、Premiere Pro等圖像處理和視頻處理軟件來處理好所需的音頻MP3文件、視頻MP4等講解文件,并規范命名,打包處理。
4.2 模型制作
根據繪制的平面CAD圖像等收集的資料,在3ds Max、Zbrush和Cinema 4D等三維模型制作軟件中利用不同的軟件特性進行三維模型的建立。其次建立好材質和貼圖后,再將貼圖重新烘焙為RGB、法線、alpha、置換等圖像。由于需要實時加載,文件不能太大[4]。減少模型面數,同時要求模型所表現的整體效果也與高面數模型相差不大,從而實現計算機資源消耗的平衡,使系統運行得又快效果又好。園區三維模型的構建包括地形、建筑物以及環境。地形和建筑在有了具體的地形數據和建筑物數據之后,可以在Cinema4d、3ds MAX等三維軟件中根據景點實際數據進行構建。環境部分主要包括天空背景、樹木和花草,這些在 Unity 3D中有自帶的多種模型可以選擇,也可以通過其他三維軟件制作。
虛擬重建的一大難點在于建模逼真度和渲染速度之間的矛盾[5] 。一個景點漫游系統模型的三維模型面數可能很多,太復雜的模型對于系統的流暢運行很不利,對模型充分地優化可以減輕系統運行對計算機的壓力,以此方便用戶快速瀏覽。
4.3 導入Unity及搭建場景
將制作完成的模型及交互資料按分類導入Unity3D引擎中進行場景的搭建,將模型和人物的比例按照比例進行組合。在基本的場景搭建好處理細節部分,如建筑之間的間隔,各個場景模型之間的碰撞,天空盒的按時輪換等。
4.4 導入Unity搭建場景及調試
實現人物的移動,人物與場景的交互等功能,完成UI設計。在功能實現以后調試系統漏洞,仔細檢測人物與場景的模型碰撞,人物與場景的交互等是否有問題,防止出現穿模,無法交互等。
4.5 導出可執行文件
點擊Unity頁面左上角File菜單,點擊Build Setting選擇導出設置,進行快速導出或使用快捷鍵Ctrl+Shift+B,再選擇本場景導出,即可獲得可執行文件。
5 場景三維模型的創建
5.1 前期準備
通過對羅布林卡的走訪和勘察并部分采像,根據園區的平面圖像和采集的數據,對景點的后期建模進行初步規劃。在園區內進行錄像、部分拍照留存,繪制基本的地形圖等方式采集園區內的建筑資料。對于特殊建筑,如格桑頗章、金色頗章、達登明久頗章等主要宮殿,要采集更加清晰的圖片,為以后制作貼特做好前期的基本準備。其次,對于主要建筑要做好不同分類的留存資料,除了基本的三維空間數據以及花紋材質以外,還包括其歷史文化資料,包括建造目的、主要用途、歷史記錄資料、特殊事件經歷、文化歷史記錄等資料。為將來制作系統交互提供基礎。
5.2 各個部分模型的建立
首先將園區的平面圖導入Cinema 4D中規劃好園區的各個部分,建立基本的組成部分模型,包括道路地形、草地植被、部分普通設施等。將主要宮殿的位置進行規劃。將道路與主要建筑的區域進行規劃,同時將各個位置中的精細三維模型比例規劃好;再根據采集的資料建立出單獨的主要建筑精細模型,特別注意建立模型時按規劃的比例建立,為建模型提供便利。同時使用品質質量較高的貼圖,以更好地還原場景。在模型建立后,將其進行優化以增強系統的運行速率,讓玩家可以擁有更好的體驗。同時收集好各個建筑文物的歷史文化資料并分別進行導入。建好的模型需導入Unity3D實現交互[6]。
5.3 整體場景的組建
在各部模型建立完成以后,將素材規范打包導入Unity引擎中,在引擎中將模型素材進行按規劃進行組建,同時再次調整模型之間的比例,讓整個場景調整得更加還原真實的場景。組建完成后將模型根據不同的需求加入剛體、網格碰撞器等不同的物理組件。同時在主要光照光源中插入C#腳本模擬天氣效果,用以模擬更加真實的場景。
6 系統主要功能的實現
人機交互是虛擬現實的核心之一[7] 。在Unity3D中編寫C#腳本,實現人機交互,包括導航點跳轉、信息顯示等功能[8]。
6.1 人物移動
在導入Unity引擎中自帶的characters包,使用在Standard Assets-Characters- FirstPersonCharacter-Prefabs文件夾下的FPSController即可,同時在Unity資源商店中下載導入SteamVR包,在FPSController下的攝像機加入可以在HTC VIVE中攝像機腳本SteamVR_CameraHelper以及渲染左右手柄的腳本即可。
6.2 小地圖功能的實現
在Unity中創建一個新的Camera對象,將其命名為MapCamera。然后將該相機拖入玩家物體下方設置為玩家的子對象,并將該相機設置在玩家物體正上方合適位置,把相機對準玩家模型,以正y軸向玩家照射。此時可以該相機對象可以在顯示出實時運行場景,需要渲染至UI層,需要利用Render Texture來實現設置,再創建出新的Render Texture,命名為MapUI,在屬性中將Target Texture字段設置為Map Texture。同時在Asset中新建Canvas來添加UI元素。新建Raw Image,然后命名為Map Image,在檢視面板中將Texture字段設為Map Texture即可以顯示。再將制作好的遮罩物體導入Unity作為自身遮罩,利用Tags and Layers遮蔽玩家。在MapCamera中設置攝像機在瀏覽界面中合適的渲染位置即可。
6.3 尋路功能的實現
Navmesh(導航網格)是3D游戲中動態物體實現自動避障尋路的一種技術,在場景中把除了人物和目標點以外的所有物體設置為靜態模式Static,選中玩家添加上Nav Mesh Agent組件,在目的地執行Navigation窗口下Bake面板下的Bake命令。在需要導航的位置添加物體作為目標點,可以利用Mesh Renderer組將目標點的模型設置為不渲染狀態,再編寫腳本掛于玩家物體上,部分核心代碼如下:
public Transform targetpos;
private NavMeshAgent nav;
void Start ()
{nav = GetComponent
nav.SetDestination(targetpos.position);}
6.4 模擬天氣
利用Unity中天氣系統插件UniStorm模擬較為真實的天氣系統。在將UniStorm插件下載完成并導入后,在場景中創建一個UniStorm System,具體步驟為在工具欄中點擊 Window→UniStorm→Create Weather System,創建完成后場景中將出現一個UniStrom System 的預制體,通過更改預制體的參數,可以對天氣進行控制,模擬不同的天氣、不同時間下的狀態。
7 結束語
當今社會的飛速發展,人們也越來越追求更加深刻沉浸的文化體驗,虛擬現實技術可以很好地滿足人們足不出戶就可以體驗到不同地區文化的需求。同時虛擬漫游技術可以幫助各地更好地保護文化遺產,達到了對瀕危歷史建筑遺產科學、精準與永久性地保存的目的[9]。
參考文獻:
[1] 孫麗娟.關于西藏羅布林卡最早的建筑——烏堯頗章的研究[J].文物鑒定與鑒賞,2022(5):145-147.
[2] 鄒湘軍,孫健,何漢武等.虛擬現實技術的演變發展與展望[J].系統仿真學報,2004,16(9):1905-1909.
[3] 許紅云.VR技術在虛擬旅游的應用研究[J].電腦與電信,2016(7):36-38.
[4] 蔡金玲.基于unity的校園虛擬漫游系統設計與制作[J].廣東技術師范學院學報,2015,36(5):131-135.
[5] 周寧,王家廞,趙雁南,等.基于虛擬現實的中國古建筑虛擬重建[J].計算機工程與應用,2006,42(18):200-203.
[6] 王平,楊繼爽,魏峰,等.淺析人機交互技術的發展進程與專利概貌[J].中國發明與專利,2013(5):39-43.
[7] 張鳳軍,戴國忠,彭曉蘭.虛擬現實的人機交互綜述[J].中國科學:信息科學,2016,46(12):1711-1736.
[8] 戴龍利.基于WorldViz虛擬現實平臺的建模和互動研究[D].南京:東南大學,2017:21-23.
[9] 姚美康,吳堯.虛擬仿真技術在建筑遺產保護中的研究與實踐[J].遺產與保護研究,2018,3(5):66-70.
【通聯編輯:謝媛媛】