王偉志 馮文琪 王聰
摘要:旨在設計實現(xiàn)一種脫離鼠標、鍵盤等傳統(tǒng)交互設備,實現(xiàn)對場景中家具和物品抓取和挪放的虛擬現(xiàn)實樣板間。采用Oculus Rift虛擬現(xiàn)實眼鏡獲取樣板間場景內(nèi)容,使用戶置身于虛擬環(huán)境;通過游戲手柄控制場景中人物的移動實現(xiàn)樣板間場景內(nèi)的無障礙漫游;利用Kinect體感設備的手勢識別,實現(xiàn)對樣板間中家居陳列的抓取、移動、放置。系統(tǒng)測試表明,達到了所設計的各項功能。
關(guān)鍵詞:虛擬現(xiàn)實;樣板間;多通道交互;Kinect;Oculus Rift
中圖分類號:TP391 文獻標識碼:A 文章編號:1007-9416(2018)07-0156-03
虛擬現(xiàn)實技術(shù)(Virtual Reality,簡稱VR)始于20世紀60年代,在計算機圖形學、人機接口技術(shù)、計算機仿真技術(shù)、多媒體技術(shù)以及傳感器技術(shù)的基礎上發(fā)展起來的交叉科學[1]。自1991年起,德國開始將虛擬現(xiàn)實技術(shù)應用于建筑設計中;在20世紀末,歐洲與北美的許多設計和房地產(chǎn)公司也開始廣泛使用虛擬現(xiàn)實技術(shù)進行建筑設計和房地產(chǎn)銷售[2]。在房地產(chǎn)銷售領域,虛擬現(xiàn)實技術(shù)在樣板間中的應用正在起著舉足輕重的作用。
VR樣板間是利用虛擬現(xiàn)實技術(shù),根據(jù)真實樣板房的比例及設計制作而成的場景,地產(chǎn)營銷時無需建設樣板房,購房者只需戴上虛擬現(xiàn)實頭顯,就能體驗到幾年后才能落成的建筑主體內(nèi)外和景觀全景。如國內(nèi)的“無憂我房”平臺的VR樣板間產(chǎn)品[3]、“指揮家VR”、美屋365等[4]。體感交互最初應用在游戲行業(yè),指用戶通過肢體運動和身體感受的方式完成人與計算機的交互[5]。Kinect是微軟開發(fā)的一款無需任何手持設備即可完成三維人機交互的體感輸入設備,國內(nèi)外在這方面的研究取得了一些進展,如機器人的目標的跟蹤[6]、導航與定位[7]、障礙物的檢測[8]等;Kinect捕捉人的動作,獲取到人物的深度圖像,通過深度圖像確定骨骼節(jié)點位置進行跟蹤[9],提取手部的幾個骨骼節(jié)點跟蹤并識別手部狀態(tài)[10]。
目前出現(xiàn)的VR樣板間在3維建模的基礎上加入了VR眼鏡,用戶配戴VR眼鏡后,借助鼠標鍵盤完成場景漫游。本文研究的虛擬現(xiàn)實樣板間的創(chuàng)新點在于,在傳統(tǒng)樣VR樣板間的基礎上加入多通道的交互,脫離了鼠標、鍵盤等傳統(tǒng)的交互設備。使用Oculus Rift頭顯,借助手柄實現(xiàn)在虛擬樣板間的漫游,重點借助Kinect體感輸入設備,通過手勢識別實現(xiàn)對樣板間中家居的抓取、移動和放置等交互功能。
1 多通道交互VR樣板間的設計實現(xiàn)
1.1 樣板間模型的建立
本項目所用樣板間的三維模型是根據(jù)設計者的構(gòu)想,在3D Max軟件中分部分一一建立并組合,完成整個樣板間的制作。樣板間分為兩層,分別為一樓的客廳、餐廳、廚房和浴室;二樓是臥室?;?D Max建立的模型線框圖如圖1所示。
1.2 Unity 3D場景設計
從3D Max中將FBX格式的模型導入Unity 3D中,其中部分物體會出現(xiàn)材質(zhì)丟失的問題,需重新進行貼圖。另外還應處理一些特殊的材質(zhì),設計合適的燈光。
將場景導入Unity 3D中,進行特殊材質(zhì)的腳本編寫,完善場景制作。場景中所需的鏡面效果、反射效果、自發(fā)光效果等通過shader腳本實現(xiàn)。
本文燈光設計主要采用Lightmapping技術(shù),它是一種增強靜態(tài)場景光照效果的技術(shù),可通過較少的性能消耗使靜態(tài)場景更真實豐富且具有立體感。室內(nèi)燈光主要使用了point light、spot light、directional light三種,通過配置并烘焙燈光貼圖,可節(jié)省場景運行的計算量。
由于Lightmapping只能作用到靜態(tài)對象上,故針對動態(tài)對象本文采用Light Probes技術(shù)。其原理是通過在場景空間中放置采樣點來收集周圍光照信息,然后對臨近動態(tài)對象的采樣點進行插值運算,并將結(jié)果作用于動態(tài)對象上。插值運算不會消耗太多性能,從而可實現(xiàn)動態(tài)與靜態(tài)游戲?qū)ο蟮膶崟r融合效果。
1.3 多通道交互設計
場景動畫及觸發(fā)器設計是以實現(xiàn)門窗等的自動開關(guān)為目的,即相機視角進入某一范圍內(nèi),門會自動打開,離開時自動關(guān)閉。通過Animation選項設置動畫并為其添加觸發(fā)器,使用腳本控制門的觸發(fā)動作。
Unity 3D默認支持Oculus Rift DK2設備,本設計使用版本為Unity 3D 5.3.1f,該模塊交互僅需進行相關(guān)設置即可實現(xiàn)樣板間場景在Oculus眼鏡中的顯示與控制。其流程是通過工具欄中選擇Edit的項目設置選項,在該選項中找到Player進行設置,勾選Virtual Reality Supported開啟VR模式。
Kinect交互是本設計的重難點,也是優(yōu)于當前虛擬樣板間的設計模塊。Kinect最多可檢測到6個人體骨骼,獲得人體的25個骨骼節(jié)點,每個關(guān)節(jié)點都包含有3D位置和方向信息,可識別手部的跟蹤狀態(tài)分為三種,手部完全張開手勢、手部的半張開手勢和握拳手勢。
基于手勢識別實現(xiàn)物體的抓取和移動的設計中,首先獲取到人物的深度圖像,通過深度圖像確定骨骼節(jié)點位置進行跟蹤,然后是提取手部的幾個骨骼節(jié)點跟蹤并識別手部狀態(tài):當手部張開時,控制鼠標的位置移動;移動到目標物體后,手部握拳控制選中目標物體;保持握拳,移動目標物體到所需位置;再將握拳張開,放置目標物體,即完成一次交互任務。在Unity 3D的視角相機設計三部分腳本:Kinect負責抓放網(wǎng)格的腳本、界面交互腳本和Kinect底層管理的相關(guān)腳本。
Kinect抓取腳本中包含添加目標物體、抓取移動速度、是否添加重力效果等多項參數(shù)。首先開始對人體骨骼跟蹤,進行初始化。當追蹤到手部時,區(qū)分左手和右手,設置旗標并獲得手部骨骼節(jié)點在獲取深度圖像的位置,來作為鼠標在屏幕中的位置,其代碼如下:
當屏幕中手部位置進入目標物體區(qū)域,改變?yōu)槲杖謩葸M行抓取動作,使得抓取物體其標置為真;獲取屏幕分辨率的具體三維位置信息,拖動目標物體移動;同時判斷每幀掃描目標物體是否被松開,當目標物體被松開時,再判斷是否使用了重力效果,放置目標物體,Kinect手勢抓取操作部分代碼如下:
腳本是Kinect界面交互的關(guān)鍵部分,該部分內(nèi)容包括對交互的具體操作,獲取左右手狀態(tài),檢查是否處于控制鼠標狀態(tài),以及手部控制界面鼠標位置的具體算法等核心內(nèi)容。同時,為了檢測的流暢性,該部分內(nèi)容添加了平滑代碼,避免界面中鼠標位置發(fā)生嚴重漂移。
Kinect底層管理代碼負責Kinect的一系列操作,包括開啟傳感器、讀取數(shù)據(jù)源、獲得幀數(shù)據(jù)等操作。可以獲取彩色圖像、深度圖像、人體骨骼節(jié)點等信息,我們根據(jù)其中的兩只手部的骨骼節(jié)點3D位置和方向信息,對手勢進行判斷,進而獲取到不同的手勢識別所控制的不同動作,對場景中物體進行操作。
2 系統(tǒng)測試及評價
本文的設計為復式樣板間,分為上下兩層,下層包括客廳、吧臺、開放式廚房、餐桌、洗手間、浴室等;上層為臥室、畫廊。上下層之間主要是結(jié)合手柄的無障礙漫游進行的設計,通過手柄的控制,第一人稱視角可以輕松實現(xiàn)在樓梯等非平常的地形中任意漫游,其運行結(jié)果的兩個截圖如圖2所示。
Kinect的交互操作,主要實現(xiàn)了用戶在虛擬場景中與虛擬物體的交互,任意挪動家居的擺放位置,按個人喜好調(diào)整家裝形式,后續(xù)會加入墻紙、地板的個性化搭配、家裝計算器等多項人性化功能。利用Kinect交互操作的結(jié)果截圖如圖3所示。
通過測試,實現(xiàn)了平滑漫游、全方位瀏覽、對物品進行交互操作等,完成了多通道交互的虛擬樣板間的功能。
3 結(jié)語
采用手柄控制,實現(xiàn)了第一人稱視角的任意漫游,減少了鍵盤鼠標的束縛。Oculus Rift眼鏡使得移動和控制更靈活,沉浸感更強。采用Kinect體感設備,實現(xiàn)對樣板間中家具陳列的抓取、移動和放置,按照用戶的意愿完成與虛擬場景中物體的交互,突破了傳統(tǒng)虛擬樣板間單一的場景漫游,在今后的虛擬樣板間的發(fā)展中,具有較大的意義。
參考文獻
[1]劉家懌.VR技術(shù)發(fā)展現(xiàn)狀與未來趨勢[J].中國新通信,2016,18(10):81.
[2]陳迎.虛擬現(xiàn)實技術(shù)(VR)——房地產(chǎn)營銷新手法[J].城市開發(fā),2007(16):74-75.
[3]黃文靜,馬力.基于Kinect手勢識別的研究與應用[J].電子設計工程,2017,25(24):166-169.
[4]鄧瑞,周玲玲,應忍冬.基于Kinect深度信息的手勢提取與識別研究[J].計算機應用研究,2013,30(04):1263-1265+1274.
[5]Dan S. Designing for Interaction: Creating Innovative Applications and Devices[M]. New Riders Publishing,2009.
[6]鄭斌玨.基于Kinect深度信息的手勢識別[D].杭州電子科技大學,2014.
[7]Ganganath N, Leung H. Mobile robot localization using odometry and kinect sensor[C]// IEEE International Conference on Emerging Signal Processing Applications. IEEE, 2012:91-94.
[8]陸震.冗余自由度機器人原理及應用[M].北京:機械工業(yè)出版社,2006.
[9]張毅,張爍,羅元,徐曉東.基于Kinect深度圖像信息的手勢軌跡識別及應用[J].計算機應用研究,2012,29(09):3547-3550.
[10]劉陽.基于Kinect的手勢識別技術(shù)研究[D].重慶:重慶大學,2014.