国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Unity 3D的虛擬樓盤(pán)漫游和碰撞檢測(cè)研究

2016-08-18 20:07韓蕾
電腦知識(shí)與技術(shù) 2016年19期
關(guān)鍵詞:碰撞檢測(cè)虛擬現(xiàn)實(shí)

韓蕾

摘要:為了應(yīng)用虛擬現(xiàn)實(shí)技術(shù)將樓盤(pán)銷(xiāo)售從傳統(tǒng)的圖紙宣傳方式變成三維空間漫游方式,該文重點(diǎn)對(duì)虛擬三維空間漫游常用的漫游技術(shù)和碰撞檢測(cè)方法進(jìn)行研究,并對(duì)漫游和碰撞檢測(cè)在Unity3d平臺(tái)的實(shí)現(xiàn)過(guò)程做了介紹。

關(guān)鍵詞:虛擬現(xiàn)實(shí);場(chǎng)景漫游;自動(dòng)尋路;碰撞檢測(cè)

中圖分類(lèi)號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)19-0194-02

Research of the Virtual Community Cruise and Collision Detection Based on Unity3d

HAN Lei

(Qingdao Harbor Vocational and Technical College, Qingdao 266400, China)

Abstract: In order to use virtual reality technology to real estate sales from the traditional way into cruise mode based on three-dimension, this article studied the roaming technology and collision detection methods based on the virtual three-dimensional space , and the collision detection and roaming platform in Unity3d the implementation process is introduced.

key words: virtual reality; cruise; automatic pathfinding; collision detection

虛擬現(xiàn)實(shí)技術(shù)的發(fā)展給房地產(chǎn)銷(xiāo)售方式帶來(lái)革命性的變化,樓盤(pán)營(yíng)銷(xiāo)手段從平面圖紙宣傳轉(zhuǎn)換成了基于虛擬現(xiàn)實(shí)技術(shù)的虛擬樓盤(pán)漫游,極大的增強(qiáng)了客戶(hù)對(duì)樓盤(pán)認(rèn)知的真實(shí)感,從而增強(qiáng)了客戶(hù)進(jìn)一步關(guān)注樓盤(pán)的愿望,虛擬樓盤(pán)漫游系統(tǒng)得到廣泛的開(kāi)發(fā)應(yīng)用。虛擬漫游技術(shù)主要包括場(chǎng)景建模、場(chǎng)景漫游、碰撞檢測(cè)三大技術(shù),本文就基于Unity3d開(kāi)發(fā)平臺(tái)開(kāi)發(fā)虛擬樓盤(pán)漫游系統(tǒng)所需要的場(chǎng)景漫游技術(shù)和碰撞檢測(cè)技術(shù)進(jìn)行研究。

1 虛擬現(xiàn)實(shí)技術(shù)及Unity3d開(kāi)發(fā)平臺(tái)

虛擬現(xiàn)實(shí)技術(shù)是以計(jì)算機(jī)技術(shù)為核心,綜合集成計(jì)算機(jī)圖形、計(jì)算機(jī)仿真、人工智能、傳感技術(shù)、顯示技術(shù)、網(wǎng)絡(luò)并行處理等技術(shù)的一種高技術(shù)模擬系統(tǒng)。它生成一種讓人從視覺(jué)、聽(tīng)覺(jué)、觸覺(jué)等多方面感到“真實(shí)”的三維虛擬環(huán)境,支持人通過(guò)語(yǔ)言、手勢(shì)、動(dòng)作等多種與真實(shí)情況一致的方式與虛擬環(huán)境進(jìn)行交互,給人一種身臨其境的感覺(jué)。由于虛擬現(xiàn)實(shí)技術(shù)對(duì)真實(shí)環(huán)境的強(qiáng)大的虛擬功能和其給用戶(hù)帶來(lái)的強(qiáng)烈的沉浸感和自然真實(shí)的交互性,虛擬現(xiàn)實(shí)技術(shù)被廣泛應(yīng)用于醫(yī)學(xué)、游戲、建筑設(shè)計(jì)、房產(chǎn)開(kāi)發(fā)、航空航天、工業(yè)仿真、應(yīng)急演練等多個(gè)領(lǐng)域[1]。

Unity3d是一款三維游戲開(kāi)發(fā)平臺(tái),使用Unity3d用戶(hù)可以輕松的完成三維視頻游戲、建筑可視化、實(shí)時(shí)三維動(dòng)畫(huà)等三維虛擬環(huán)境的交互內(nèi)容。Unity3d編輯器在Windows 和Mac OS X下運(yùn)行,并支持Windows、iphone、Android等多種發(fā)布平臺(tái)。由于其可視化的開(kāi)發(fā)界面、多發(fā)布平臺(tái)、多開(kāi)發(fā)平臺(tái),以及支持大家熟悉的C#語(yǔ)言作為腳本開(kāi)發(fā)語(yǔ)言,Unity3d被廣泛的應(yīng)用于三維虛擬漫游系統(tǒng)開(kāi)發(fā)。

2 虛擬場(chǎng)景漫游技術(shù)及在Unity3d中的實(shí)現(xiàn)

一個(gè)樓盤(pán)虛擬漫游功能至少要提供用戶(hù)進(jìn)行自主“游覽”的交互漫游功能和可以為用戶(hù)進(jìn)行全方位導(dǎo)航的自動(dòng)漫游功能,這樣的樓盤(pán)漫游系統(tǒng)才可以滿(mǎn)足用戶(hù)的基本需要。

2.1 交互漫游技術(shù)及在Unity3d中的實(shí)現(xiàn)

虛擬樓盤(pán)漫游系統(tǒng)中交互漫游功能提供用戶(hù)通過(guò)鍵盤(pán)、鼠標(biāo)以及觸摸方式控制漫游角色按照操作者的意志進(jìn)行瀏覽的功能,Unity3d中提供第一人稱(chēng)角色漫游和第三人稱(chēng)角色漫游兩種漫游方式。對(duì)于虛擬樓盤(pán)漫游,我們通常采用第一人稱(chēng)漫游,以增強(qiáng)用戶(hù)的沉浸感、真實(shí)感。

虛擬場(chǎng)景漫游的實(shí)現(xiàn)原理是仿照真實(shí)環(huán)境中攝像機(jī)的作用和操作方式,相當(dāng)于給在虛擬環(huán)境中的瀏覽者加上了一架攝像機(jī),瀏覽者通過(guò)攝像機(jī)瀏覽環(huán)境。因此在虛擬漫游在系統(tǒng)中首先要架設(shè)攝像機(jī)(系統(tǒng)組件)在合適的位置,接下來(lái)通過(guò)交互設(shè)備(大多數(shù)情況下用鍵盤(pán)、鼠標(biāo))和腳本程序?qū)崿F(xiàn)對(duì)攝像機(jī)的上下左右、遠(yuǎn)近視點(diǎn)位置的控制功能,配合三維場(chǎng)景畫(huà)面的動(dòng)態(tài)切換載入模擬出在觀察者在真實(shí)環(huán)境中隨位置、方向、視線變化所看到的場(chǎng)景的變化,從而實(shí)現(xiàn)虛擬環(huán)境下漫游的功能。三維場(chǎng)景模型制作完成后,在Unity3d中可以輕松的實(shí)現(xiàn)交互漫游。Unity3d中的實(shí)現(xiàn)過(guò)程如下:

將建好的場(chǎng)景模型分類(lèi)導(dǎo)入到Unity3d中,做相應(yīng)三維場(chǎng)景效果參數(shù)設(shè)置。接著創(chuàng)建一個(gè)第一人稱(chēng)控制器First Person Controller,調(diào)整First Person Controller的位置和高度,這一步相當(dāng)于把一個(gè)第一視角的攝像機(jī)架設(shè)在一個(gè)透明的膠囊體漫游角色上,系統(tǒng)中出現(xiàn)了一個(gè)漫游者——系統(tǒng)操作者。接下來(lái)要做的是對(duì)該控制器的Character Controller組件設(shè)置屬性值、添加、改寫(xiě)漫游腳本。通過(guò)屬性值設(shè)置使漫游者在漫游過(guò)程應(yīng)具備現(xiàn)實(shí)用人在環(huán)境中游覽的特點(diǎn),如,爬坡能力、過(guò)間隙的能力等等。編寫(xiě)腳本控制漫游角色相應(yīng)操作者的指使進(jìn)行漫游,腳本中通過(guò)Update函數(shù)響應(yīng)鍵盤(pán)、鼠標(biāo)的移動(dòng)輸入信號(hào);通過(guò)Move函數(shù)控制第一人稱(chēng)控制器的移動(dòng)。同時(shí),在移動(dòng)過(guò)程中要進(jìn)行碰撞檢測(cè),一旦檢測(cè)到碰撞立即做出碰撞響應(yīng)——停止漫游,消息提示,等待調(diào)整漫游方向。漫游方向調(diào)整通過(guò)編寫(xiě)腳本由鍵盤(pán)的W、A、S、D按鍵來(lái)控制攝像機(jī)的移動(dòng),通過(guò)鼠標(biāo)控制視角和朝向。

2.2 自動(dòng)尋路漫游技術(shù)及在Unity3d中的實(shí)現(xiàn)

對(duì)購(gòu)房者來(lái)說(shuō),樓盤(pán)本身以及周邊的環(huán)境是購(gòu)房者所關(guān)注的,因此對(duì)于一個(gè)良好的虛擬樓盤(pán)漫游系統(tǒng),能滿(mǎn)足用戶(hù)充分了解樓盤(pán)和樓盤(pán)周邊環(huán)境的功能。一個(gè)陌生的樓盤(pán)讓用戶(hù)通過(guò)交互漫游,往往會(huì)給人一種“不識(shí)廬山真面目”的感覺(jué),因此虛擬樓盤(pán)漫游系統(tǒng)在提供交互漫游選項(xiàng)的同時(shí)也支持自動(dòng)尋路漫游,允許用戶(hù)輸入起點(diǎn)、目的地,系統(tǒng)根據(jù)用戶(hù)輸入的起始點(diǎn)和目的地自動(dòng)尋找一條可行的路徑引領(lǐng)用戶(hù)漫游,使用戶(hù)輕輕松松漫游樓盤(pán)及周邊環(huán)境。

自動(dòng)尋路漫游的關(guān)鍵是路徑規(guī)劃。虛擬場(chǎng)景的路徑規(guī)劃來(lái)源于機(jī)器人學(xué)的路徑規(guī)劃,路徑規(guī)劃又分為全局路徑規(guī)劃和局部路徑規(guī)劃。全局路徑規(guī)劃,即在漫游前知道漫游場(chǎng)景的所有信息,根據(jù)已知的信息,借助路徑搜索算法,找出起點(diǎn)到終點(diǎn)的路線,開(kāi)始漫游。局部路徑規(guī)劃,即對(duì)場(chǎng)景的信息局部或完全未知,在漫游過(guò)程中需要借助某些特殊設(shè)備探知場(chǎng)景的信息,根據(jù)探知的信息確定漫游的方向、路徑[2]。對(duì)于虛擬樓盤(pán)漫游系統(tǒng),整個(gè)樓盤(pán)的場(chǎng)景建模在漫游前已完成,可供漫游的路徑信息已知,因此,虛擬樓盤(pán)漫游系統(tǒng)的自動(dòng)尋路采用全局路徑規(guī)劃。

Unity3d支持靜態(tài)尋路和動(dòng)態(tài)尋路兩種尋路方式,靜態(tài)尋路要求漫游路徑在漫游前規(guī)劃完成,漫游過(guò)程沿著規(guī)劃的路線進(jìn)行;動(dòng)態(tài)尋路在漫游過(guò)程中一旦遇到障礙,需要從停止點(diǎn)到目標(biāo)之間重新進(jìn)行路徑規(guī)劃,選擇最佳路徑。虛擬樓盤(pán)漫游場(chǎng)景中的障礙物是固定的,可選路徑固定,因此對(duì)于樓盤(pán)漫游系統(tǒng)的選擇靜態(tài)尋路簡(jiǎn)單實(shí)用。在Unity3d中由NavMesh組件完成尋路開(kāi)發(fā)。NavMesh的尋路算法的核心是用三角形代替?zhèn)鹘y(tǒng)的尋路算法中的網(wǎng)格,用計(jì)算拐點(diǎn)優(yōu)化尋路路徑。NavMesh尋路算法實(shí)現(xiàn)分為以下幾步:

第一步:建立MESH三角形網(wǎng)格:

首先,畫(huà)出一個(gè)范圍可行走范圍。再在可行走范圍中去不可行走的范圍。第三步用多個(gè)多邊形Polygon代替以上的范圍,然后再由這些多邊形的各個(gè)頂點(diǎn)來(lái)生成三角形網(wǎng)格,三角形網(wǎng)格的生成算法如下:

Step 1:用可行走Polygon的任意一條邊作為起點(diǎn),將其推入堆棧列表。到Step2.

Step 2:從堆棧中推出一條邊,在所有三角形中計(jì)算出邊的DT點(diǎn),構(gòu)成約束Delaunay三角形,到Step3。如果沒(méi)有DT點(diǎn)就重復(fù)做Step2,直到堆棧為空就結(jié)束整個(gè)程序。

Step 3:將所構(gòu)成的三角形,另兩邊做如下處理:檢查堆棧中是否已存在,如果存在就刪除該邊,如果不存在就加入到堆棧中。

第二步:用NavMesh算法尋路

首先計(jì)算起點(diǎn)到各鄰接三角形中心的距離,選取F值(距離賦值)最小的三角形,計(jì)算G(起點(diǎn)到個(gè)鄰接三角形中心的距離)值,如果比以前的G值小則更新父三角及G值,最終得到一條三角形連接線路。

對(duì)于虛擬樓盤(pán)漫游系統(tǒng)的建筑物,由于目標(biāo)范圍太大,導(dǎo)致路徑規(guī)劃復(fù)雜,處理的方法是在每個(gè)作為尋路目標(biāo)的建筑物入口處設(shè)置一個(gè)較小的替代目標(biāo)。

3 三維碰撞檢測(cè)技術(shù)及在Unity3d中的實(shí)現(xiàn)

虛擬樓盤(pán)場(chǎng)景有假山、樓體、樹(shù)木、花壇等,那么在交互漫游過(guò)程中,漫游角色在與這些物體發(fā)生碰撞時(shí),系統(tǒng)必須能及時(shí)檢測(cè)到碰撞并立即做出處理響應(yīng),這樣才能避免出現(xiàn)“穿墻”現(xiàn)象,給用戶(hù)一個(gè)逼真的漫游體驗(yàn)。碰撞檢測(cè)是虛擬樓盤(pán)漫游中影響漫游“真實(shí)感”的重要因素。

目前,常用的碰撞檢測(cè)方法主要有層次包圍盒法和空間分割法。空間分割法是把三維虛擬空間分割成大小相等的單元格,然后對(duì)占有同一個(gè)單元或者相鄰單元格的對(duì)象進(jìn)行相交檢測(cè)。在環(huán)境物體分布稀疏的場(chǎng)景中,空間分割法可以快速的找出相交單元格,進(jìn)行碰撞檢測(cè)。但是復(fù)雜的場(chǎng)景中,空間分割法由于不容易準(zhǔn)確確定分割尺寸,經(jīng)常造成存儲(chǔ)空間浪費(fèi)過(guò)大,檢測(cè)效率低。所以空間分割法較少使用。層次包圍盒法通過(guò)規(guī)則的立體幾何圖形將虛擬場(chǎng)景的對(duì)象包圍起來(lái),使規(guī)則幾何體的特性與虛擬對(duì)象的特性接近一致,當(dāng)判斷兩個(gè)被層次包圍盒包圍的虛擬對(duì)象是否碰撞時(shí),首先從包圍盒相交檢測(cè)開(kāi)始,如果包圍盒未相交,說(shuō)明兩個(gè)虛擬對(duì)象沒(méi)有發(fā)生碰撞,不需要進(jìn)行兩個(gè)虛擬對(duì)象的相交測(cè)試,因此層次包圍盒法效率較空間分割法要高的多,再加上其檢測(cè)方法簡(jiǎn)單的優(yōu)點(diǎn),層次包圍盒法是三維虛擬場(chǎng)景漫游中應(yīng)用廣泛的碰撞檢測(cè)算法。根據(jù)包圍盒的幾何體不同,層次包圍盒碰撞檢測(cè)算法又分為:包圍球法、AABB包圍盒法、OBB包圍盒法[4]。

Unity3d開(kāi)發(fā)平臺(tái)內(nèi)置了基于層次包圍盒的碰撞檢測(cè)算法,為了減輕開(kāi)發(fā)人員的工作負(fù)擔(dān),Unity3d開(kāi)發(fā)平臺(tái)中基于層次包圍盒的各種碰撞檢測(cè)算法開(kāi)發(fā)完成了多種碰撞器,開(kāi)發(fā)人員在開(kāi)發(fā)過(guò)程中直接添加相應(yīng)的碰撞器完成碰撞檢測(cè),而不需要編寫(xiě)碰撞檢測(cè)算法,大大節(jié)省了開(kāi)發(fā)時(shí)間。Unity3d提供的碰撞器主要包括Box Collider(盒子碰撞器)、Sphere Collider(球形碰撞器)、Capsule Collider(膠囊碰撞器)、Wheel Collider(輪子碰撞器)、Mesh Collider(網(wǎng)格碰撞器)、Terrain Collider(地形碰撞器)等?;赨nity3d做樓盤(pán)漫游系統(tǒng),其碰撞檢測(cè)主要用于漫游角色與墻體、樹(shù)木、花壇、草地之間的碰撞,以不出現(xiàn)“穿墻”現(xiàn)象和及時(shí)做出碰撞響應(yīng)為目的,因此該漫游系統(tǒng)碰撞器應(yīng)以盒子、球形、膠囊等原型碰撞器為主,復(fù)雜物體的碰撞器用原型碰撞器進(jìn)行組合,比如,樹(shù)可以給樹(shù)頭和樹(shù)干分別用盒形碰撞器,讓他們組合起來(lái)作為單個(gè)碰撞器使用。

樓盤(pán)漫游系統(tǒng)中,對(duì)樓體、樹(shù)木、假山這些靜止不動(dòng)的環(huán)境模型添加Static Collider 靜態(tài)碰撞器。對(duì)漫游角色添加Rigidbody Collider 剛體碰撞器,碰撞信息處理由腳本組件通過(guò)OnCollisionEnter(當(dāng)進(jìn)入碰撞器)、 OnCollisionExit(當(dāng)退出碰撞器)、OnCollisionStay(當(dāng)逗留碰撞器)函數(shù)實(shí)現(xiàn)。

4 結(jié)束語(yǔ)

虛擬樓盤(pán)漫游系統(tǒng)中的關(guān)鍵技術(shù)是路徑規(guī)劃和碰撞檢測(cè)方法,本文首先對(duì)基于Unity3d進(jìn)行虛擬樓盤(pán)漫游系統(tǒng)開(kāi)發(fā)中用到的交互漫游和自動(dòng)尋路漫游的路徑規(guī)劃、以及漫游過(guò)程中的碰撞檢測(cè)方法進(jìn)行了研究。接下來(lái)對(duì)漫游和碰撞檢測(cè)在Unity3d平臺(tái)的實(shí)現(xiàn)過(guò)程進(jìn)行介紹。

參考文獻(xiàn):

[1] 洪炳镕, 蔡則蘇, 唐好選. 虛擬現(xiàn)實(shí)及其應(yīng)用[M]. 北京: 國(guó)防工業(yè)出版社, 2005:2,90-107.

[2] 羅景馨. 與三維場(chǎng)景漫游相關(guān)的部分技術(shù)研究[D]. 長(zhǎng)沙: 中南大學(xué), 2009:44-48.

[3] 郝彩虹. 虛擬漫游系統(tǒng)場(chǎng)景管理與路徑規(guī)劃的研究[D]. 大連: 大連理工大學(xué), 2010:29-31.

[4] 張明明. 基于Unity3D虛擬校園漫游的研究與實(shí)現(xiàn)[D]. 昆明: 昆明大學(xué), 2014:17-18.

猜你喜歡
碰撞檢測(cè)虛擬現(xiàn)實(shí)
全新預(yù)測(cè)碰撞檢測(cè)系統(tǒng)
基于BIM的鐵路信號(hào)室外設(shè)備布置與碰撞檢測(cè)方法
Unity3D中碰撞檢測(cè)問(wèn)題的研究
論虛擬現(xiàn)實(shí)藝術(shù)的“沉浸”
REALITY BITES
虛擬現(xiàn)實(shí)技術(shù)向科幻小說(shuō)借靈感
虛擬現(xiàn)實(shí):另一個(gè)真實(shí)世界
空間遙操作預(yù)測(cè)仿真快速圖形碰撞檢測(cè)算法
BIM技術(shù)下的某辦公樓項(xiàng)目管線碰撞檢測(cè)
雙臂鉆車(chē)鉆臂與巷道的碰撞檢測(cè)方法研究
湾仔区| 宜川县| 江永县| 忻城县| 敖汉旗| 柳河县| 大新县| 芷江| 泉州市| 重庆市| 冀州市| 沂水县| 古浪县| 长岭县| 遂平县| 丰城市| 通许县| 来宾市| 玉林市| 丰顺县| 封丘县| 乐安县| 前郭尔| 万盛区| 青田县| 乐清市| 镇宁| 英山县| 柏乡县| 常宁市| 观塘区| 宜丰县| 西和县| 岢岚县| 灌阳县| 四平市| 青神县| 高雄县| 碌曲县| 曲沃县| 交城县|