武 勝,白江波,姚浩浩,吳 浩(合肥工業大學宣城校區 商學系,安徽 宣城 242000)
基于虛擬現實技術的室內導航系統
武 勝,白江波,姚浩浩,吳 浩
(合肥工業大學宣城校區 商學系,安徽 宣城 242000)
以GPS、北斗等為主的室外導航系統的研究進行得如火如荼,但是室內導航的研究卻進行得不如人意。以Unity3D為引擎,結合3DS MAX建模,開發室內離線3D仿真尋路系統。該系統完全按照室內樣貌建造模型,以最真實的虛擬場景還原室內樣貌,供導航者更好地完成室內尋路。最后介紹了場景優化的方法,以便在PC、智能手機等平臺上使用。
仿真;室內尋路;Unity3D;虛擬現實
虛擬現實(Virtual Reality,VR)[1]是一項綜合集成技術,涉及計算機圖形學、人機交互技術、傳感技術、人工智能等領域,它利用計算機生成逼真的三維視、聽、嗅覺等,使人作為參與者通過適當裝置,自然地對虛擬世界有更完美的體驗和交互作用。虛擬現實具有很好的交互性、沉浸性和想象性,這三個特性合稱為虛擬現實鐵三角,如圖1所示。

圖1 虛擬現實鐵三角
其中沉浸性是虛擬現實技術的最主要的特征。體驗者在外部硬件的幫助下將表達傳遞到虛擬現實中,在虛擬現實中產生相應反應,這些刺激能積極調動體驗者的感官系統,從而讓體驗者更易于沉浸虛擬世界,如圖2所示。

圖2 虛擬體驗交互感應
現如今人們日常活動范圍主要還是在室內,且伴隨著我國建筑行業的快速發展,結構復雜的巨型建筑如上海世貿大廈等逐漸進入人們的日常生活,室內尋路問題亟需解決。而近年來關于虛擬現實及Unity3D的研究越來越熱,通過建模并完成貼圖后導入Unity3D,在Unity3D中完成腳本語言的編寫,從而實現交互及尋路系統。由于虛擬場景具有較強的真實性,尋路者在極具復雜的室內環境中也能找到目標位置。
本文討論的是基于Unity3D[2]的室內導航系統,應用到軟件工程思想,從需求入手,設計室內尋路導航系統的各個功能模塊。由于室內場景極其復雜,室內導航系統的開發步驟如下:
(1)數據采集:采用CAD圖紙和場景圖片,應用Photoshop優化場景圖片信息;
(2)數據處理:結合3Dsmax建模應用,在Mari中完成模型貼圖;
(3)開發應用:將完成貼圖的模型導成.FBX格式后導入到Unity3D,在Unity3D中添加相機、燈光、碰撞體、尋路組件等,利用NGUI進行尋路系統交互界面設計等完成場景交互,最終實現室內自動尋路系統。其中包括輸入目的地,以最優算法實現最短路途,到達目的地,到達目的地后可以接著實現二次尋路;在尋路過程中遇到門、燈等組件,進行碰撞檢測,門、燈等自動打開[3]。其制作流程如圖3所示。

圖3 室內導航開發流程圖
2.1 前期工作
由于現代建筑其場景巨大室內場景復雜,在建模前,要搜集完整的數據,否則將會影響后續建模的進展及模型的使用。對要建模的物體進行照片采集并且利用PS處理,擁有一整套的從內到外的照片,此照片不僅用來幫助建模還用來完成模型貼圖;將CAD圖紙導入AutoCAD軟件,刪除不需要的部分,并且添加上建模所需要的補測數據,導出.DWG格式。
2.2 建模技術
將.DWG格式的文件導入3DSMAX[4],根據左視圖、頂視圖等將CAD文件按照其實際位置放好。選擇全部的CAD文件,使其凍結,然后根據制作順序暫時隱藏其他不需要的CAD。建模過程中可以參照采集的圖片保證模型的真實性。為了保證打包出的軟件運行流暢,在這里可以制作兩套模型,一套低模,一套高模,實現高模轉低模而低模擁有高模的效果。利用3DSMAX高效的建模技巧將模型建成之后,選擇UV展開,將模型展開UV,UV展開的好壞直接決定貼圖的效果,按照比例展開。將展好UV的模型導入Mari進行貼圖繪制,而一個場景的逼真度往往由貼圖所決定,因此,在進行貼圖繪制時統一采用1 024×1 024的照片進行,且在Mari中進行繪制時要細心。此時,模型已經建成,物體表面貼圖也已完成,導出.FBX文件。
2.3 Unity3D場景搭建技術
在Unity3D中實現尋路系統[5],由于本文討論的是在離線狀況下實現室內導航,而現在的建筑物往往有多個入口,因此需要選擇建筑物入口。此時進入交互界面,輸入需要導航的目標點,通過Find尋找該點是否存在,如果存在虛擬人物就會根據最優路徑自動到達,尋路結束,提醒是否再次尋路。場景制作流程如圖4所示。

圖4 Unity3d場景制作流程圖
2.3.1 尋路組件
使用Unity實現室內自動尋路,其有多種方式。第一種比較傳統的是使用A*尋路,它是一種比較傳統的人工智能算法,在游戲開發中比較常用到。A*的原理并不復雜,不過由于不是Unity3D自帶的功能,因此在設定網格和烘焙的過程中難免會出現問題。而NavMesh作為Unity自帶的功能,用法與之前的LightMapping烘焙或者遮擋剔除Occlusion Culling有很多相似之處,最主要是它用起來很方便。
將制作好的場景導入Unity3D,選擇場景模型,然后將Navigation Static選中,對于與場景無關的模型確定其不被選中。打開Navigation,根據場景需要調整尋路者半徑、高度以及尋路者能行走的最大坡度和高度,完成后烘焙場景[6]。
2.3.2 第三人稱物體設置
將預先設置好的人物prefab拖入場景,為其添加上Nav Mesh Agent組件,由于尋路者可能需要多次尋路,因此通過編寫C#代碼在Update函數中實現二次尋路。部分代碼如下:

由于使用角色為第三人稱,角色所處的狀態即為等待或行走,通過將事先導入的動畫進行設置進而實現。創造兩個 bool類型數值,分別為 idel與 walk,實現其與動畫過度關聯,并通過腳本進行控制。部分腳本如下:

2.3.3 相機設置
需要將相機設置成伴隨角色的移動。通過設置相機相對角色位置并且每幀都去檢測相機相對角色位置,即保證相機相對角色為靜止狀態。部分實現代碼如下:

2.3.4 交互界面
對于交互界面[7]的設計,采用了NGUI,大大方便了界面設計,提高了效率。對于交互界面,分為兩部分,即建筑物入口選擇界面和目標點輸入界面。
建筑物入口選擇部分交互界面,單獨放到一個場景中,將使用說明等與之組合在一起。如果用戶點擊某一入口,則將值傳遞給角色,角色切換到相應入口處。實現主要代碼如下:

交互界面效果圖如圖5所示。

圖5 虛擬校園系統GUI設計
通過在尋路代碼中添加設置虛擬人物與目標點的距離來判讀是否出現輸入目標點的交互界面[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 檢測碰撞
當角色經過門時,如果門是關閉的,則此時門應該打開,若燈是關閉的則也需打開,這需要在燈和門上添加剛體碰撞檢測[8],雖然實現不是很容易,但增加了交互性[9],場景真實感加強。對于門的檢測,需要在腳本代碼中分別實現OnTriggerEnter和OnTriggerExit函數,在OnTriggerEnter中播放門打開的動畫,在OnTriggerExit中停止門打開的動畫。燈的檢測直接利用OnTriggerEnter,當角色與燈組件發生碰撞時,燈的組件被喚醒。
本導航系統基于智能手機開發,雖然現在的智能手機處理器、內存等都有大的提升,但是如果場景較大,模型點面較多,代碼優化不合理,在智能機上的運行將會受影響。因此,本文認為應該從以下幾個方面進行場景優化[9]:
(1)對于場景內的點面,最好控制在10萬以內,看不見的點面將其刪除;
(2)盡可能減少角色骨骼數量;
(3)多張貼圖共享一張材質球;
(4)保證代碼邏輯正確,刪除腳本中未使用的Update函數;
(5)盡可能減少像素燈光、反射、陰影等的使用,這些操作會導致模型被多次渲染,加重CPU的負擔。
本文介紹了虛擬現實技術在室內導航方面應用的關鍵技術。通過數據采集、模型繪制、Unity3D場景開發,模擬出最真實的虛幻場景,讓使用者擁有身臨其境的感覺,幫助其更好地完成室內導航。本系統適合各種大中型室內場所導航,如醫院場所導航、大型超市貨物導航等。當然,由于開發場景的過程過于繁瑣,開發所需成本目前還較高,但是隨著虛擬現實技術、計算機網絡技術、虛擬現實眼鏡技術等的發展,在未來成本等問題會得到解決,屆時虛擬現實3D仿真導航系統將會取代傳統的二維平面導航系統。
[1]馮俊杰.基于UML的三維漫游系統的分析與設計[D].大連:遼寧師范大學,2011.
[2]朱惠娟.基于Unity3D的虛擬漫游系統[J].計算機系統應用,2012,21(10):36-39,65.
[3]干建松.基于Unity3d的室內漫游仿真系統[J].淮陰師范學院學報(自然科學版),2011,10(6):515-518.
[4]祝敏嬌.基于Unity3D的虛擬漫游技術的研究[J].硅谷. 2012(20):77,102.
[5]黃健柏,鄒崢嶸,朱學紅.虛擬校園及其在校園規劃管理中的應用[J].教育信息化,2002(6):7-8.
[6]吳鳳娟,刁永鋒.虛擬校園漫游系統的設計及實現[J].蘇州科技學院學報(工程技術版),2005,18(2):78-80.
[7]李峻峰.虛擬現實技術與虛擬校園的研究與實踐——以濰坊學院虛擬校園建設為例[J].工程圖學學報,2011,32(3):62-68.
[8]金漢均,王曉榮,徐星,等.一種基于DirectX的碰撞檢測算法[J].電子技術應用,2006,32(1):56-58.
[9]雷忠誠,胡文山,鄔靜陽,等.基于Web的3D智能家居系統設計與實現[J].電子技術應用,2014,40(9):114-117.
[10]金璽曾.Unity3D手機游戲開發[M].北京:清華大學出版社,2013.

表2 鏈型組網測試結果
結合表1和表2數據,星型組網時,自動補償前上下行最大時延差為30.93μs/30.75μs,自動補償后最大時延差為0.67μs/0.50μs;鏈型組網時,自動補償前上下行最大時延差為41.38μs/40.94μs,自動補償后最大時延差為0.40μs/0.75μs;考慮到頻譜儀存在±0.5μs的測量誤差,該測量結果在誤差范圍內符合設計的精度要求。實驗結果表明,在不同方式組網下,經時延自動補償后,系統上下行最大時延差均被補償至1μs以內,滿足了應用方提出的要求。
時延測量與補償是鐵路專用光纖分布式系統中的重要功能,本文提出了一種時延測量與計算的方法,設計了基于VxWorks的自動補償方案,借助現有的系統平臺和儀表設計實驗并驗證了該方案的可行性。
參考文獻
[1]李慶.包西鐵路GSM-R數字光纖直放站方案研究[J].鐵路標準設計,2013(12):105-108.
[2]姜立娜.GSM-R同頻干擾相關性研究[D].北京:北京交通大學,2013.
[3]王蓓.青藏鐵路GSM-R通信系統中干擾問題的分析與研究[D].北京:北京交通大學,2008.
[4]金紹春.數字光纖直放站中的時延測量與校正[J].大眾科技,2011(10):33-35.
[5]深圳國人通信有限公司.光纖直放站及其時延的測量方法、裝置及補償方法、系統[P].中國:CN101389090A,2009-03-18.
[6]周啟平,張楊,吳瓊.VxWorks開發指南與Tornado使用手冊[M].北京:中國電力出版社,2004.
[7]中國鐵路總公司.GSM-R中繼傳輸系統設備技術規范[S]. 2007.
(收稿日期:2015-06-23)
作者簡介:
丁偉偉(1991-),通信作者,男,碩士,主要研究方向:自動化與通信技術。E-mail:1333749@tongji.edu.cn。
趙霞(1974-),女,博士,副教授,主要研究方向:控制理論與工程,數字信號處理。
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
武勝,白江波,姚浩浩,等.基于虛擬現實技術的室內導航系統[J].微型機與應用,2015,34(20):76-79.
2015-05-21)
武勝(1992-),通信作者,男,本科,主要研究方向:大型室內場所虛擬導航。E-mail:1192245476@qq.com。
白江波(1994-),男,本科,主要研究方向:基于Unity3D的虛擬現實的導航。
姚浩浩(1993-),男,本科,主要研究方向:三維建模。