祁長興+劉峻杭



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