《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 基于虛擬現實技術的室內導航系統
基于虛擬現實技術的室內導航系統
2015年微型機與應用第20期
武 勝,白江波,姚浩浩,吳 浩
合肥工業大學宣城校區 商學系,安徽 宣城 242000
摘要: 以GPS、北斗等為主的室外導航系統的研究進行得如火如荼,但是室內導航的研究卻進行得不如人意。以Unity3D為引擎,結合3DS MAX建模,開發室內離線3D仿真尋路系統。該系統完全按照室內樣貌建造模型,以最真實的虛擬場景還原室內樣貌,供導航者更好地完成室內尋路。最后介紹了場景優化的方法,以便在PC、智能手機等平臺上使用。
Abstract:
Key words :

  摘  要: 以GPS、北斗等為主的室外導航系統的研究進行得如火如荼,但是室內導航的研究卻進行得不如人意。以Unity3D為引擎,結合3DS MAX建模,開發室內離線3D仿真尋路系統。該系統完全按照室內樣貌建造模型,以最真實的虛擬場景還原室內樣貌,供導航者更好地完成室內尋路。最后介紹了場景優化的方法,以便在PC、智能手機等平臺上使用。

  關鍵詞: 仿真;室內尋路;Unity3D;虛擬現實

0 引言

  虛擬現實(Virtual Reality,VR)[1]是一項綜合集成技術,涉及計算機圖形學、人機交互技術、傳感技術、人工智能等領域,它利用計算機生成逼真的三維視、聽、嗅覺等,使人作為參與者通過適當裝置,自然地對虛擬世界有更完美的體驗和交互作用。虛擬現實具有很好的交互性、沉浸性和想象性,這三個特性合稱為虛擬現實鐵三角,如圖1所示。

Image 001.png

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

Image 002.png

  現如今人們日常活動范圍主要還是在室內,且伴隨著我國建筑行業的快速發展,結構復雜的巨型建筑如上海世貿大廈等逐漸進入人們的日常生活,室內尋路問題亟需解決。而近年來關于虛擬現實及Unity3D的研究越來越熱,通過建模并完成貼圖后導入Unity3D,在Unity3D中完成腳本語言的編寫,從而實現交互及尋路系統。由于虛擬場景具有較強的真實性,尋路者在極具復雜的室內環境中也能找到目標位置。

1 概述

  本文討論的是基于Unity3D[2]的室內導航系統,應用到軟件工程思想,從需求入手,設計室內尋路導航系統的各個功能模塊。由于室內場景極其復雜,室內導航系統的開發步驟如下:

  (1)數據采集:采用CAD圖紙和場景圖片,應用Photoshop優化場景圖片信息;

  (2)數據處理:結合3Dsmax建模應用,在Mari中完成模型貼圖;

  (3)開發應用:將完成貼圖的模型導成.FBX格式后導入到Unity3D,在Unity3D中添加相機、燈光、碰撞體、尋路組件等,利用NGUI進行尋路系統交互界面設計等完成場景交互,最終實現室內自動尋路系統。其中包括輸入目的地,以最優算法實現最短路途,到達目的地,到達目的地后可以接著實現二次尋路;在尋路過程中遇到門、燈等組件,進行碰撞檢測,門、燈等自動打開[3]。其制作流程如圖3所示。

Image 003.png

2 室內導航系統的設計與實現

  2.1 前期工作

  由于現代建筑其場景巨大室內場景復雜,在建模前,要搜集完整的數據,否則將會影響后續建模的進展及模型的使用。對要建模的物體進行照片采集并且利用PS處理,擁有一整套的從內到外的照片,此照片不僅用來幫助建模還用來完成模型貼圖;將CAD圖紙導入AutoCAD軟件,刪除不需要的部分,并且添加上建模所需要的補測數據,導出.DWG格式。

  2.2 建模技術

  將.DWG格式的文件導入3DSMAX[4],根據左視圖、頂視圖等將CAD文件按照其實際位置放好。選擇全部的CAD文件,使其凍結,然后根據制作順序暫時隱藏其他不需要的CAD。建模過程中可以參照采集的圖片保證模型的真實性。為了保證打包出的軟件運行流暢,在這里可以制作兩套模型,一套低模,一套高模,實現高模轉低模而低模擁有高模的效果。利用3DS MAX高效的建模技巧將模型建成之后,選擇UV展開,將模型展開UV,UV展開的好壞直接決定貼圖的效果,按照比例展開。將展好UV的模型導入Mari進行貼圖繪制,而一個場景的逼真度往往由貼圖所決定,因此,在進行貼圖繪制時統一采用1 024×1 024的照片進行,且在Mari中進行繪制時要細心。此時,模型已經建成,物體表面貼圖也已完成,導出.FBX文件。

  2.3 Unity3D場景搭建技術

  在Unity3D中實現尋路系統[5],由于本文討論的是在離線狀況下實現室內導航,而現在的建筑物往往有多個入口,因此需要選擇建筑物入口。此時進入交互界面,輸入需要導航的目標點,通過Find尋找該點是否存在,如果存在虛擬人物就會根據最優路徑自動到達,尋路結束,提醒是否再次尋路。場景制作流程如圖4所示。

Image 004.png

  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函數中實現二次尋路。部分代碼如下:

  public NavMeshAgent man;

  public Transform target;

  GameObject go;

  void Start(){

  man=gameObject.GetComponent<NavMeshAgent>();

  go=GameObject.Find(Xinan.rukou);}

  target=go.transform;

  void Update(){

  if(Xunlu. roomNum != null){

  go=GameObject.Find(Xunlu.roomNum);

  target=go.transform;

  man.SetDestination(target.position); }}

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

  void Start() {

  m_ani=this.GetComponent<Animator>();}

  void Update(){

  AnimatorStateInfo stateInfo=m_ani.GetCurrentAnimatorStateInfo(0);

  …..

  m_ani.SetBool("idle",true);

  …….

  m_ani.SetBool("idel",false);

  …..

  m_ani.SetBool("walk",true);

  …….

  m_ani.SetBool("walk",false);}}

  2.3.3 相機設置

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

  public Transform m_transform;

  float m_camHeight=1.4f;

  Transform m_camTransform;

  CharacterController m_ch;

  void Update(){

  m_transform=this.transform;

  m_camTransform=Camera.main.transform;

  Vector3 pos=m_transform.position;

  pos.y+=m_camHeight;

  m_camTransform.position=pos;

  m_camTransform.rotation=m_transform.rotation;

  m_camTransform.eulerAngles=m_transform. eulerAngles}

  2.3.4 交互界面

  對于交互界面[7]的設計,采用了NGUI,大大方便了界面設計,提高了效率。對于交互界面,分為兩部分,即建筑物入口選擇界面和目標點輸入界面。

  建筑物入口選擇部分交互界面,單獨放到一個場景中,將使用說明等與之組合在一起。如果用戶點擊某一入口,則將值傳遞給角色,角色切換到相應入口處。實現主要代碼如下:

  void OnClick()

  {Application.LoadLevel(2);

  rukou="easterndoor";

  M=true;}

  場景二中人物添加代碼如下:

  void Start(){

  go=GameObject.Find(Xinan.rukou);

  target=go.transform;

  man.transform.position=target.position;}

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

Image 005.png

  通過在尋路代碼中添加設置虛擬人物與目標點的距離來判讀是否出現輸入目標點的交互界面[8]:

  float dist=Vector3.Distance(man.transform.position,target.transform.position);

  if(dist<=1.0){UI.SetActive(true);}

  對于目標點的輸入采用獲取輸入框的值,如果輸入的地點不存在,則返回提醒輸入正確的目標點;否則,需找目標點,效果如圖6所示。

Image 006.png

  public GameObject errorUI;

  public static string classroomNum;

  ……

  classroomNum=GuiInput.value;

  在角色代碼中添加如下代碼:

  if(xunlu.flag==1)

  {errorUI.SetActive(true);}

  else

  {errorUI.SetActive(false);}

  2.3.5 檢測碰撞

  當角色經過門時,如果門是關閉的,則此時門應該打開,若燈是關閉的則也需打開,這需要在燈和門上添加剛體碰撞檢測[8],雖然實現不是很容易,但增加了交互性[9],場景真實感加強。對于門的檢測,需要在腳本代碼中分別實現OnTriggerEnter和OnTriggerExit函數,在OnTriggerEnter中播放門打開的動畫,在OnTriggerExit中停止門打開的動畫。燈的檢測直接利用OnTriggerEnter,當角色與燈組件發生碰撞時,燈的組件被喚醒。

3 場景優化

  本導航系統基于智能手機開發,雖然現在的智能手機處理器、內存等都有大的提升,但是如果場景較大,模型點面較多,代碼優化不合理,在智能機上的運行將會受影響。因此,本文認為應該從以下幾個方面進行場景優化[9]:

  (1)對于場景內的點面,最好控制在10萬以內,看不見的點面將其刪除;

  (2)盡可能減少角色骨骼數量;

  (3)多張貼圖共享一張材質球;

  (4)保證代碼邏輯正確,刪除腳本中未使用的Update函數;

  (5)盡可能減少像素燈光、反射、陰影等的使用,這些操作會導致模型被多次渲染,加重CPU的負擔。

4 結論

  本文介紹了虛擬現實技術在室內導航方面應用的關鍵技術。通過數據采集、模型繪制、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.


此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲午夜视频在线| 亚洲日韩视频| 久久精品欧美日韩| 亚洲第一精品久久忘忧草社区| 免费不卡在线观看av| 亚洲免费高清视频| 亚洲午夜精品久久久久久app| 蜜桃av综合| 亚洲天堂男人| 亚洲一区国产视频| 在线欧美日韩| 国产精品久久一级| 久久香蕉国产线看观看av| 亚洲毛片一区二区| 香蕉久久久久久久av网站| 亚洲国产欧美一区二区三区同亚洲| 久久天天躁狠狠躁夜夜av| 一区二区三区高清| 久久成年人视频| 日韩一本二本av| 国产主播一区二区三区| 欧美视频1区| 久久综合久久综合久久综合| 一区二区三区视频在线观看| 午夜激情综合网| 亚洲欧洲日本mm| 国产三级欧美三级| 欧美日韩亚洲三区| 狂野欧美激情性xxxx| 亚洲欧美在线一区| 亚洲精品一区二区网址 | 亚洲日本激情| 国产精品网站在线| 欧美成人免费全部| 欧美在线观看你懂的| 亚洲精选视频在线| 久久国产高清| 亚洲网站在线播放| 亚洲黄色毛片| 国产婷婷色一区二区三区| 欧美—级高清免费播放| 久久久精品国产免费观看同学| 久久国产一区二区三区| 亚洲性视频网址| 亚洲精品乱码视频| 亚洲电影免费观看高清完整版在线观看| 农夫在线精品视频免费观看| 国产欧美一区二区三区另类精品| 久久久亚洲国产天美传媒修理工| 亚洲精华国产欧美| 久久精品人人做人人爽电影蜜月| 亚洲激情视频在线播放| 狠狠入ady亚洲精品经典电影| 欧美电影在线| 美女视频黄 久久| 久久精品国产69国产精品亚洲| 亚洲国语精品自产拍在线观看| 99re热这里只有精品免费视频| 欧美国产乱视频| 久久免费高清| 久久久久久久综合| 午夜亚洲福利在线老司机| 亚洲天堂网在线观看| 日韩视频永久免费观看| 亚洲日本成人| 亚洲裸体视频| 一区二区成人精品| 一区二区三区视频在线| 99精品久久免费看蜜臀剧情介绍| 亚洲在线日韩| 午夜久久久久久久久久一区二区| 亚洲狠狠丁香婷婷综合久久久| 国产精品美女午夜av| 国产精品久久午夜夜伦鲁鲁| 欧美日韩视频在线一区二区观看视频| 久久国产精品高清| 久久久五月婷婷| 玖玖在线精品| 欧美激情精品久久久久久免费印度 | 欧美日本簧片| 欧美性生交xxxxx久久久| 欧美日在线观看| 欧美午夜国产| 国产精品久久久一本精品| 国产精品一区二区三区四区 | 亚洲欧美日韩一区二区三区在线| 伊人蜜桃色噜噜激情综合| 1024欧美极品| 亚洲精品网站在线播放gif| 99精品视频网| 亚洲综合不卡| 久久国产婷婷国产香蕉| 亚洲欧洲精品一区二区三区不卡 | 亚洲国产精品一区二区久| 亚洲区一区二| 99国产麻豆精品| 亚洲一区二区在线观看视频| 亚洲欧美国产不卡| 久久久久国产免费免费| 玖玖视频精品| 欧美日韩国产123| 国产精品久久国产三级国电话系列| 免费欧美日韩| 欧美日韩mv| 国产精品嫩草久久久久| 国产午夜精品美女毛片视频| 依依成人综合视频| 99精品热视频只有精品10| 午夜免费电影一区在线观看| 亚洲第一黄色| 这里只有精品电影| 午夜精品视频一区| 久久激情五月激情| 欧美大胆a视频| 国产精品另类一区| 国产在线视频欧美| 亚洲毛片在线观看.| 亚洲欧美国产精品桃花| 亚洲日本成人| 性做久久久久久久久| 蜜桃av综合| 欧美视频二区| 狠狠综合久久av一区二区老牛| 国产一区二区三区四区在线观看| 国产午夜精品理论片a级大结局| 国产精品一区二区三区四区 | 亚洲电影免费在线| 正在播放欧美视频| 久久国产精品99精品国产| 久久久蜜桃精品| 欧美高清在线视频| 欧美日韩国产探花| 国产性做久久久久久| 亚洲精品综合久久中文字幕| 久久不射中文字幕| 亚洲综合精品一区二区| 欧美成人小视频| 国产欧美精品日韩精品| 最新国产拍偷乱拍精品| 午夜影院日韩| 亚洲无线视频| 男同欧美伦乱| 国产亚洲二区| 亚洲一区www| 夜夜狂射影院欧美极品| 久久婷婷综合激情| 国产精品久久久久一区二区三区| 国产精品揄拍500视频| 亚洲黄色成人| 亚洲福利视频专区| 久久成人精品| 国产精品视频福利| 日韩视频在线观看免费| 亚洲欧洲视频| 久久夜色精品| 国产麻豆综合| 亚洲五月婷婷| 亚洲五月六月| 欧美日韩国产一区精品一区| 国产在线高清精品| 午夜精品一区二区三区电影天堂 | 蜜臀va亚洲va欧美va天堂| 国产区在线观看成人精品| 一本色道久久综合狠狠躁的推荐| 亚洲影视综合| 99视频日韩| 欧美激情一区二区三区蜜桃视频 | 一本色道久久88综合日韩精品| 亚洲欧美激情四射在线日| 亚洲乱码精品一二三四区日韩在线 | 一区二区欧美日韩| 欧美激情一区二区三区在线视频观看| 欧美久久久久| 亚洲精品乱码| 日韩一级免费| 欧美黑人一区二区三区| 伊人精品成人久久综合软件| 亚洲一区二区三区国产| 中文精品视频| 欧美色中文字幕| 亚洲天堂偷拍| 亚洲欧美中文日韩在线| 国产精品久久久久久久第一福利| 影音先锋亚洲精品| 亚洲国产成人精品女人久久久| 亚洲视频导航| 国产精品成人免费| 亚洲一区二区免费在线| 亚洲欧美一区二区三区在线| 国产精品s色| 亚洲网友自拍| 香蕉免费一区二区三区在线观看| 欧美电影在线观看完整版| 亚洲高清在线观看一区| 亚洲精品视频在线看| 欧美日本不卡高清| 夜夜嗨av一区二区三区四区| 亚洲中午字幕| 国产日韩欧美制服另类| 亚洲第一精品久久忘忧草社区|