《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 基于虛擬現實技術的室內導航系統
基于虛擬現實技術的室內導航系統
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亚洲国产精品_日韩亚洲一区二区
一区二区三区 在线观看视频| 久久久久久欧美| 欧美在线观看视频一区二区| 99在线|亚洲一区二区| 在线欧美日韩国产| 国产综合色在线| 国产日本欧美一区二区三区| 欧美日韩视频在线一区二区| 欧美国产日韩一区二区三区| 欧美1区3d| 欧美不卡视频一区| 欧美成人精品h版在线观看| 久久精品国产成人| 久久成人综合网| 日韩一区二区精品| aa成人免费视频| 在线亚洲观看| 亚洲一区在线观看视频| 亚洲欧美另类在线观看| 亚洲欧美综合一区| 欧美在线视频不卡| 久久精品国产免费| 久久久久久网站| 久久综合网络一区二区| 麻豆精品在线播放| 欧美1区2区| 欧美日韩三级视频| 欧美视频三区在线播放| 国产精品久久久久久久午夜 | 一区二区三区视频免费在线观看| 日韩亚洲欧美高清| 亚洲午夜精品久久| 亚洲欧美综合另类中字| 久久久久高清| 欧美肥婆在线| 欧美日韩在线免费观看| 国产精品久久久久久久9999| 国产欧美一区二区色老头 | 欧美jjzz| 欧美日韩ab| 国产精品日韩欧美一区| 国产字幕视频一区二区| 亚洲国产成人久久| 一区二区日韩精品| 在线观看成人av电影| 夜夜嗨av一区二区三区 | 欧美www视频| 蜜乳av另类精品一区二区| 欧美二区在线看| 欧美日韩在线视频一区二区| 国产精品国产一区二区| 国产色爱av资源综合区| 亚洲大胆美女视频| 亚洲作爱视频| 久久精品国产69国产精品亚洲 | 欧美经典一区二区| 欧美性生交xxxxx久久久| 国产一区二区三区电影在线观看| 亚洲国产小视频| 亚洲免费一级电影| 亚洲精品1区2区| 先锋影音网一区二区| 免费中文字幕日韩欧美| 国产精品日韩一区二区三区| 在线观看不卡| 亚洲欧美成人一区二区三区| 亚洲精品中文字幕有码专区| 午夜视频在线观看一区二区| 欧美搞黄网站| 国产亚洲欧美激情| 中文一区二区在线观看| 亚洲激情第一页| 欧美与黑人午夜性猛交久久久| 欧美国产日韩精品免费观看| 国产日本亚洲高清| 日韩一级欧洲| 亚洲精品免费看| 久久精品国产欧美亚洲人人爽| 欧美日韩xxxxx| 极品少妇一区二区| 亚洲一区二区三区免费在线观看| 亚洲人体偷拍| 久久国产手机看片| 国产精品大全| 亚洲免费成人av| 亚洲国产三级网| 久久精品国产一区二区三区免费看| 欧美日在线观看| 亚洲国产日韩美| 久久国产精品99精品国产| 亚洲欧美视频在线| 欧美日韩国产一区| 亚洲国产日韩在线| 欧美在线关看| 欧美与黑人午夜性猛交久久久| 欧美午夜精品| 亚洲理论电影网| 亚洲人成人一区二区在线观看| 久久国产欧美日韩精品| 国产精品美女一区二区| 日韩视频在线观看国产| 亚洲久色影视| 免费亚洲电影| 在线观看日韩av电影| 亚洲电影免费观看高清完整版在线观看| 午夜伦理片一区| 国产精品av免费在线观看| 亚洲精品久久久久久一区二区| 亚洲国产日韩欧美| 久久夜色精品| 一区在线影院| 亚洲国产高清在线| 久久伊人亚洲| 伊人久久综合97精品| 欧美在线|欧美| 久久超碰97中文字幕| 国产欧美精品在线播放| 亚洲欧美日韩国产成人精品影院 | 欧美中文字幕在线播放| 国产欧美一区二区精品性| 亚洲一区二区高清| 午夜精品国产更新| 国产精品久久久久久久久久久久| 亚洲网友自拍| 欧美亚洲免费电影| 国产三区精品| 亚洲大片免费看| 老色鬼久久亚洲一区二区| 一区二区三区在线高清| 亚洲区在线播放| 欧美日韩成人免费| 日韩午夜电影av| 亚洲直播在线一区| 国产精品亚洲精品| 午夜国产不卡在线观看视频| 久久精品国产99国产精品澳门 | 亚洲欧美日韩一区二区三区在线观看| 午夜精品亚洲一区二区三区嫩草| 国产欧美一区二区精品忘忧草| 午夜在线一区二区| 久久国产精品网站| 精品成人一区二区三区四区| 亚洲精品在线一区二区| 欧美日韩综合一区| 亚洲欧美日韩中文播放| 久久久久成人精品| 亚洲国产欧美一区二区三区同亚洲| 一本色道久久综合| 国产美女一区二区| 久久精品国产亚洲aⅴ| 欧美二区在线看| 亚洲视频在线看| 久久九九热免费视频| 亚洲高清在线| 亚洲一区影院| 狠狠噜噜久久| 99伊人成综合| 国产麻豆午夜三级精品| 亚洲风情在线资源站| 欧美精品自拍偷拍动漫精品| 亚洲一区视频| 美女啪啪无遮挡免费久久网站| 亚洲精品欧美极品| 午夜日韩福利| 亚洲国产另类久久久精品极度| 亚洲欧美国产高清| 伊人天天综合| 亚洲欧美在线一区| 在线观看日韩专区| 亚洲欧美精品在线| 亚洲国产99| 欧美一区二区精品久久911| 在线日韩欧美视频| 亚洲综合日本| 亚洲国产婷婷| 久久精品视频免费播放| 亚洲美女91| 久久亚洲国产精品一区二区| 一本色道久久综合亚洲精品不 | 国模套图日韩精品一区二区| 亚洲美女精品成人在线视频| 国产欧美日韩麻豆91| 99精品国产一区二区青青牛奶| 国产精品资源| 中文一区二区| 精品999久久久| 午夜精品视频在线| 亚洲精品日韩在线观看| 久久久91精品国产一区二区精品| 99精品欧美一区| 欧美韩国日本一区| 欧美一区二区三区久久精品茉莉花| 欧美日韩视频在线观看一区二区三区| 亚洲第一黄网| 国产欧美综合一区二区三区| 亚洲网站视频福利| 亚洲国产老妈| 美女成人午夜| 久久不射电影网| 国产精品毛片高清在线完整版|