摘要:現(xiàn)在的家庭對(duì)于孩子的早教越來越重視,市面上大量的早教啟蒙書籍、玩具、應(yīng)用程序被開發(fā)出來,幫助孩子“認(rèn)字閱讀”、“啟蒙算數(shù)”、“增長(zhǎng)知識(shí)”、“培養(yǎng)興趣”等,因此體感交互設(shè)備也應(yīng)運(yùn)而生?;诖?,本文圍繞基于體感交互的兒童認(rèn)知類應(yīng)用進(jìn)行了分析。
關(guān)鍵詞:兒童;體感交互;設(shè)備;應(yīng)用
一、 引言
隨著技術(shù)的發(fā)展和生活方式的改變,計(jì)算機(jī)或移動(dòng)設(shè)備輔助兒童教育,變得越來越普遍。而與這些設(shè)備之間的交互,一直受限于鼠標(biāo)鍵盤或者觸摸屏這些傳統(tǒng)輸入設(shè)備。同時(shí),兒童容易對(duì)數(shù)字設(shè)備過于迷戀,長(zhǎng)時(shí)間面對(duì)屏幕、保持不動(dòng)的姿勢(shì)、長(zhǎng)期封閉在數(shù)字世界中不與外界接觸,都會(huì)對(duì)兒童的身心健康帶來不良的影響。而如果采用體感交互方式,讓兒童像做游戲一樣,可以在一個(gè)多人的環(huán)境中,用一種簡(jiǎn)單、自然、基于身體動(dòng)作的方式來參與互動(dòng),對(duì)于一款面向兒童的娛樂認(rèn)知類應(yīng)用來說,會(huì)是非常適合的解決方案。
二、 體感交互概述
體感交互,起源于游戲行業(yè),顧名思義,就是通過肢體動(dòng)作、語言等來和系統(tǒng)進(jìn)行互動(dòng)的交互方式。作為一個(gè)革命性的技術(shù),正在提供一種新的人機(jī)交互方式,為兒童應(yīng)用軟件設(shè)計(jì)打開了一個(gè)新的類型。隨著健康生活的理念日益深入人心,這種自然、新穎、容易上手、結(jié)合娛樂與運(yùn)動(dòng)的交互方式,脫離了鼠標(biāo)鍵盤和觸摸屏的限制,打開身心,把身體從數(shù)字設(shè)備的束縛中解放出來,能夠讓兒童產(chǎn)生更高的學(xué)習(xí)積極性。因此,將體感交互技術(shù)融入到兒童認(rèn)知類軟件,具有非常重要的意義。
三、 案例構(gòu)思
本文將列舉的一款基于體感交互技術(shù)的兒童認(rèn)知類應(yīng)用,是一款以森林及其中各種動(dòng)物為主題的互動(dòng)游戲應(yīng)用。游戲的設(shè)計(jì)思路是:投影在墻上的畫面,展現(xiàn)出一個(gè)卡通風(fēng)格的森林的景象,森林中隱藏著各種小動(dòng)物,需要兒童站在大屏幕前,通過做一些動(dòng)作來模仿某種動(dòng)物的某個(gè)特征,如果動(dòng)作做對(duì)了,就能將它們召喚出來,來到小朋友跟前和小朋友進(jìn)行互動(dòng)。這款應(yīng)用的場(chǎng)景、動(dòng)畫、音樂,特別是交互方式,都大大增加了兒童學(xué)習(xí)的樂趣,減輕了兒童的認(rèn)知負(fù)擔(dān),幫助兒童了解這些動(dòng)物和植物,在娛樂的同時(shí)獲得知識(shí),達(dá)到寓教于樂的目的。借助肢體動(dòng)作,擺脫了傳統(tǒng)輸入設(shè)備的限制,并能多人在大屏幕前同時(shí)參與,滿足了兒童好動(dòng)的天性,降低傳統(tǒng)數(shù)字設(shè)備對(duì)兒童的身心傷害,使兒童無需坐在電腦前,減輕電腦輻射的同時(shí)實(shí)現(xiàn)了一定程度的運(yùn)動(dòng)健身效果。
四、 開發(fā)環(huán)境
在體感設(shè)備方面,早期的體感交互一般需要借助數(shù)據(jù)手套、3D頭盔等穿戴式設(shè)備來實(shí)現(xiàn)。但隨著機(jī)器視覺識(shí)別技術(shù)的發(fā)展,出現(xiàn)了直接利用深度攝像頭獲取人體骨骼和運(yùn)動(dòng)數(shù)據(jù)來實(shí)現(xiàn)人機(jī)交互的方法。其中之一有微軟開發(fā)的體感設(shè)備Kinect。Kinect是微軟在2010為XBOX360游戲機(jī)開發(fā)的體感外設(shè)。它具有即時(shí)動(dòng)態(tài)捕捉、影像辨識(shí)、麥克風(fēng)輸入、語音辨識(shí)、社群互動(dòng)等功能。它不需要用戶接觸任何控制器,僅依靠相機(jī)捕捉三維空間中玩家的運(yùn)動(dòng),還能辨認(rèn)聲音以接受語音指令。它的主要部件有:一個(gè)彩色攝像頭、一個(gè)紅外攝像頭、一個(gè)紅外投影儀、一組麥克風(fēng)列陣列。彩色攝像頭,用于獲取視角范圍內(nèi)的彩色視頻數(shù)據(jù)流;紅外投影儀,用以投射波長(zhǎng)為830納秒的肉眼不可見空間結(jié)構(gòu)光,只要向視角范圍內(nèi)的空間中打上這種結(jié)構(gòu)光,整個(gè)空間就都被做了標(biāo)記,把一個(gè)物體放進(jìn)這個(gè)空間,只要看看物體上面的散斑圖案,就可以知道這個(gè)物體在什么位置。紅外攝像頭則專門用于接受紅外投影儀所投射出的這種結(jié)構(gòu)光。麥克風(fēng)陣列,由左邊一個(gè)和右邊三個(gè)獨(dú)立的微型麥克風(fēng)組成,主要用于捕捉外界的立體聲,實(shí)現(xiàn)聲音辨識(shí),識(shí)別語音指令。由于Kinect一開始是作為XBOX360專用外設(shè)而開發(fā),需要驅(qū)動(dòng)程序和相關(guān)軟件開發(fā)工具包的支持才能在PC上運(yùn)行。可用的類庫(kù)有Openni,KinectSDK,手勢(shì)庫(kù)NITE,Kinectmssdk等。我們使用的是微軟官方提供的驅(qū)動(dòng)程序和Kinect SDK v2.0。通過Kinect SDK能獲取的數(shù)據(jù)包括:語音,彩色圖像,深度圖像,骨骼和關(guān)節(jié)數(shù)據(jù)(對(duì)每個(gè)人追蹤25個(gè)關(guān)節(jié)點(diǎn),可同時(shí)追蹤6人)。
在開發(fā)引擎方面,目前主流的游戲開發(fā)引擎,有Cocos2D、Unity3D、虛幻等。每一款游戲開發(fā)引擎都有其獨(dú)特的優(yōu)缺點(diǎn),只有深入了解引擎的開發(fā)環(huán)境和技術(shù)特點(diǎn)以及產(chǎn)品的表現(xiàn)力需要,并通過詳細(xì)的分析和充分的比較后,才能選出一款合適的游戲引擎軟件,來進(jìn)行接下來的開發(fā)。首先本款應(yīng)用的畫面風(fēng)格是2D卡通風(fēng)格,另一個(gè)需要滿足的需求是:能便利地接入Kinect SDK。而Unity3D恰好能很好地滿足這兩點(diǎn)。并且,Unity3D是一個(gè)非常成熟的游戲開發(fā)引擎,擁有大量的開發(fā)者,意味著有大量的討論、學(xué)習(xí)資料、活躍的技術(shù)社區(qū),還有大量的第三方插件和資源。Unity3D是一個(gè)原生三維引擎,但用它來制作2D游戲也是完全無障礙。因?yàn)樵赨nity中,2D和3D只是一種視角上的轉(zhuǎn)換,所有的物體都是有3D坐標(biāo)信息的,在Vector3轉(zhuǎn)為Vector2,并且視圖方式由透視變?yōu)檎坏臅r(shí)候,Z軸信息就沒有意義了,也就從3D變?yōu)榱?D。在2D模式下,層級(jí)視圖中只有一個(gè)正交攝像機(jī)(Projection選擇的是Orthographic)。Unity3D還為提供了專門用于2D模式的Sprite和SpriteRenderer組件,來使用圖片資源。Unity3D可使用C#來作為編程語言。調(diào)用Kinect方面,在正確安裝好Kinect官方驅(qū)動(dòng)和SDK后,可到微軟官方網(wǎng)站下載最新的For Unity3D示例封包,里面如有必需的支持文件和示例場(chǎng)景,在新建項(xiàng)目中引入封包后,就可以打開示例場(chǎng)景測(cè)試了。接下來,按照示例中的相關(guān)代碼,很容易就懂得了Kinect SDK的主要API的用法。
五、 動(dòng)作識(shí)別機(jī)制
首先需要定義一個(gè)標(biāo)準(zhǔn)動(dòng)作。我們先考慮如何定義一個(gè)特定動(dòng)作。從Kinect我們可以取得的數(shù)據(jù)有:關(guān)節(jié)點(diǎn)定位,即判斷相關(guān)的關(guān)節(jié)點(diǎn)是否落在一定的范圍內(nèi);骨骼角度,即判斷相關(guān)骨骼的角度是否處于一定范圍內(nèi),這個(gè)需要通過兩端關(guān)節(jié)的定位計(jì)算出來;關(guān)節(jié)角度,這是在看MSDN的Kinect SDK文檔時(shí)發(fā)現(xiàn)的,關(guān)節(jié)角度值就是該關(guān)節(jié)和下一關(guān)節(jié)的夾角。關(guān)節(jié)角度非常適合用來判斷特定動(dòng)作,其無關(guān)于個(gè)體身高體型、站位遠(yuǎn)近。那么不同的動(dòng)作可以很方便地通過累計(jì)相關(guān)關(guān)節(jié)角度與標(biāo)準(zhǔn)動(dòng)作關(guān)節(jié)角度的差值來評(píng)價(jià)。
在此項(xiàng)目中,用以召喚動(dòng)物的動(dòng)作,可以選取與特定動(dòng)作相關(guān)的幾個(gè)關(guān)節(jié)用以評(píng)價(jià),而不需要評(píng)價(jià)全身關(guān)節(jié),否則反而容易因次要關(guān)節(jié)數(shù)據(jù)造成動(dòng)作誤判。比如,兔子選取了:左右腕、左右肘、左右肩共6個(gè)關(guān)節(jié)。我們寫了一個(gè)程序可以方便地輸出指定關(guān)節(jié)的定義文件。由于在不同的環(huán)境下,Kinect獲取的數(shù)據(jù)總會(huì)有一定的抖動(dòng)噪音,因此我們會(huì)先記錄一個(gè)較長(zhǎng)時(shí)間范圍的數(shù)據(jù)然后取其平均值以消除抖動(dòng)。
現(xiàn)在,我們有了一組關(guān)節(jié)的定義,在游戲中,只需要取得用戶對(duì)應(yīng)關(guān)節(jié)的角度數(shù)據(jù),將其依次與標(biāo)準(zhǔn)動(dòng)作數(shù)據(jù)比較,累計(jì)下它們的差值,最后得到全部定義關(guān)節(jié)的差值總量,就可以判斷目標(biāo)動(dòng)作是否與標(biāo)準(zhǔn)動(dòng)作匹配了。當(dāng)然,也需要用平均值消除抖動(dòng)。這是比較簡(jiǎn)便、粗淺的評(píng)價(jià)方法,對(duì)所有關(guān)節(jié)同等對(duì)待,并沒有考慮給不同關(guān)節(jié)不同加權(quán)。
六、 最終效果
在交互區(qū)邊上,有一張動(dòng)作示意海報(bào),上面展示了動(dòng)物的種類以及可以召喚出它們的肢體動(dòng)作。比如,雙手支在耳朵上模仿兔子,用手遮在眉毛上模仿猴子,雙手上舉張開手指模仿雄鹿等。玩家走到投影屏幕前,做出預(yù)設(shè)的動(dòng)作,位于前方的Kinect捕捉玩家人體骨架數(shù)據(jù)。通過比較若干關(guān)鍵骨骼的角度,如果玩家動(dòng)作與預(yù)設(shè)動(dòng)作相匹配,畫面中會(huì)出現(xiàn)一個(gè)該動(dòng)物的識(shí)別圖標(biāo),提示玩家已識(shí)別出有效動(dòng)作;同時(shí)圖標(biāo)外會(huì)出現(xiàn)一個(gè)環(huán)形進(jìn)度條,提示玩家保持這個(gè)動(dòng)作一定時(shí)間。當(dāng)玩家持續(xù)保持動(dòng)作幾秒鐘,就能召喚出這種動(dòng)物。首先是從森林中傳來該動(dòng)物的叫聲,然后可以看到該動(dòng)物緩步從森林中走出,來到玩家所在位置跟前。此時(shí)玩家可以通過一些動(dòng)作與動(dòng)物互動(dòng),如引起動(dòng)物注視、讓動(dòng)物跟隨等。隨后,該動(dòng)物回到森林,自行離去。玩家可以進(jìn)行下一個(gè)動(dòng)作的識(shí)別。為了增加多人合作的趣味性,培養(yǎng)孩子的互相溝通與交流,游戲中設(shè)置了一些需要兩人合作完成的動(dòng)作,作為獎(jiǎng)賞,合作召喚出的動(dòng)物在形象和出場(chǎng)氣氛上都更激動(dòng)人心。
從最終的現(xiàn)場(chǎng)展示效果來看,該應(yīng)用系統(tǒng)色彩明快、形象生動(dòng),交互方式新穎有趣,深受小朋友們的歡迎和喜愛。體感交互讓兒童以非接觸的自然方式與數(shù)字世界進(jìn)行交流,使他們?cè)谟螒蛑蝎@得認(rèn)知,達(dá)到了寓教于樂的目的。
作者簡(jiǎn)介:
孫一帆,江蘇省蘇州市,蘇州工藝美術(shù)職業(yè)技術(shù)學(xué)院。