劉億斯 梁灝 黃章菡 黃岳田 趙生平
【摘 要】社會、技術和智能手機的發(fā)展,虛擬場景漫游也作為虛擬現(xiàn)實技術的一個想當重要的領域,有著很大的應用價值和發(fā)展空間。旅游景點提供給游客的信息一般是印刷大量的宣傳手冊或者是指導手冊,耗費了大量的人力、物力和財力,這不僅僅照成了資源的浪費,人力的損失,也照成了環(huán)境的污染。把虛擬漫游技術與近年來發(fā)展得正火熱的Android相結合,以桂林李宗仁官邸為基礎,將這個場景進行數(shù)字化并且移植到手機上。系統(tǒng)通過計算機圖形技術,將現(xiàn)實的場景保證一定視覺效果的時候同時進行可視化三維建模設計,達到一定的視覺效果的同時,構建一個手機上虛擬的場景。
【關鍵詞】虛擬現(xiàn)實;虛擬場景漫游;Android;Unity3d
1 課題的研究背景以及意義
人們的生活水平不斷的提高,人們也越來越愿意去花時間去外面看看,然而在世界上,旅游的景點這么多,我們不可能把每一個景點都去看一遍,同時隨著智能手機和網(wǎng)絡的發(fā)展,我們所需要的東西似乎隨時都能夠找到,而且交互式虛擬現(xiàn)實技術也在網(wǎng)絡上隨著應用得到發(fā)展。所以,結合這個情況,我們就應用Unity3d的虛擬現(xiàn)實技術和三維建模技術將一個博物館的場景數(shù)字化后移植手機上,這樣,某些我們去不到的場景就能夠在手機上體驗了。
通過虛擬現(xiàn)實的技術,我們可以把遠處的場景或者是已經設計好但在現(xiàn)實世界中并不存在的東西讓用戶提前體驗,這在設計與規(guī)劃、虛擬游覽、購物、交互式娛樂等方面都會有重大的經濟效益。
2 課題的研究內容
在該課題中,主要的內容是以一個場景為藍本,實現(xiàn)一個場景的虛擬化,在保證環(huán)境的真實性的情況下,適當提高藝術性,讓觀眾能夠較為直觀的了解場景的結構。開發(fā)過程中虛擬現(xiàn)實技術主要使用3dsmax建模軟件和Unity3d開發(fā)工具,同時還對android方面上的功能進行修改。其中3dsmax主要用于建筑、設備、設施等場景的繪制,Unity3d用于對場景的整合,同時也負責添加腳本以和用戶進行交互。
為了能夠讓用戶更加全面的了解這個場景,我們還把實地考察的照片和獲取的信息放到我們已經建好的網(wǎng)站上面,這個網(wǎng)站我們主要是使用Php語言支持的yii framework、前端用bootstarp和jquery、數(shù)據(jù)庫是MySQL、服務器軟件是Apache。同時把圖片文字的數(shù)據(jù)保存到我們的數(shù)據(jù)庫中,方便后期能夠對網(wǎng)站內容進行更新。
3 概要設計
3.1 Unity3D
本團隊在項目之初進行了實地考察、取景工作獲取了大量的相關照片。接著使用3dsmax建模工具根據(jù)獲取到的照片進行建模工作,同時設置好貼圖并且導出到Unity3d中。
導入到Unity3d中后,根據(jù)實際的情況以及手機性能上的限制,植被系統(tǒng)不宜設置過多,否者會由于面片數(shù)過多而會出現(xiàn)卡頓的情況。根據(jù)多次測試,在測試平臺高通驍龍S800的手機上(手機為LG G2與nexus 5),Tris在1.5m左右、Verts在2.1m左右,流暢度是可以接受的,同時場景的植被也不至于太少顯得過于單一。
3.2 網(wǎng)站功能
根據(jù)需求設計網(wǎng)站功能如圖所示。管理員模塊即用戶模塊,管理后臺登陸用戶,可進行添加新管理員和刪除管理員;新聞模塊,管理和顯示博物館新聞;通知模塊,管理和顯示博物館的實時公告;文物模塊,管理網(wǎng)站中博物館展示的文物,以圖文并茂的文章向用戶展示文物;博物館簡介,對博物館的簡介和背景的管理;資源模塊,管理網(wǎng)站文章的資源如圖片等。
4 詳細設計
4.1 Unity3d
4.1.1 NavMesh組件
在Unity3d中,系統(tǒng)已經內置了一個名為NavMesh的組件,在Navigation面板里面我們可以將系統(tǒng)里面的建筑設置為障礙物,點擊Bake后可以在Sense視圖中看到相關更改。同時給人物掛上NavMeshAgent以及添加上簡單的腳本即可實現(xiàn)自動尋路功能了。(相關API:NavMeshAgent.SetDestination())。
4.1.2 A*算法
而A*算法則是綜合了這兩個算法的優(yōu)點,A*算法的核心思想則是在獲取到一個新的可行節(jié)點時,會將新的這個可行節(jié)點與起點判斷,同時與終點進行判斷,評估這兩者代價。當然,下一個節(jié)點的來源依然是環(huán)繞在當前節(jié)點的周圍。不同的是在每次主循環(huán)時A*算法會評估每個節(jié)點的的價值。因此,如何判斷每個節(jié)點的價值是很重要的,至于如何判斷,我們有許多種方法,比如,曼哈頓距離、對角線距離,歐幾里得距離。
在Unity3d中,我們可以使用AStarPathFinding插件來實現(xiàn)這個功能,該插件已經為我們封裝好了我們所需要的絕大部分的功能。首先,需要給障礙物設置好碰撞體,同時將相關障礙單獨分類到新的一層中,我這里設置的層為Obstacles。接著在A*的Gameobject中的設置好相關的參數(shù)。最后只要在開始移動的時候使用該插件提供的方法即可移動了(圖1)。
4.2 網(wǎng)頁
4.2.1 網(wǎng)站基本框架模式
后臺的開發(fā)使用Yii framework1.0(以下簡稱Yii)版本。Yii是一個基于組件的高性能PHP框架,用于開發(fā)大型Web應用。Yii采用嚴格的OOP編寫,采用MVC的架構模式,開發(fā)中過程中遵守Yii的MVC原則,所以網(wǎng)站的整體設計模式是MVC模式。Yii實現(xiàn)了ActiveRecord數(shù)據(jù)庫訪問模式,ActiveRecord遵循標準的ORM模型(對象關系映射模型),表映射到記錄,記錄映射到對象,字段映射到對象屬性。項目中的數(shù)據(jù)庫訪問基本經過ActiveRecord。
4.2.2 網(wǎng)站內容管理(數(shù)據(jù)庫訪問)
網(wǎng)站的內容分為新聞、公告、本館簡介、歷史背景和館藏文物五類,存儲在同一個表中,下面把這五類內容統(tǒng)稱為文章。進行文章的增刪改查時,都通過Article類。Article類繼承于Yii的CActiveRecord類,通過Yii提供的接口可以簡單的就能實現(xiàn)對數(shù)據(jù)庫的訪問。比如,Article::model()->deleteByPk(1)即實現(xiàn)了刪除id為1的文章。文章的區(qū)別主要在type字段上。
4.2.3 資源管理
CKEditor可以直接插入多媒體等資源到文章中,但是插入資源后,資源就不好管理了。為實現(xiàn)資源的管理,網(wǎng)站中設計了一個資源管理模塊用于管理網(wǎng)站中的資源,同時編寫了一個CKEditor的插件用于把資源模塊的資源插入文章中。
5 該課題的創(chuàng)新點
(1)與原有的博物館的場景相結合,參考原來博物館的模型建立,最大化的在移動平臺上實現(xiàn)模擬博物館的模樣。
(2)通過Unity3d的mono多平臺發(fā)布技術,日后能夠快速地發(fā)布到多個平臺上,并且保持不同平臺體驗的一致性。
(3)在Android平臺上,將Unity3d和android技術相結合,實現(xiàn)了分工功能,也即在Unity3d實現(xiàn)模型展示和虛擬漫游功能,在android端實現(xiàn)主要的UI設計和模型介紹。
(4)對原有的博物館進行的建模工作,并且使用Unity3D建立了一個場景,用戶可以在手機上進行博物館虛擬漫游。這樣,用戶就不需要到達博物館就能大概了解到博物館的內部結構。并且我們也能夠結合暴風影音公司開發(fā)的暴風魔鏡,能夠提供更加真實的漫游體驗。
【參考文獻】
[1]湖光軍.三維虛擬校園自動漫游系統(tǒng)的設計與實踐[D].山東:山東大學軟件學院,2013.
[2]王運.基于手機Android平臺的虛擬校園漫游系統(tǒng)的設計與實現(xiàn)[D].北京:北京工業(yè)大學軟件學院,2013.
[3]王洪.基于虛擬現(xiàn)實的三維漫游技術研究與實踐[D].四川:電子科技大學計算機學院,2013.