武 勝,白江波,姚浩浩,吳 浩(合肥工業(yè)大學(xué)宣城校區(qū) 商學(xué)系,安徽 宣城 242000)
基于虛擬現(xiàn)實技術(shù)的室內(nèi)導(dǎo)航系統(tǒng)
武 勝,白江波,姚浩浩,吳 浩
(合肥工業(yè)大學(xué)宣城校區(qū) 商學(xué)系,安徽 宣城 242000)
以GPS、北斗等為主的室外導(dǎo)航系統(tǒng)的研究進行得如火如荼,但是室內(nèi)導(dǎo)航的研究卻進行得不如人意。以Unity3D為引擎,結(jié)合3DS MAX建模,開發(fā)室內(nèi)離線3D仿真尋路系統(tǒng)。該系統(tǒng)完全按照室內(nèi)樣貌建造模型,以最真實的虛擬場景還原室內(nèi)樣貌,供導(dǎo)航者更好地完成室內(nèi)尋路。最后介紹了場景優(yōu)化的方法,以便在PC、智能手機等平臺上使用。
仿真;室內(nèi)尋路;Unity3D;虛擬現(xiàn)實
虛擬現(xiàn)實(Virtual Reality,VR)[1]是一項綜合集成技術(shù),涉及計算機圖形學(xué)、人機交互技術(shù)、傳感技術(shù)、人工智能等領(lǐng)域,它利用計算機生成逼真的三維視、聽、嗅覺等,使人作為參與者通過適當(dāng)裝置,自然地對虛擬世界有更完美的體驗和交互作用。虛擬現(xiàn)實具有很好的交互性、沉浸性和想象性,這三個特性合稱為虛擬現(xiàn)實鐵三角,如圖1所示。
圖1 虛擬現(xiàn)實鐵三角
其中沉浸性是虛擬現(xiàn)實技術(shù)的最主要的特征。體驗者在外部硬件的幫助下將表達傳遞到虛擬現(xiàn)實中,在虛擬現(xiàn)實中產(chǎn)生相應(yīng)反應(yīng),這些刺激能積極調(diào)動體驗者的感官系統(tǒng),從而讓體驗者更易于沉浸虛擬世界,如圖2所示。
圖2 虛擬體驗交互感應(yīng)
現(xiàn)如今人們?nèi)粘;顒臃秶饕€是在室內(nèi),且伴隨著我國建筑行業(yè)的快速發(fā)展,結(jié)構(gòu)復(fù)雜的巨型建筑如上海世貿(mào)大廈等逐漸進入人們的日常生活,室內(nèi)尋路問題亟需解決。而近年來關(guān)于虛擬現(xiàn)實及Unity3D的研究越來越熱,通過建模并完成貼圖后導(dǎo)入Unity3D,在Unity3D中完成腳本語言的編寫,從而實現(xiàn)交互及尋路系統(tǒng)。由于虛擬場景具有較強的真實性,尋路者在極具復(fù)雜的室內(nèi)環(huán)境中也能找到目標位置。
本文討論的是基于Unity3D[2]的室內(nèi)導(dǎo)航系統(tǒng),應(yīng)用到軟件工程思想,從需求入手,設(shè)計室內(nèi)尋路導(dǎo)航系統(tǒng)的各個功能模塊。由于室內(nèi)場景極其復(fù)雜,室內(nèi)導(dǎo)航系統(tǒng)的開發(fā)步驟如下:
(1)數(shù)據(jù)采集:采用CAD圖紙和場景圖片,應(yīng)用Photoshop優(yōu)化場景圖片信息;
(2)數(shù)據(jù)處理:結(jié)合3Dsmax建模應(yīng)用,在Mari中完成模型貼圖;
(3)開發(fā)應(yīng)用:將完成貼圖的模型導(dǎo)成.FBX格式后導(dǎo)入到Unity3D,在Unity3D中添加相機、燈光、碰撞體、尋路組件等,利用NGUI進行尋路系統(tǒng)交互界面設(shè)計等完成場景交互,最終實現(xiàn)室內(nèi)自動尋路系統(tǒng)。其中包括輸入目的地,以最優(yōu)算法實現(xiàn)最短路途,到達目的地,到達目的地后可以接著實現(xiàn)二次尋路;在尋路過程中遇到門、燈等組件,進行碰撞檢測,門、燈等自動打開[3]。其制作流程如圖3所示。
圖3 室內(nèi)導(dǎo)航開發(fā)流程圖
2.1 前期工作
由于現(xiàn)代建筑其場景巨大室內(nèi)場景復(fù)雜,在建模前,要搜集完整的數(shù)據(jù),否則將會影響后續(xù)建模的進展及模型的使用。對要建模的物體進行照片采集并且利用PS處理,擁有一整套的從內(nèi)到外的照片,此照片不僅用來幫助建模還用來完成模型貼圖;將CAD圖紙導(dǎo)入AutoCAD軟件,刪除不需要的部分,并且添加上建模所需要的補測數(shù)據(jù),導(dǎo)出.DWG格式。
2.2 建模技術(shù)
將.DWG格式的文件導(dǎo)入3DSMAX[4],根據(jù)左視圖、頂視圖等將CAD文件按照其實際位置放好。選擇全部的CAD文件,使其凍結(jié),然后根據(jù)制作順序暫時隱藏其他不需要的CAD。建模過程中可以參照采集的圖片保證模型的真實性。為了保證打包出的軟件運行流暢,在這里可以制作兩套模型,一套低模,一套高模,實現(xiàn)高模轉(zhuǎn)低模而低模擁有高模的效果。利用3DSMAX高效的建模技巧將模型建成之后,選擇UV展開,將模型展開UV,UV展開的好壞直接決定貼圖的效果,按照比例展開。將展好UV的模型導(dǎo)入Mari進行貼圖繪制,而一個場景的逼真度往往由貼圖所決定,因此,在進行貼圖繪制時統(tǒng)一采用1 024×1 024的照片進行,且在Mari中進行繪制時要細心。此時,模型已經(jīng)建成,物體表面貼圖也已完成,導(dǎo)出.FBX文件。
2.3 Unity3D場景搭建技術(shù)
在Unity3D中實現(xiàn)尋路系統(tǒng)[5],由于本文討論的是在離線狀況下實現(xiàn)室內(nèi)導(dǎo)航,而現(xiàn)在的建筑物往往有多個入口,因此需要選擇建筑物入口。此時進入交互界面,輸入需要導(dǎo)航的目標點,通過Find尋找該點是否存在,如果存在虛擬人物就會根據(jù)最優(yōu)路徑自動到達,尋路結(jié)束,提醒是否再次尋路。場景制作流程如圖4所示。
圖4 Unity3d場景制作流程圖
2.3.1 尋路組件
使用Unity實現(xiàn)室內(nèi)自動尋路,其有多種方式。第一種比較傳統(tǒng)的是使用A*尋路,它是一種比較傳統(tǒng)的人工智能算法,在游戲開發(fā)中比較常用到。A*的原理并不復(fù)雜,不過由于不是Unity3D自帶的功能,因此在設(shè)定網(wǎng)格和烘焙的過程中難免會出現(xiàn)問題。而NavMesh作為Unity自帶的功能,用法與之前的LightMapping烘焙或者遮擋剔除Occlusion Culling有很多相似之處,最主要是它用起來很方便。
將制作好的場景導(dǎo)入Unity3D,選擇場景模型,然后將Navigation Static選中,對于與場景無關(guān)的模型確定其不被選中。打開Navigation,根據(jù)場景需要調(diào)整尋路者半徑、高度以及尋路者能行走的最大坡度和高度,完成后烘焙場景[6]。
2.3.2 第三人稱物體設(shè)置
將預(yù)先設(shè)置好的人物prefab拖入場景,為其添加上Nav Mesh Agent組件,由于尋路者可能需要多次尋路,因此通過編寫C#代碼在Update函數(shù)中實現(xiàn)二次尋路。部分代碼如下:
由于使用角色為第三人稱,角色所處的狀態(tài)即為等待或行走,通過將事先導(dǎo)入的動畫進行設(shè)置進而實現(xiàn)。創(chuàng)造兩個 bool類型數(shù)值,分別為 idel與 walk,實現(xiàn)其與動畫過度關(guān)聯(lián),并通過腳本進行控制。部分腳本如下:
2.3.3 相機設(shè)置
需要將相機設(shè)置成伴隨角色的移動。通過設(shè)置相機相對角色位置并且每幀都去檢測相機相對角色位置,即保證相機相對角色為靜止?fàn)顟B(tài)。部分實現(xiàn)代碼如下:
2.3.4 交互界面
對于交互界面[7]的設(shè)計,采用了NGUI,大大方便了界面設(shè)計,提高了效率。對于交互界面,分為兩部分,即建筑物入口選擇界面和目標點輸入界面。
建筑物入口選擇部分交互界面,單獨放到一個場景中,將使用說明等與之組合在一起。如果用戶點擊某一入口,則將值傳遞給角色,角色切換到相應(yīng)入口處。實現(xiàn)主要代碼如下:
交互界面效果圖如圖5所示。
圖5 虛擬校園系統(tǒng)GUI設(shè)計
通過在尋路代碼中添加設(shè)置虛擬人物與目標點的距離來判讀是否出現(xiàn)輸入目標點的交互界面[8]:
floatdist=Vector3.Distance(man.transform.position,target. transform.position);
if(dist<=1.0){UI.SetActive(true);}
對于目標點的輸入采用獲取輸入框的值,如果輸入的地點不存在,則返回提醒輸入正確的目標點;否則,需找目標點,效果如圖6所示。
public GameObject errorUI;
public static string classroomNum;
……
classroomNum=GuiInput.value;
在角色代碼中添加如下代碼:
圖6 目標點不存在界面
2.3.5 檢測碰撞
當(dāng)角色經(jīng)過門時,如果門是關(guān)閉的,則此時門應(yīng)該打開,若燈是關(guān)閉的則也需打開,這需要在燈和門上添加剛體碰撞檢測[8],雖然實現(xiàn)不是很容易,但增加了交互性[9],場景真實感加強。對于門的檢測,需要在腳本代碼中分別實現(xiàn)OnTriggerEnter和OnTriggerExit函數(shù),在OnTriggerEnter中播放門打開的動畫,在OnTriggerExit中停止門打開的動畫。燈的檢測直接利用OnTriggerEnter,當(dāng)角色與燈組件發(fā)生碰撞時,燈的組件被喚醒。
本導(dǎo)航系統(tǒng)基于智能手機開發(fā),雖然現(xiàn)在的智能手機處理器、內(nèi)存等都有大的提升,但是如果場景較大,模型點面較多,代碼優(yōu)化不合理,在智能機上的運行將會受影響。因此,本文認為應(yīng)該從以下幾個方面進行場景優(yōu)化[9]:
(1)對于場景內(nèi)的點面,最好控制在10萬以內(nèi),看不見的點面將其刪除;
(2)盡可能減少角色骨骼數(shù)量;
(3)多張貼圖共享一張材質(zhì)球;
(4)保證代碼邏輯正確,刪除腳本中未使用的Update函數(shù);
(5)盡可能減少像素?zé)艄?、反射、陰影等的使用,這些操作會導(dǎo)致模型被多次渲染,加重CPU的負擔(dān)。
本文介紹了虛擬現(xiàn)實技術(shù)在室內(nèi)導(dǎo)航方面應(yīng)用的關(guān)鍵技術(shù)。通過數(shù)據(jù)采集、模型繪制、Unity3D場景開發(fā),模擬出最真實的虛幻場景,讓使用者擁有身臨其境的感覺,幫助其更好地完成室內(nèi)導(dǎo)航。本系統(tǒng)適合各種大中型室內(nèi)場所導(dǎo)航,如醫(yī)院場所導(dǎo)航、大型超市貨物導(dǎo)航等。當(dāng)然,由于開發(fā)場景的過程過于繁瑣,開發(fā)所需成本目前還較高,但是隨著虛擬現(xiàn)實技術(shù)、計算機網(wǎng)絡(luò)技術(shù)、虛擬現(xiàn)實眼鏡技術(shù)等的發(fā)展,在未來成本等問題會得到解決,屆時虛擬現(xiàn)實3D仿真導(dǎo)航系統(tǒng)將會取代傳統(tǒng)的二維平面導(dǎo)航系統(tǒng)。
[1]馮俊杰.基于UML的三維漫游系統(tǒng)的分析與設(shè)計[D].大連:遼寧師范大學(xué),2011.
[2]朱惠娟.基于Unity3D的虛擬漫游系統(tǒng)[J].計算機系統(tǒng)應(yīng)用,2012,21(10):36-39,65.
[3]干建松.基于Unity3d的室內(nèi)漫游仿真系統(tǒng)[J].淮陰師范學(xué)院學(xué)報(自然科學(xué)版),2011,10(6):515-518.
[4]祝敏嬌.基于Unity3D的虛擬漫游技術(shù)的研究[J].硅谷. 2012(20):77,102.
[5]黃健柏,鄒崢嶸,朱學(xué)紅.虛擬校園及其在校園規(guī)劃管理中的應(yīng)用[J].教育信息化,2002(6):7-8.
[6]吳鳳娟,刁永鋒.虛擬校園漫游系統(tǒng)的設(shè)計及實現(xiàn)[J].蘇州科技學(xué)院學(xué)報(工程技術(shù)版),2005,18(2):78-80.
[7]李峻峰.虛擬現(xiàn)實技術(shù)與虛擬校園的研究與實踐——以濰坊學(xué)院虛擬校園建設(shè)為例[J].工程圖學(xué)學(xué)報,2011,32(3):62-68.
[8]金漢均,王曉榮,徐星,等.一種基于DirectX的碰撞檢測算法[J].電子技術(shù)應(yīng)用,2006,32(1):56-58.
[9]雷忠誠,胡文山,鄔靜陽,等.基于Web的3D智能家居系統(tǒng)設(shè)計與實現(xiàn)[J].電子技術(shù)應(yīng)用,2014,40(9):114-117.
[10]金璽曾.Unity3D手機游戲開發(fā)[M].北京:清華大學(xué)出版社,2013.
表2 鏈型組網(wǎng)測試結(jié)果
結(jié)合表1和表2數(shù)據(jù),星型組網(wǎng)時,自動補償前上下行最大時延差為30.93μs/30.75μs,自動補償后最大時延差為0.67μs/0.50μs;鏈型組網(wǎng)時,自動補償前上下行最大時延差為41.38μs/40.94μs,自動補償后最大時延差為0.40μs/0.75μs;考慮到頻譜儀存在±0.5μs的測量誤差,該測量結(jié)果在誤差范圍內(nèi)符合設(shè)計的精度要求。實驗結(jié)果表明,在不同方式組網(wǎng)下,經(jīng)時延自動補償后,系統(tǒng)上下行最大時延差均被補償至1μs以內(nèi),滿足了應(yīng)用方提出的要求。
時延測量與補償是鐵路專用光纖分布式系統(tǒng)中的重要功能,本文提出了一種時延測量與計算的方法,設(shè)計了基于VxWorks的自動補償方案,借助現(xiàn)有的系統(tǒng)平臺和儀表設(shè)計實驗并驗證了該方案的可行性。
參考文獻
[1]李慶.包西鐵路GSM-R數(shù)字光纖直放站方案研究[J].鐵路標準設(shè)計,2013(12):105-108.
[2]姜立娜.GSM-R同頻干擾相關(guān)性研究[D].北京:北京交通大學(xué),2013.
[3]王蓓.青藏鐵路GSM-R通信系統(tǒng)中干擾問題的分析與研究[D].北京:北京交通大學(xué),2008.
[4]金紹春.數(shù)字光纖直放站中的時延測量與校正[J].大眾科技,2011(10):33-35.
[5]深圳國人通信有限公司.光纖直放站及其時延的測量方法、裝置及補償方法、系統(tǒng)[P].中國:CN101389090A,2009-03-18.
[6]周啟平,張楊,吳瓊.VxWorks開發(fā)指南與Tornado使用手冊[M].北京:中國電力出版社,2004.
[7]中國鐵路總公司.GSM-R中繼傳輸系統(tǒng)設(shè)備技術(shù)規(guī)范[S]. 2007.
(收稿日期:2015-06-23)
作者簡介:
丁偉偉(1991-),通信作者,男,碩士,主要研究方向:自動化與通信技術(shù)。E-mail:1333749@#edu.cn。
趙霞(1974-),女,博士,副教授,主要研究方向:控制理論與工程,數(shù)字信號處理。
Indoor navigation system based on virtual reality
Wu Sheng,Bai Jiangbo,Yao Haohao,Wu Hao
(Department of Business,Hefei University of Technology Xuancheng Campus,Xuancheng 242000,China)
In recent years,with GPS,Beidou navigation and other outdoor based navigation system is very well,but the study of indoor navigation is poor.Based on the Unity3D engine,combined with 3DS MAX modeling,this paper develops offline-threedimension simulation of wayfinding system.At last,scene optimization method has been introduced in this paper,in order to use for PC,smartphone platforms,etc.
simulation;interior wayfinding;Unity3D;virtual reality
TP391.9
A
1674-7720(2015)20-0076-04
武勝,白江波,姚浩浩,等.基于虛擬現(xiàn)實技術(shù)的室內(nèi)導(dǎo)航系統(tǒng)[J].微型機與應(yīng)用,2015,34(20):76-79.
2015-05-21)
武勝(1992-),通信作者,男,本科,主要研究方向:大型室內(nèi)場所虛擬導(dǎo)航。E-mail:1192245476@qq.com。
白江波(1994-),男,本科,主要研究方向:基于Unity3D的虛擬現(xiàn)實的導(dǎo)航。
姚浩浩(1993-),男,本科,主要研究方向:三維建模。