宮 晨
(陜西職業(yè)技術(shù)學(xué)院 藝術(shù)與學(xué)前教育學(xué)院,陜西 西安 710038)
?
基于體感交互技術(shù)的工藝設(shè)計(jì)虛擬展示系統(tǒng)
宮晨
(陜西職業(yè)技術(shù)學(xué)院 藝術(shù)與學(xué)前教育學(xué)院,陜西 西安 710038)
以3DMAX作為三維建模工具,運(yùn)用Kinect外設(shè)體感設(shè)備的人體識別、運(yùn)動跟蹤與定位功能,使用Unity3D引擎設(shè)計(jì)了一種工藝設(shè)計(jì)虛擬展示系統(tǒng),提出了分析系統(tǒng)框架設(shè)計(jì)、Unity3D界面設(shè)計(jì)、Kinect體感交互設(shè)計(jì)和動作識別算法的實(shí)現(xiàn)方法,進(jìn)行系統(tǒng)測試,結(jié)果表明,方法有效,該系統(tǒng)在普通硬件環(huán)境中能達(dá)到高于20 f/s的運(yùn)行性能。
體感交互;虛擬展示;動作識別
作為人機(jī)交互的重要組成部分,體感交互起源于游戲行業(yè)[1],目前廣泛應(yīng)用于電子娛樂、虛擬實(shí)驗(yàn)、服飾、公路幾何設(shè)計(jì)、醫(yī)療輔助、汽車和機(jī)器人等領(lǐng)域[2-6]。在體感交互中,借助數(shù)據(jù)手套、3D頭盔等硬件,用戶通過身體運(yùn)動和身體感受等方式完成人機(jī)交互[7]??紤]到體感交互直接與周圍的設(shè)施或環(huán)境互動,操作簡單,用戶體驗(yàn)感較佳,而且能消除人機(jī)交互當(dāng)中的硬件隔閡,增強(qiáng)虛擬展示系統(tǒng)的沉浸感[8],因此不少研究將體感交互與虛擬展示進(jìn)行結(jié)合。20世紀(jì)90年代末,Penny利用12臺攝像機(jī)環(huán)繞在一個洞穴式投影系統(tǒng)中,通過體感數(shù)據(jù)實(shí)時描繪空間中的人體動作[9]。McGinity通過紅外攝像機(jī)識別人體的剪影,檢測人體的手指等特定部位[10]。Gronbaek通過計(jì)算機(jī)視覺識別人體軀干,開發(fā)了一個具有交互性的地板式顯示設(shè)備[11]。Benko在一套穹頂式顯示設(shè)備中加入簡單的手勢交互功能[12]。這些嘗試為體感交互與虛擬展示的結(jié)合提供了有益的嘗試,然而,這些方法都缺乏一套高效的硬件技術(shù)以及高魯棒性的動作識別算法,使得這些體感交互技術(shù)缺乏實(shí)用性。鑒于此,本文將微軟的體感器Kinect應(yīng)用到虛擬展示系統(tǒng)的設(shè)計(jì)中,運(yùn)用人體動作識別算法獲取動作數(shù)據(jù),并經(jīng)由OpenNI平臺提供的數(shù)據(jù)接口實(shí)現(xiàn)人體動作數(shù)據(jù)在虛擬現(xiàn)實(shí)制作引擎Unity3D的輸入,由此完成了工藝設(shè)計(jì)虛擬展示系統(tǒng)的整體設(shè)計(jì),并在此基礎(chǔ)上給出了系統(tǒng)關(guān)鍵應(yīng)用的具體設(shè)計(jì)與實(shí)現(xiàn)。
1.1系統(tǒng)框架設(shè)計(jì)
以3DMAX為建造模型工具,采用3DMAX及與Zbrush等建造模型軟件對擬展示的工藝設(shè)計(jì)品進(jìn)行建造模型、貼圖,構(gòu)建展品的三維模型,并將其保存為fbx格式,然后利用Unity3D引擎將三維模型轉(zhuǎn)化為可識別的Unity3D格式,并將該模型上傳至3D體感交互的后臺數(shù)據(jù)庫;選用Unity3D作為虛擬展示平臺,進(jìn)行系統(tǒng)三維互動界面的設(shè)計(jì),并通過編程實(shí)現(xiàn)對系統(tǒng)模型的放大、縮小、左右移動旋轉(zhuǎn)等動作;同時,通過新生代體感交互設(shè)備Kinect for windows的深度攝像機(jī)對人體運(yùn)動數(shù)據(jù)進(jìn)行采集、分析,并運(yùn)用優(yōu)化的運(yùn)動識別算法來實(shí)現(xiàn)人體動作的智能識別,獲取控制指令,進(jìn)行相應(yīng)操作。由此所形成的工藝設(shè)計(jì)虛擬展示系統(tǒng)的整體框架,如圖1所示。
圖1 虛擬展示系統(tǒng)的整體框架設(shè)計(jì)
圖1整個系統(tǒng)框架包括用戶層、Kinect交互層和虛擬展示系統(tǒng)層等3層。與以往系統(tǒng)設(shè)計(jì)不同的是,在用戶與虛擬系統(tǒng)之間增加了一個前端外設(shè)體感器Kinect,主要用來采集人體運(yùn)動數(shù)據(jù),改變了鼠標(biāo)鍵盤交互方式。
在硬件層級,系統(tǒng)選用Microsoft Kinect作為外部體感設(shè)備。Microsoft Kinect具有成熟的硬件及高效的算法,支持多種軟件開發(fā)工具,能提升系統(tǒng)兼容性,是一種采用全新空間定位技術(shù)的3D體感攝像機(jī)。在硬件的輸出端,可依據(jù)展覽需求設(shè)置各類圖像及聲音輸出設(shè)備,為簡化系統(tǒng)操作,采用較常用的PC輸出設(shè)備來進(jìn)行系統(tǒng)可行性的測試,且其輸出接口可為其他輸出設(shè)備接入提供便利。
在軟件層級,系統(tǒng)采用Unity3D作為開發(fā)工具,以O(shè)penNI平臺為開發(fā)構(gòu)架。在OpenNI的構(gòu)架之下,通過插件NITE進(jìn)行動作識別功能開發(fā)。
1.2界面設(shè)計(jì)
應(yīng)用Unity3D中的NGUI插件進(jìn)行系統(tǒng)界面設(shè)計(jì),以實(shí)現(xiàn)系統(tǒng)展示功能,詳細(xì)設(shè)計(jì)步驟如下:
第一步,設(shè)置與實(shí)現(xiàn)按鈕。選擇菜單中NGUI→Create new Widget,彈出一個Widget Tool對話框,以進(jìn)行按鈕及標(biāo)簽的設(shè)置,完成參數(shù)設(shè)置后,點(diǎn)擊Add To按鈕,在NGUI下選擇Panel,創(chuàng)建Button。
第二步,引用外部文檔。在工藝設(shè)計(jì)展示系統(tǒng)中,點(diǎn)擊Button顯示設(shè)計(jì)理念,為此,在NGUI中使用腳本LoadFile來引用外部文檔,將其存儲在設(shè)計(jì)文件目錄。
第三步,切換展示界面。所設(shè)計(jì)的虛擬展示系統(tǒng)包含:菜單選擇界面、工藝設(shè)計(jì)理念界面、工藝設(shè)計(jì)過程界面、工藝設(shè)計(jì)成品展示界面等,界面間的切換主要應(yīng)用代碼Appliacation.LoadLevel(“###”),選擇“File”→“design Settings”將需要的場景拖入“Scenes in design”,完成界面切換。
1.3Kinect體感交互設(shè)計(jì)
Kinect體感交互設(shè)計(jì)環(huán)節(jié),主要包括深度圖像數(shù)據(jù)的獲取、人體識別,骨骼追蹤數(shù)據(jù)獲取、人體動作對應(yīng)的鍵盤按鍵的映射等4個層面,其中的兩個關(guān)鍵環(huán)節(jié)為深度圖像數(shù)據(jù)的獲取和人體識別。
Kinect可提供彩色圖像數(shù)據(jù)和深度圖像數(shù)據(jù),可構(gòu)建緩沖區(qū)和調(diào)用其他方法來獲取這兩種圖像幀,而數(shù)據(jù)流的獲取則需要調(diào)用KinectSensor對象的事件。以時間模式來獲取圖像數(shù)據(jù)流,首先調(diào)用KinectSensor的Start()函數(shù)啟動設(shè)備,進(jìn)行視頻流的接受,借助OpenDeathImage()函數(shù)來獲取深度圖像數(shù)據(jù),將其復(fù)制到short數(shù)組,并運(yùn)用獲取的數(shù)據(jù)創(chuàng)建一個BitmapSource,將其賦值給初始添加的Image空間ColorImage的Source屬性,進(jìn)而實(shí)現(xiàn)深度圖像數(shù)據(jù)在Unity展示界面的及時更新顯示。
人體識別模塊主要是將人體從深度圖像中分離出來,Kinect解析較為接近Kinect的區(qū)域,并逐點(diǎn)掃描其中深度圖像的像素,來確定人體的關(guān)節(jié)部位,其中涉及了邊緣檢測、平滑噪聲及噪聲濾出等環(huán)節(jié)。邊緣檢測運(yùn)用特定算法抽取圖像中背景與對象間的交界線。通過Kinect掃描獲取的人體圖像深度圖,呈現(xiàn)凹凸不平狀態(tài),此時采用中值濾波方法進(jìn)行平滑噪聲,避免線性濾波引發(fā)的圖像細(xì)節(jié)模糊問題,減輕過濾脈沖干擾及圖像掃描噪聲;同時,應(yīng)用泊松方程來進(jìn)行噪聲濾除,確保Kinect能夠基于最準(zhǔn)確的信息來判斷人體所處的具體位置。
1.4動作識別算法及其實(shí)現(xiàn)
采用Shotton提出的動作識別算法[13],將動作識別問題轉(zhuǎn)化為普通的形狀識別問題。對于深度圖像I當(dāng)中的像素點(diǎn)x,其特征值fθ為
(1)
式(1)中:x為像素點(diǎn)的像素,dI(x)為像素點(diǎn)的深度值,深度感應(yīng)范圍為1.2m至3.5m。當(dāng)用戶進(jìn)入圖像后,無論距離攝像機(jī)多遠(yuǎn),都可以在身體的固定某個部位設(shè)定一個坐標(biāo),而θ=(u,v)用以描述像素對應(yīng)該坐標(biāo)的偏移值u與v。將dI(x)進(jìn)行歸一化處理后乘以這兩個偏移值,進(jìn)而分別求出兩個深度值。將兩值做差后獲得特征值fθ。當(dāng)該像素是背景圖像時,dI(x)會被賦予一個極大的正常量,將人體剪影圖像從背景圖像中分離出來。
獲得人體剪影的深度圖像后,開始對人體剪影所反映出來的動作進(jìn)行識別。通過整合的人體剪影圖像數(shù)據(jù)庫,訓(xùn)練出一個基于像素的人體結(jié)構(gòu)分類器,從而將身體分成31個人體結(jié)構(gòu)標(biāo)簽,利用決策樹將圖像I中的像素點(diǎn)x進(jìn)行分類并貼上特定的標(biāo)簽。設(shè)決策森林有T顆決策樹,樹中每個葉子節(jié)點(diǎn)都包含一個特征值fθ和一個閾值τ,在樹t中,存儲了關(guān)于人體結(jié)構(gòu)標(biāo)簽C的已知分布,定義這樣一個分布用于描述像素點(diǎn),即
(2)
已知的像素深度值dI(x)用于保證權(quán)重值的深度不變性,已處理好的P(C|I,x)用于確定像素人體結(jié)構(gòu)標(biāo)簽的相關(guān)性,則有
(3)
式(3)中,wic為像素的權(quán)重值,表示像素對于標(biāo)簽C的概率。
然后,利用均值漂移算法來確定人體關(guān)節(jié)點(diǎn)。當(dāng)關(guān)節(jié)點(diǎn)的置信度達(dá)到特定閾值后,就被輸出作為算法的最后結(jié)果。
要實(shí)現(xiàn)動作識別算法,需要用到OpenNI軟件。在OpenNI中,對人體骨骼的定義是通過關(guān)節(jié)點(diǎn)來實(shí)現(xiàn),各個關(guān)節(jié)點(diǎn)都包含2個關(guān)鍵參數(shù):位置和方向,OpenNI總共定義了24個關(guān)節(jié)點(diǎn),但因系統(tǒng)應(yīng)用插件NITE進(jìn)行動作識別,且此僅支持15個關(guān)節(jié)點(diǎn)。OpenNI定義了一個負(fù)責(zé)內(nèi)部溝通的生產(chǎn)節(jié)點(diǎn)類,為OpenNI框架的相關(guān)功能提供有效支撐,同時,還定義了一些進(jìn)階功能的能力類。
在進(jìn)行動作識別之前,需要調(diào)用一個生產(chǎn)節(jié)點(diǎn)類來進(jìn)行用戶檢測,檢測成功,則調(diào)用NewUser函數(shù),進(jìn)行用戶跟蹤,并觸發(fā)姿勢檢測能力類,來判斷用戶是否做出一個特定的校準(zhǔn)姿勢,當(dāng)檢測到校準(zhǔn)姿勢時,回調(diào)函數(shù)PoseDetected會被激活,對骨骼跟蹤能力類發(fā)出骨骼信息校準(zhǔn)請求,從而通過回調(diào)函數(shù)CalibrationStart完成骨骼信息校準(zhǔn)。其核心算法流程如圖2所示。
圖2 動作識別核心算法流程圖
基于以上的算法,系統(tǒng)在Untiy3D的腳本編輯環(huán)境中編輯了一套腳本,用來檢測用戶、校準(zhǔn)及跟蹤骨骼數(shù)據(jù),并將數(shù)據(jù)實(shí)時傳遞到虛擬角色的骨骼上。該腳本注冊了NewUser、LostUser、PoseDetected、CalibrationStart、CalibrationEnd等5個用于實(shí)現(xiàn)動作識別的回調(diào)函數(shù)。腳本中的Start函數(shù)調(diào)用5個核心函數(shù),將在每次腳本調(diào)用時首先執(zhí)行,完成用戶的初始化與動作校準(zhǔn),Update函數(shù)在每渲染一幀時可判定用戶距離Kinect的位置合適與否,UpdateSkeleton函數(shù)被虛擬角色骨骼的每個關(guān)節(jié)點(diǎn)調(diào)用,以更新其中的位置與方向兩類參數(shù),由此實(shí)現(xiàn)了這一幀中整個骨骼的動作識別。
基于雙核2.3 GHz CPU、2 Gbyte內(nèi)存、512 MHz獨(dú)立顯卡的計(jì)算機(jī)硬件環(huán)境。搭建測試系統(tǒng)。結(jié)合虛擬現(xiàn)實(shí)引擎Unity3D與應(yīng)用程序開發(fā)接口API,測試系統(tǒng)實(shí)現(xiàn)了對用戶動作數(shù)據(jù)的實(shí)時捕捉,并用獲取的動作數(shù)據(jù)完成在虛擬世界中的視角控制與按鈕點(diǎn)擊等基本交互功能。
在測試中,當(dāng)用戶進(jìn)入Kinect的檢測范圍后,系統(tǒng)會提示用戶進(jìn)行姿勢校準(zhǔn),當(dāng)用戶姿勢與姿勢數(shù)據(jù)庫配對成功后,系統(tǒng)中虛擬角色的骨骼便與用戶實(shí)時同步。通過舉起右手往屏幕方向做出一個點(diǎn)擊的動作,屏幕中會出現(xiàn)一個球形控制點(diǎn)來跟蹤用戶手掌位置,虛擬場景中的攝像機(jī)方向會根據(jù)該控制點(diǎn)的位置變化而相應(yīng)的改變,實(shí)現(xiàn)對虛擬視角的控制。通過左手拍打虛擬角色旁邊的三維球形按鈕會激活場景中特定的事件,實(shí)現(xiàn)用戶與虛擬場景的交互。
系統(tǒng)的測試場景運(yùn)用了渲染特效,以便模擬虛擬展示系統(tǒng)的硬件消耗,確保實(shí)現(xiàn)體感交互。圖3為遠(yuǎn)距離模式下的測試效果實(shí)時截圖,近距離模式下的測試效果則如圖4所示。
圖3 遠(yuǎn)距離模式下測試效果
圖4 近距離模式下測試效果
測試系統(tǒng)在分辨率為 、場景特效全開的情況下進(jìn)行體感交互,顯示系統(tǒng)運(yùn)行的幀速率約為20~30 f/s,基本滿足虛擬展示系統(tǒng)要求的畫面流暢性。在人體姿勢與校準(zhǔn)姿勢達(dá)到一定的置信度后,使用回調(diào)函數(shù)CalibrationEnd完成校準(zhǔn),開始骨骼跟蹤,實(shí)現(xiàn)效果圖分別如圖5和圖6所示。
圖5 人體姿勢骨骼跟蹤圖
圖6 標(biāo)準(zhǔn)姿勢骨骼跟蹤圖
設(shè)計(jì)了一種新型的工藝設(shè)計(jì)虛擬展示系統(tǒng),通過Kinect 體感交互技術(shù)與Unity3D現(xiàn)實(shí)虛擬技術(shù)的融合應(yīng)用,并通過高真實(shí)度的虛擬場景測試了體感交互技術(shù)在虛擬展示系統(tǒng)中實(shí)現(xiàn)。
[1]Saffer D.Designing for interaction creating innovative application and devices[M].2nd Edition.Berkeley:New Riders Press,2009:1-10.
[2]劉立強(qiáng). 基于體感交互的裸眼3D互動展示設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京工業(yè)大學(xué),2014:4-8.
[3]廖宏建,楊玉寶.體感交互設(shè)計(jì)及其在三維虛擬實(shí)驗(yàn)中的應(yīng)用[J/OL].遠(yuǎn)程教育雜志,2013(1):54-59[2016-06-01].http://www.cnki.net/KCMS/detail/detail.aspx?QueryID= 0&CurRec=1&recid=&filename=YCJY201301007&dbname=CJFD2013&dbcode=CJFQ.DOI :10.15881/ j.cnki.cn33-1304/g4.2013.01.005.
[4]張必蘭,陳艷蕾,王磊,等. 基于體感交互技術(shù)的太陽系三維模型演示系統(tǒng)的研究[J/OL].計(jì)算機(jī)光盤軟件與應(yīng)用,2014(7):25-27[2016-06-01].http://www.cnki.net/KCMS/detail/ detail. aspx?QueryID=0 &CurRec=1&recid=&filename=GPRJ201407020 &dbname=CJFD2014 &dbcode=CJFQ.
[5]符鋅砂,龍立敦,李海峰,等.基于體感交互的公路真三維設(shè)計(jì)與系統(tǒng)架構(gòu)[J/OL].華南理工大學(xué)學(xué)報(bào)(自然科學(xué)版),2014,42(8):91-96[2016-06-01]. http://www.cnki.net/KCMS/detail/ detail. aspx? QueryID=0&CurRec=1&recid=&filename =HNLG201408016 &dbname=CJFDLAST2015 &dbcode=CJFQ. DOI :10.3969/j.issn.1000-565X.2014. 08. 015.
[6]姜延,馬文軒,陳劍華,等.基于Kinect體感交互技術(shù)的3D服飾文化展示系統(tǒng)[J/OL].紡織導(dǎo)報(bào),2015(3):74-76[2016-06-01]. http://www.cnki.net/KCMS/detail /detail.aspx?QueryID=4 &CurRec=1&recid=&filename=FZDB201503020&dbname=CJFDLAST2015&dbcode=CJFQ.DOI :10.16481/j.cnki.ctl.2015.03.018.[7]廖宏建,曲哲.基于Kinect體感交互技術(shù)的虛擬裝配實(shí)驗(yàn)系統(tǒng)開發(fā)[J/OL].實(shí)驗(yàn)室研究與探索,2013,30(7):98-102[2016-06-01]. http://www.cnki.net/KCMS/detail/ detail.aspx? QueryID=4&CurRec=1&recid=&filename=SYJL201307027&dbname=CJFD2013&dbcode=CJFQ. DOI:10.3969/ j.issn.1002-4956.2013.07.
[8]翟言,黃心淵,趙國英.基于體感交互技術(shù)的虛擬展示系統(tǒng)[J/OL].電視技術(shù),2013, 37(21): 16-20[2016-06-01]. http://www.cnki.net/KCMS/detail/detail.aspx?QueryID=28 &CurRec=1&recid=&filename=DSSS201321011&dbname=CJFDHIS2&dbcode=CJFQ.DOI:10.16280/j.videoe.2013.21.016.
[9]PENNY S,SMITH J,BERNHARDT A. Traces: wireless full body tracking in the cave[C]//Proc. ICAT, 1999. [S.l.]:ADM Press,1999:259-268.
[10]MCGINITY M,SHAW J,KUCHELMEISTER V,et al. AVIE: a versatile multi-user stereo 360.interactive VR theatre[C]//Proc.the 2007 Workshop on Emerging Displays Technologies: Images and Beyond: The Future of Displays and Interacton, 2007. New York:ACM Press,2007:5-9.
[11]GRONBAEK K,IVERSEN O S,KORTBEK K J,et al. IGame Floor: A platform for co-located collaborative games[C]//Proc.the International Conference on Advances in Computer Entertainment Technology.[S.l.]:IEEE Press,2007:64-71.
[12]BENKO H,WILSON A D. Multi-point interactions with immersive omnidirectional visualizations in a dome[C]//Proc. ACM International Conference on Interactive Tabletops and Surfaces.[S.l.]:IEEE Press,2010:19-28.
[13]SHOTTON J,F(xiàn)ITZGIBBON A,COOK M,et al. Real-time human pose recognition in parts from single depth images[C]//Proc.Computer Vision and Pattern Recognition (CVPR).[S.l.]:IEEE Press,2011:1297-1304.
[責(zé)任編輯:汪湘]
Process design virtual exhibition system based on somatosensory interaction technology
GONG Chen
(School of Arts and Preschool, Shaanxi Vocational and Technical College, Xi’an 710038,China)
3DMAX is used as a kind of three-dimensional modeling tool. Kinect peripheral somatosensory equipment is also used for its function of human identification, motion tracking and positioning. A kind of process design virtual exhibition system is designed by unity3D engine. The implementation method of system framework design, unity3D interface design, Kinect somatosensory interaction design and action recognition algorithm are discussed and analyzed. A system test is then carried out. Test results show that the proposed method is valid. The system can achieve higher than 20 f/s operating performance in the general hardware environment.
somatosensory interaction, virtual exhibition, action recognition
10.13682/j.issn.2095-6533.2016.05.015
2016-06-10
宮晨(1981-),男,碩士,助教,從事藝術(shù)設(shè)計(jì)研究。E-mail: 358241088@qq.com
G434
A
2095-6533(2016)05-0076-05