牟云環(huán)
(陜西國(guó)防工業(yè)職業(yè)技術(shù)學(xué)院陜西西安710300)
近年來(lái),針對(duì)傳統(tǒng)繪畫(huà)技藝存在操作過(guò)程復(fù)雜、設(shè)備繁多和無(wú)法撤銷(xiāo)的問(wèn)題,國(guó)內(nèi)外學(xué)者研究了如何將這些繪畫(huà)技藝數(shù)字化的方法[1-3]。
沙畫(huà)創(chuàng)作作為一種新的藝術(shù)創(chuàng)作方式,各種背景音樂(lè)與沙子動(dòng)畫(huà)的結(jié)合給觀眾帶來(lái)了全新的視聽(tīng)感受[3-6]。然而,沙畫(huà)演示過(guò)程需要演出者攜帶沙畫(huà)方桌、細(xì)沙和投影設(shè)備。且對(duì)現(xiàn)場(chǎng)光線和環(huán)境有較高的要求,給沙畫(huà)演出帶來(lái)了不便[7-9]。因此,本文使用虛擬現(xiàn)實(shí)技術(shù)模擬了沙畫(huà)展示的過(guò)程,不僅能方便沙畫(huà)的表演,且還能產(chǎn)生逼真的視覺(jué)效果。虛擬現(xiàn)實(shí)即使用計(jì)算機(jī)技術(shù)模擬真實(shí)世界的各種場(chǎng)景,使人在該種虛幻場(chǎng)景中產(chǎn)生觸覺(jué)、視覺(jué)和聽(tīng)覺(jué)等身臨其境的感受。
文中使用Leap Motion設(shè)備[10]、3Ds Max和Unity 3D等軟件,設(shè)計(jì)與實(shí)現(xiàn)了基于手勢(shì)識(shí)別的虛擬沙畫(huà)展示系統(tǒng)。首先,使用Leap Motion設(shè)備獲取的手勢(shì)及其運(yùn)動(dòng)信息[11],并提取基于角域劃分的特征向量[12-14],再使用該特征向量進(jìn)行手勢(shì)識(shí)別[15-16]與跟蹤;然后使用3Ds Max技術(shù)建立虛擬手模型,并使用粒子運(yùn)動(dòng)系統(tǒng)模擬落沙效果。測(cè)試結(jié)果表明,該系統(tǒng)能正確的識(shí)別出各種手勢(shì),并能滿足基本的沙畫(huà)繪制過(guò)程,得到了較為滿意的結(jié)果。
Leap Motion是一款由兩個(gè)攝像頭和3個(gè)紅外LED組成的、支持多種操作系統(tǒng)的手勢(shì)控制電腦體感控制設(shè)備。其使用兩個(gè)攝像頭的視覺(jué)差和三角測(cè)量法來(lái)檢測(cè)手、手指的3D坐標(biāo)信息,且其精度能達(dá)到0.01 mm。文中使用Leap Motion采集手指和手勢(shì)信息,并使用TBD技術(shù)跟蹤實(shí)現(xiàn)手指骨骼跟蹤,整體流程如圖1所示。

圖1 手勢(shì)識(shí)別與跟蹤流程
使用Leap Motion Controller提供的API接口,可以獲取Finger、Hand和Tool等數(shù)據(jù)。當(dāng)采集到手勢(shì)數(shù)據(jù)后,使用Leap Motion Controller對(duì)象的Listen子類觸發(fā)onFrame()函數(shù)[17],即可獲取幀數(shù)據(jù),并傳遞給手勢(shì)識(shí)別模塊進(jìn)行識(shí)別。
Leap Motion檢測(cè)到人手后,會(huì)給其設(shè)置一個(gè)身份ID,故采集到的數(shù)據(jù)不僅包括手勢(shì)坐標(biāo)和運(yùn)動(dòng)數(shù)據(jù),且還包括人手ID。當(dāng)該人手離開(kāi)Leap Motion的視野范圍時(shí),系統(tǒng)會(huì)立即注銷(xiāo)該ID。文中采集的手勢(shì)信息,如圖2所示。

圖2 Leap Motion采集的數(shù)據(jù)
使用Leap Motion設(shè)備可以識(shí)別出5只手指,但當(dāng)手指出現(xiàn)重疊或緊挨時(shí),容易丟失手指信息;再者,識(shí)別結(jié)果也容易受袖子邊緣和手鐲等物件影響。導(dǎo)致設(shè)備在不同的執(zhí)行狀態(tài)下,對(duì)相同手勢(shì)的識(shí)別結(jié)果可能并不相同。這將嚴(yán)重影響虛擬沙畫(huà)繪制的精度,故本文使用了一種基于角域劃分的特征提取方法。
該特征提取方法先根據(jù)手掌方向向量和指尖方向?qū)⑹终扑诘钠矫鎰澐譃?個(gè)角域,每個(gè)角域恰好分配一支手指。針對(duì)實(shí)際情況中某些角域可能含有多只手指,而某些角域不含有手指的問(wèn)題。該方法將兩個(gè)在同一個(gè)角域的手指中的一個(gè)分配給距離該角域最近的空角域內(nèi)。使用該方法提取的特征向量,如表1所示。

表1 特征向量提取
Leap Motion設(shè)備自帶了揮手、花圈和點(diǎn)擊等手勢(shì),但這幾種手勢(shì)無(wú)法實(shí)現(xiàn)沙畫(huà)演示的目的。因此,本文重新設(shè)計(jì)了如圖3所示的幾種沙畫(huà)表演中常用的手勢(shì)。從左到右依次為:撒、劃、抹、擦和點(diǎn)。使用Leap MotionVisualizer可分別得到,如圖4所示的手勢(shì)效果。
文中使用tracking-by-detection技術(shù)實(shí)現(xiàn)手指跟蹤,該方法主要用于跟蹤手指尖端的3D坐標(biāo)信息,具有較高的精度與靈敏度。
假設(shè)傳感器的成像平面為 Δx×Δy,并用ζt表示t時(shí)刻是否存在目標(biāo),ζt=1即存在人手;否則,不存在人手,前t幀獲取的數(shù)據(jù)可表示為:k1:t={k1,k2,…,kt},并可用式(1)表示傳感器單元(i,j)的量測(cè)。

將檢測(cè)到人手且其基本保持靜止的時(shí)刻作為運(yùn)動(dòng)的開(kāi)始狀態(tài),將人手由運(yùn)動(dòng)狀態(tài)變化至速度為0的時(shí)刻作為結(jié)束狀態(tài)。則沙畫(huà)繪制過(guò)程中手指的坐標(biāo)與時(shí)間關(guān)系為:

圖3 本文設(shè)計(jì)的手勢(shì)

圖4 Leap MotionVisualizer手勢(shì)效果展示

又由于Leap Motion設(shè)備采集的數(shù)據(jù)信息為離散數(shù)據(jù),故可用式(3)表示手指的運(yùn)動(dòng)方向:

由此可得到,手指運(yùn)動(dòng)素的方向變化率為:

同理,可得到手指的運(yùn)動(dòng)速度為:

由該方法得到的手指運(yùn)動(dòng)軌跡,如圖5所示。

圖5 手指運(yùn)動(dòng)軌跡示意
文中使用Leap Motion設(shè)備獲取的手勢(shì)及其運(yùn)動(dòng)信息,并提取基于角域劃分的特征向量,再使用該特征向量進(jìn)行手勢(shì)識(shí)別與跟蹤完成虛擬沙畫(huà)展示系統(tǒng)。系統(tǒng)整體工作流程,如圖6所示。從圖中可知,為了實(shí)現(xiàn)更真實(shí)的沙畫(huà)展示功能,本系統(tǒng)使用3Ds Max技術(shù)建立虛擬手模型,并使用粒子運(yùn)動(dòng)系統(tǒng)模擬落沙效果。

圖6 虛擬沙畫(huà)演示系統(tǒng)整體流程
文中使用3Ds Max軟件和紋理貼圖法建立手模型的具體步驟為:
1)構(gòu)建手的外觀模型:首先構(gòu)建一個(gè)多邊形box,并調(diào)整各條邊直至形成手掌輪廓結(jié)構(gòu);然后,切割出各手指并調(diào)整指節(jié)長(zhǎng)度;最后,細(xì)化切分后的多邊形網(wǎng)格,增強(qiáng)虛擬手的逼真度[18]。
2)問(wèn)題貼圖:首先對(duì)虛擬手的多邊形網(wǎng)格進(jìn)行UV處理;然后,使用Photoshop繪制紋理貼圖。
3)使用3Ds Max軟件添加骨骼參數(shù),并綁定骨骼與蒙皮。
使用上述流程即可實(shí)現(xiàn)仿真手的構(gòu)建,圖7為本文實(shí)現(xiàn)的仿真手效果及貼圖前后的對(duì)比。

圖7 仿真手模型及貼圖前后效果
文中使用粒子系統(tǒng)實(shí)現(xiàn)沙畫(huà)演示過(guò)程中的落沙效果,粒子系統(tǒng)是使用計(jì)算機(jī)圖形學(xué)技術(shù)模擬現(xiàn)實(shí)生活中的火焰、云朵和落葉等一系列無(wú)規(guī)則景物的視覺(jué)效果技術(shù)。其基本思想是:使用微小的具有顏色、大小和形狀的粒子表示無(wú)規(guī)則物體,并使用大量的此種粒子構(gòu)成粒子團(tuán),從而使用粒子的產(chǎn)生和凋零過(guò)程來(lái)模擬景物的運(yùn)動(dòng)。
Unity 3D采用模塊化管理方法集成了功能強(qiáng)大的粒子系統(tǒng),故本文使用該軟件并配合粒子曲線編輯器實(shí)現(xiàn)復(fù)雜粒子運(yùn)動(dòng)的效果。具體實(shí)現(xiàn)步驟為:
1)使用“Particle System”子菜單欄創(chuàng)建粒子系統(tǒng);
2)根據(jù)需要選擇Inspector視圖中“Particle System”組件的模塊控制粒子的行為特征。如本系統(tǒng)使用初始化、Emission、Shape、Rendere和Size over Lifetime等模塊實(shí)現(xiàn)落沙效果;
3)設(shè)置各粒子的生命周期和運(yùn)動(dòng)狀態(tài)等基本屬性以滿足預(yù)期效果,如圖8所示分別模擬了沙子落下和堆積的效果。

圖8 沙子落下(上)及堆積(下)效果模擬
4)當(dāng)系統(tǒng)識(shí)別出“撒沙”的手勢(shì)時(shí),啟動(dòng)粒子系統(tǒng)并使用SandPainting腳本文件切換觀看視角以得到更好的落沙效果。本文實(shí)現(xiàn)的落沙效果圖,如圖9所示。

圖9 落沙效果圖
使用上文提出的系統(tǒng)與Leap Motion設(shè)備、3Ds Max以及Unity 3D等軟件,本文實(shí)現(xiàn)了如圖10所示的虛擬沙畫(huà)演示過(guò)程。

圖10 系統(tǒng)實(shí)現(xiàn)效果展示
該演示過(guò)程經(jīng)過(guò)了數(shù)據(jù)的預(yù)處理、基于角域劃分特征向量的提取、手勢(shì)設(shè)計(jì)、識(shí)別與跟蹤過(guò)程及粒子系統(tǒng)模擬落沙效果等。從圖10可看出,所提出的系統(tǒng)能正確的識(shí)別出各種手勢(shì),并能滿足基本的沙畫(huà)繪制過(guò)程,得到了較為滿意的結(jié)果。
傳統(tǒng)沙畫(huà)演示過(guò)程中存在操作過(guò)程復(fù)雜、設(shè)備繁多和無(wú)法撤銷(xiāo)的問(wèn)題。本文設(shè)計(jì)實(shí)現(xiàn)了一種基于手勢(shì)識(shí)別的虛擬沙畫(huà)展示系統(tǒng),以方便沙畫(huà)的表演與創(chuàng)作。該系統(tǒng)使用Leap Motion設(shè)備獲取的手勢(shì)及其運(yùn)動(dòng)信息,并提取基于角域劃分的特征向量,再使用該特征向量進(jìn)行手勢(shì)識(shí)別與跟蹤;同時(shí),使用粒子運(yùn)動(dòng)系統(tǒng)模擬落沙效果。實(shí)現(xiàn)與結(jié)果表明,所提出的系統(tǒng)能正確的識(shí)別出各種手勢(shì),并能滿足基本的沙畫(huà)繪制過(guò)程。