徐濤 黃賢立 嚴(yán)霞 林瓅
摘 要:隨著計(jì)算機(jī)的飛速發(fā)展,自然的圖形用戶(hù)界面應(yīng)運(yùn)而生,結(jié)合微軟推出的體感設(shè)備Kinect,以及游戲引擎Unity3D,可以快速搭建實(shí)驗(yàn)環(huán)境。通過(guò)腳本定義投籃手勢(shì)識(shí)別算法,完成投籃手勢(shì)的識(shí)別,并利用算法算出籃球拋出時(shí)的初速度,交給Unity3D的物理引擎計(jì)算出籃球的運(yùn)動(dòng)軌跡,從而完成整個(gè)虛擬的投籃過(guò)程。
關(guān)鍵詞:Kinect;體感;手勢(shì)識(shí)別;Unity3D;投籃系統(tǒng)
DOI:10.16640/j.cnki.37-1222/t.2016.08.266
0 引言
根據(jù)馮·諾依曼(John von Neumann,1903~1957)的計(jì)算機(jī)體系結(jié)構(gòu),計(jì)算機(jī)分為五大部分——運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備、輸出設(shè)備。現(xiàn)在大多數(shù)計(jì)算機(jī)仍是馮·諾依曼計(jì)算機(jī)的組織結(jié)構(gòu),只是做了一些改進(jìn)而已,并沒(méi)有從根本上突破馮·諾依曼體系結(jié)構(gòu)的束縛。對(duì)于計(jì)算機(jī)的研究和使用人員來(lái)說(shuō),計(jì)算機(jī)的發(fā)展最終需要解決的問(wèn)題就是輸入和輸出的問(wèn)題。如何對(duì)計(jì)算機(jī)進(jìn)行高效準(zhǔn)確的輸入,以及如何讓計(jì)算機(jī)通過(guò)算法,進(jìn)行準(zhǔn)確的計(jì)算,輸出人們想要的結(jié)果,一直是計(jì)算機(jī)研究的一個(gè)重要課題。
隨著計(jì)算機(jī)的發(fā)展,自然的用戶(hù)界面(NUI) 隨之出現(xiàn)。相對(duì)于傳統(tǒng)的用戶(hù)輸入方式——鼠標(biāo)鍵盤(pán),自然的用戶(hù)界面顯得更加人性化。比如語(yǔ)音輸入,手勢(shì)識(shí)別等。顯然,自然的用戶(hù)界面更加符合人們的行為習(xí)慣。自然的用戶(hù)界面更加健康,它可以讓對(duì)計(jì)算機(jī)的輸入變成與一個(gè)人的交流,讓用戶(hù)可以有更加身臨其境的感覺(jué)。
1 現(xiàn)實(shí)生活中體感手勢(shì)的運(yùn)用
人們?cè)谌粘5慕浑H中,經(jīng)常會(huì)用到一些手勢(shì),來(lái)使得對(duì)問(wèn)題的表述更加具有表現(xiàn)力。這些手勢(shì)不僅僅只是手指的動(dòng)作,也不能理解為手部的動(dòng)作。手勢(shì)是一個(gè)廣泛的概念,它包含了有含義、有意義的肢體動(dòng)作。這也就是說(shuō),一個(gè)踢腿的動(dòng)作,也可以被定義為手勢(shì)。敲擊鍵盤(pán)不是一個(gè)手勢(shì),因?yàn)槭种缚焖俚陌聪履骋粋€(gè)按鍵既不容易被觀(guān)察到,也不能直觀(guān)地表達(dá)其含義。
然而,手勢(shì)不只是用在交際表達(dá)中,人們?cè)谌粘5纳钪?,也無(wú)處不用到手勢(shì)。例如,在擰開(kāi)飲料瓶蓋的時(shí)候,需要用手握緊瓶蓋,另一只抓緊瓶身,通過(guò)手腕、手臂的共同協(xié)作,完成擰下瓶蓋的動(dòng)作。擰下瓶蓋的動(dòng)作,就是一個(gè)手勢(shì)。我們可以忽略在完成這些動(dòng)作過(guò)程中所使用到、接觸到的實(shí)際存在的物體,而把注意力轉(zhuǎn)移到肢體本身。假設(shè)物體并不存在的,讓你筆畫(huà)著空氣來(lái)完成一個(gè)擰瓶蓋的動(dòng)作,讓另外一個(gè)人去猜你現(xiàn)在正在做的動(dòng)作,是否他一眼就能看出你正在演示擰瓶蓋的動(dòng)作呢?
2 基于Kinect體感設(shè)備的籃球系統(tǒng)
2.1 手勢(shì)的識(shí)別
如果“猜”出你所做手勢(shì)的是一臺(tái)計(jì)算機(jī),那么就涉及到計(jì)算機(jī)的手勢(shì)識(shí)別技術(shù)。讓計(jì)算機(jī)去完成一個(gè)手勢(shì)的識(shí)別、判斷是非常困難的。首先,我們要設(shè)法獲取人體的相關(guān)信息,這涉及到圖形、圖像識(shí)別技術(shù)、深度數(shù)據(jù)挖掘技術(shù)。通過(guò)微軟研制的Kinect,其攝像頭在收集了人體的視頻信息之后,通過(guò)算法的處理,可以把人的肢體信息凝練為20個(gè)骨骼節(jié)點(diǎn)。它可以準(zhǔn)確標(biāo)定人體的這20個(gè)關(guān)鍵點(diǎn),并對(duì)這20個(gè)點(diǎn)的位置進(jìn)行實(shí)時(shí)追蹤。在程序及算法設(shè)計(jì)中,人的肢體運(yùn)動(dòng),會(huì)使得身體各個(gè)骨骼節(jié)點(diǎn)的三維坐標(biāo)值發(fā)生改變。通過(guò)設(shè)置合理的數(shù)值,當(dāng)骨骼節(jié)點(diǎn)的坐標(biāo)差值超過(guò)某個(gè)設(shè)定值的時(shí)候,觸發(fā)某一個(gè)狀態(tài)位或一系列狀態(tài)位的改變,從而完成一個(gè)手勢(shì)或者一系列手勢(shì)的判定。例如,完成一個(gè)完整的投籃手勢(shì),需要先抬起手臂。以右手為例,抬起右手意味著右手腕節(jié)點(diǎn)的y坐標(biāo)值超過(guò)了右肩膀節(jié)點(diǎn)的y坐標(biāo)值,也就是實(shí)際空間中的右手高度,高于右肩膀高度。此時(shí),應(yīng)該觸發(fā)抬手狀態(tài)位的改變,告訴系統(tǒng),投擲者的手臂已經(jīng)抬起,準(zhǔn)備進(jìn)行下一步的判斷與計(jì)算。
當(dāng)然,在手臂放下之后,要把抬手狀態(tài)位還原,告訴系統(tǒng),投擲者的手臂已經(jīng)放下,不能繼續(xù)進(jìn)行投擲算法,不然系統(tǒng)會(huì)出現(xiàn)錯(cuò)誤投擲判斷。由此,抬手狀態(tài)的觸發(fā)就相當(dāng)于投擲算法的第一個(gè)開(kāi)關(guān),整個(gè)投籃手勢(shì)也是由一系列手勢(shì)構(gòu)成的。
2.2 運(yùn)動(dòng)軌跡的計(jì)算
籃球在空間中的運(yùn)動(dòng),是一個(gè)球體的物理運(yùn)動(dòng),需要物理引擎來(lái)提供物理算法,通常的游戲引擎都會(huì)帶有物理引擎,我們使用Unity3D游戲引擎中的物理引擎,來(lái)完成籃球運(yùn)動(dòng)軌跡的計(jì)算。這樣,我們只需要把籃球被拋出時(shí)的方向和速度提供給物理引擎,就可以完成籃球運(yùn)動(dòng)軌跡的計(jì)算了。
現(xiàn)實(shí)中,人完成投籃動(dòng)作,就是給籃球一個(gè)加速度。通過(guò)手部用力,讓籃球和手擁有相同的速度。當(dāng)手部停止加速,開(kāi)始減速,籃球也就不再加速,并且脫離手部,不再和手有接觸?;@球擁有了初始速度,就開(kāi)始拋物運(yùn)動(dòng)。這里我們忽略空氣阻力的作用。在三維空間中,需要把加速度及速度分解到相互垂直的三個(gè)方向上,也就是三維坐標(biāo)系中,計(jì)算三個(gè)方向上的加速度,最終提交給Unity3D的物理引擎,形成一個(gè)和速度進(jìn)行計(jì)算。手部三個(gè)方向上的加速度,可以通過(guò)速度計(jì)算公式獲得。Kinect提供給我們每秒30幀的骨骼節(jié)點(diǎn)三維坐標(biāo)位置變化,一個(gè)方向上坐標(biāo)的差值除以時(shí)間,就可以得到此方向上的速度,進(jìn)一步就可以得到此方向上的加速度。
2.3 模型的構(gòu)建
最后,我們?cè)赨nity3D中創(chuàng)建場(chǎng)景,添加籃球架的模型,并添加腳本判斷籃球是否投進(jìn),進(jìn)行計(jì)分,并給籃球和籃框添加碰撞器,當(dāng)籃球碰觸籃框時(shí),進(jìn)行碰撞的檢測(cè)和碰撞結(jié)果的計(jì)算,模擬真實(shí)的投籃環(huán)境,構(gòu)成一個(gè)完整的投籃系統(tǒng)。
參考文獻(xiàn):
[1]沈緒榜,劉澤響,王茹.計(jì)算機(jī)體系結(jié)構(gòu)的統(tǒng)一模型[J].計(jì)算機(jī)學(xué)報(bào),2007,30(05):731-736.
[2]張茫茫,傅紅.基于實(shí)體用戶(hù)界面與自然用戶(hù)界面結(jié)合的產(chǎn)品設(shè)計(jì)[J].研究論文,2013,31(28):99-102.
[3]曹雛清,李瑞峰,趙立軍.基于深度圖像技術(shù)的手勢(shì)識(shí)別方法[J].計(jì)算機(jī)工程,2012,38(08):16-21.
[4]朱惠娟.基于Unity3D的虛擬漫游系統(tǒng)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2012,21(10):36-40.
作者簡(jiǎn)介:徐濤(1993-),男,江蘇人,本科,研究方向:物聯(lián)網(wǎng)。