祁長(zhǎng)興+劉峻杭
摘 要:虛擬現(xiàn)實(shí)技術(shù)在各個(gè)領(lǐng)域中的應(yīng)用十分的廣泛。文中首先闡述了系統(tǒng)設(shè)計(jì)的流程,根據(jù)室內(nèi)設(shè)計(jì)的特點(diǎn),并結(jié)合虛擬現(xiàn)實(shí)將室內(nèi)設(shè)計(jì)作品以虛擬現(xiàn)實(shí)的形式進(jìn)行展現(xiàn)。室內(nèi)設(shè)計(jì)人員通過(guò)軟件進(jìn)行具體的設(shè)計(jì),體驗(yàn)者可以利用虛擬現(xiàn)實(shí)來(lái)進(jìn)行沉浸式的體驗(yàn)。相比較于傳統(tǒng)的室內(nèi)設(shè)計(jì),這樣可以更直觀的、更有效的對(duì)設(shè)計(jì)者的作品進(jìn)行檢驗(yàn),同時(shí)也能大大的減少成本和不必要的風(fēng)險(xiǎn)。
關(guān)鍵詞:室內(nèi)設(shè)計(jì);虛擬現(xiàn)實(shí);沉浸;碰撞檢測(cè)
中圖分類(lèi)號(hào):TP391.5 文獻(xiàn)標(biāo)識(shí)碼:A
Abstract:Virtual reality technology is widely used in various fields.This paper firstly describes the system design process.According to the characteristics of interior design,works are presented in the form of virtual reality.Interior designers perform specific design in software programs,and users can achieve immersive experience through virtual reality.Compared with the traditional interior design,it enables designers to conduct more intuitive and more effective inspection on their works,which greatly reduces costs and unnecessary risks.
Keywords:interior design;virtual reality;immersion;collision detection
1 引言(Introduction)
虛擬現(xiàn)實(shí)技術(shù)(VR)是近些年的最為熱門(mén)話(huà)題,如今在各個(gè)領(lǐng)域都有實(shí)際的應(yīng)用[1]。它是仿真技術(shù)的一個(gè)重要方向,是仿真技術(shù)與計(jì)算機(jī)圖形學(xué)人機(jī)接口技術(shù)、多媒體技術(shù)、傳感技術(shù)以及網(wǎng)絡(luò)技術(shù)等多種技術(shù)的集合,是一門(mén)富有挑戰(zhàn)性的交叉技術(shù)前沿學(xué)科和研究領(lǐng)域,主要包括模擬環(huán)境、感知、自然技能和傳感設(shè)備等方面。
沉浸式虛擬現(xiàn)實(shí)(Immersion VR)利用頭盔顯示器把用戶(hù)的視覺(jué)、聽(tīng)覺(jué)封閉起來(lái),產(chǎn)生虛擬視覺(jué),同時(shí),它利用手套把用戶(hù)的手部的觸覺(jué)封閉起來(lái),產(chǎn)生虛擬觸覺(jué)。系統(tǒng)采用控制器讓參與者對(duì)系統(tǒng)主機(jī)下達(dá)操作命令,與此同時(shí),頭、手均有相應(yīng)的頭部跟蹤器、手部跟蹤器的追蹤,使系統(tǒng)達(dá)到盡可能的實(shí)時(shí)性[2]。臨境系統(tǒng)是真實(shí)環(huán)境替代的理想模型,它具有最新交互手段的虛擬環(huán)境。常見(jiàn)的沉浸式系統(tǒng)有基于頭盔式顯示器的系統(tǒng)、投影式虛擬現(xiàn)實(shí)系統(tǒng),本文基于頭盔式顯示器的系統(tǒng)設(shè)計(jì)。
2 系統(tǒng)設(shè)計(jì)流程(System design flow)
系統(tǒng)整體分為兩個(gè)部分,用戶(hù)體驗(yàn)與設(shè)計(jì)場(chǎng)景。
2.1 設(shè)計(jì)場(chǎng)景
設(shè)計(jì)的部分一共有四個(gè)模塊,地面的大小、墻體的設(shè)計(jì)、添加材質(zhì)和添加具體的家具。
地面的大小直接關(guān)系到了體驗(yàn)時(shí)的活動(dòng)范圍,而墻體的設(shè)計(jì)則是要根據(jù)具體的數(shù)據(jù)進(jìn)行設(shè)計(jì),動(dòng)態(tài)地添加墻體的預(yù)制體,并以列表的形式保存在場(chǎng)景中,以便保存成外部文件,添加的材質(zhì)也是如此,并且要進(jìn)行邊緣檢測(cè)。添加家具的功能包括了添加燈具等細(xì)節(jié)部分,將燈的開(kāi)關(guān)與燈具的光源進(jìn)行關(guān)聯(lián),用戶(hù)可以在體驗(yàn)部分進(jìn)行更加真實(shí)的體驗(yàn)。
2.2 用戶(hù)體驗(yàn)
可以使用兩種方法進(jìn)行體驗(yàn),VR和非VR兩種,在非VR的體驗(yàn)?zāi)J街腥缤螒蛞粯?,通過(guò)鼠標(biāo)和鍵盤(pán)在這個(gè)場(chǎng)景中進(jìn)行交互,VR的體驗(yàn)?zāi)J絼t是使用設(shè)備進(jìn)行移動(dòng)和交互[3]。
3 虛擬現(xiàn)實(shí)的功能交互設(shè)計(jì)(Functional interaction
design of virtual reality)
利用官方提供的插件給軟件添加VR的功能,在場(chǎng)景中添加一個(gè)模擬的人形對(duì)象,將VR的攝像頭移動(dòng)到頭部,并通代碼將對(duì)象的位置與VR頭盔的位置將其關(guān)聯(lián),實(shí)現(xiàn)移動(dòng)功能,如果使用者沒(méi)有足夠大的空間進(jìn)行移動(dòng)則需要利用控制器進(jìn)行移動(dòng),利用手柄控制器上的觸摸鍵來(lái)實(shí)現(xiàn)前后左右的移動(dòng)。同時(shí),利用手柄控制器上的按鍵來(lái)模擬人的手,在場(chǎng)景中實(shí)現(xiàn)抓和按等功能[4-6]。
虛擬現(xiàn)實(shí)設(shè)備只是工具,實(shí)際的功能需要算法來(lái)實(shí)現(xiàn),虛擬現(xiàn)實(shí)中使用者與虛擬場(chǎng)景的交互主要使用碰撞檢測(cè)技術(shù)來(lái)實(shí)現(xiàn)。
4 碰撞檢測(cè)(Collision detection )
碰撞檢測(cè)在一個(gè)3D的場(chǎng)景中使用率特別高,在許多的功能中都需要用到碰撞檢測(cè),如場(chǎng)景的搭建、交互。虛擬現(xiàn)實(shí)中的場(chǎng)景交互中一定要用到碰撞檢測(cè),例如移動(dòng)路線中遇到障礙物與場(chǎng)景中的對(duì)象進(jìn)行交互,這些功能都需要碰撞檢測(cè)。
4.1 “材質(zhì)”邊緣檢測(cè)
材質(zhì)的邊緣檢測(cè)主要讓同一種材質(zhì)之間不會(huì)有過(guò)大的縫隙,通過(guò)遍歷每一個(gè)材質(zhì)對(duì)象,檢測(cè)它們之間的距離關(guān)系。例如參照對(duì)象Oa和對(duì)象Ob,需要比較兩者之間的坐標(biāo)關(guān)系,這里我們只需要考慮x、y兩個(gè)軸,比較兩者間同一軸的距離并與規(guī)定的距離Lx和Ly比較。
|Oax-Obx|-Lx
|Oay-Oby|-Ly
比較兩個(gè)差值的絕對(duì)值,取差值最小的一軸,再通過(guò)比較來(lái)判斷兩個(gè)對(duì)象的位置關(guān)系,如圖1所示。
Oax-Obx>0,Ob在Oa的左側(cè)
Oax-Obx<0,Ob在Oa的右側(cè)
Oay-Oby>0,Ob在Oa的后側(cè)
Oay-Oby<0,Ob在Oa的前側(cè)
得出位置關(guān)系后通過(guò)改變坐標(biāo)位置使兩個(gè)對(duì)象之間達(dá)到規(guī)定的距離。
左側(cè),Obx=Oax-Lx
右側(cè),Obx=Oax+Lx
后側(cè),Oby=Oay-Ly
前側(cè),Oby=Oay+Ly
4.2 碰撞檢測(cè)
因?yàn)槭覂?nèi)設(shè)計(jì)的特點(diǎn),幾乎所有的物體都是靜態(tài)的,所以都可以視為是場(chǎng)景的一部分AABB間的動(dòng)態(tài)檢測(cè)稍微復(fù)雜一些??紤]一個(gè)由極值點(diǎn)smin和smax定義的靜止AAB和一個(gè)由mmin和mmax定義的運(yùn)動(dòng)AABB。運(yùn)動(dòng)AABB的運(yùn)動(dòng)由向量d給出,t從0變化到1。
將三維的問(wèn)題轉(zhuǎn)換成為獨(dú)立的一維的問(wèn)題,再把它們組合在一起就得到最終答案。
黑色矩形代表沿?cái)?shù)軸滑動(dòng)的運(yùn)動(dòng)AABB。當(dāng)t=0時(shí),運(yùn)動(dòng)AABB完全位于靜止AABB的左側(cè),當(dāng)t=1,是運(yùn)動(dòng)AABB完全無(wú)語(yǔ)靜止AABB的右邊。tenter是兩個(gè)AABB開(kāi)始相交的時(shí)刻,tleave是兩個(gè)AABB脫離的接觸時(shí)刻。對(duì)于正在討論的維,設(shè)mmin(t)和mmax(t)代表運(yùn)動(dòng)AABB在時(shí)刻t的最小值和最大值。
mmin(0)和mmax(0)是運(yùn)動(dòng)AABB的起始位置,d是位移向量在d在這個(gè)維上的分量。類(lèi)似地用smin和smax來(lái)定義靜止AABB。tenter就是當(dāng)mmax(t)等于smin時(shí)的t值。
求出tleave和tenter。在這段時(shí)間內(nèi)兩個(gè)AABB會(huì)在某一維上相交,而所有維上的時(shí)間區(qū)間的交集就是兩個(gè)邊界框相交的時(shí)間段。如果區(qū)間為空,那么兩個(gè)AABB永遠(yuǎn)不會(huì)相交;如果區(qū)間在[0,1]之外,那么在所討論的時(shí)間段內(nèi)他們不相交。實(shí)際上這個(gè)時(shí)間區(qū)間給出的信息比我們想要的還多,因?yàn)槲覀冎恍枰浪鼈冮_(kāi)始相交的時(shí)間點(diǎn),而不需要知道結(jié)束相交的點(diǎn)。
4.3 射線碰撞檢測(cè)
這是一種最為常用的碰撞檢測(cè),主要用于選擇已實(shí)例化的對(duì)象。在這個(gè)系統(tǒng)中起到了至關(guān)重要的作用,例如對(duì)墻體、家具的選擇。
主要通過(guò)鼠標(biāo)點(diǎn)擊屏幕,系統(tǒng)已屏幕上的點(diǎn)發(fā)出一條射線,選中這條射線所碰撞到的第一個(gè)物體,實(shí)現(xiàn)了點(diǎn)擊屏幕選擇對(duì)象的功能。
具體實(shí)現(xiàn)方法為,先創(chuàng)建射線對(duì)象,并實(shí)時(shí)監(jiān)測(cè)鼠標(biāo)是否發(fā)生點(diǎn)擊動(dòng)作,鼠標(biāo)發(fā)生點(diǎn)擊動(dòng)作是對(duì)射線對(duì)象賦值,射線的起點(diǎn)為鼠標(biāo)點(diǎn)擊的位置,并以屏幕投影的角度創(chuàng)建射線,如圖2所示,并檢測(cè)射線是否被物體所遮擋(碰撞檢測(cè)),如圖3所示,如果發(fā)生,就返回這個(gè)遮擋的物體,也就是我們要選擇的物體,并進(jìn)行想要的操作。
5 結(jié)論(Conclusion)
這種設(shè)計(jì)可以直觀的體驗(yàn)室內(nèi)設(shè)計(jì)作品,讓體驗(yàn)者可以直接在“設(shè)計(jì)并改裝后”的房屋中進(jìn)行實(shí)際的體驗(yàn),相較于用平面展示的傳統(tǒng)室內(nèi)設(shè)計(jì)提高了用戶(hù)的滿(mǎn)意度,減少了返工的幾率,并減少了不必要的資源浪費(fèi)。并且在其他的領(lǐng)域中也可以應(yīng)用,如大型商場(chǎng)內(nèi)的設(shè)計(jì)、房地產(chǎn)開(kāi)發(fā)、園區(qū)環(huán)境設(shè)計(jì)。
參考文獻(xiàn)(References)
[1] R Leeb,et al.Thinking Penguin:Multimodal Brain Computer Interface Control of a VR Game[J].IEEE Transactions on Computational Intelligence & Ai in Games,2013,5(2):117-128.
[2] AV Dam,et al.Immersive VR for Scientific Visualization:A Progress Report[J].Computer Graphics & Applications IEEE,2000,20(6):26-52.
[3] AJ Yeh,RA Nason.VRMath:A 3D Microworld for Learning 3D Geometry[J].Virtual Reality,2004(1):21-26.
[4] Fletcher Dunn,Ian Parberrry.3D數(shù)學(xué)基礎(chǔ):圖形與游戲開(kāi)發(fā)[M].北京:清華大學(xué)出版社,2016.
[5] 何偉.Unity虛擬現(xiàn)實(shí)開(kāi)發(fā)盛典[M].北京:人民郵電出版社,2016.
[6] 郭浩瑜.Unity 3D ShaderLab開(kāi)發(fā)實(shí)戰(zhàn)詳解[M].北京:中國(guó)鐵道出版社,2016.
作者簡(jiǎn)介:
祁長(zhǎng)興(1973-),男,碩士,副教授.研究領(lǐng)域:軟件工程與應(yīng)用,神經(jīng)網(wǎng)絡(luò)與智能控制.
劉峻杭(1994-),男,本科生.研究領(lǐng)域:軟件工程與應(yīng)用.