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