戴路 張潔
摘要:為改善現(xiàn)有兒童安全教育體系功能,解決傳統(tǒng)安全教育枯燥問題,采用Unity 3D游戲引擎架構,搭建兒童安全教育場景,結合Kinect傳感器采集體驗者骨架信息。通過簡易分析,判斷體驗者動作狀態(tài),導入Unity 3D動畫控制器,開發(fā)一款基于體感交互的兒童安全教育平臺。系統(tǒng)在兒童安全體驗館受到歡迎,是一款互動性良好、兒童易接受、成本適中的安全教育平臺。
關鍵詞:Kinect;體感交互技術;兒童安全教育平臺
DOIDOI:10.11907/rjdk.181349
中圖分類號:TP319
文獻標識碼:A 文章編號:1672-7800(2018)008-0144-05
英文摘要Abstract:In order to improve the existing children safety education system,an innovative child safety education platform based on the sense of body interaction is developed.To solve the problem of traditional safety education,the system adopts Unity 3D game engine structure to build children safety education scenario,and combines Kinect sensor to collect experiencers' skeleton information.Through simple analysis,we can judge operators' action state and import Unity 3D animation controller to build children safety education platform together.After the completion of the system debugging,it is welcomed by the children and parents in all kinds of exhibitions.Kinect-based somatosensory and interactive children safety education platform is a good-quality,safe,and affordable platform for children.
英文關鍵詞Key Words:Kinect;somatosensory interaction technology;children's safety education platform
0 引言
意外傷害是兒童成長的重要威脅,世界衛(wèi)生組織和聯(lián)合國兒童基金會聯(lián)合出版的《世界預防兒童傷害報告》顯示:全世界每天有2 000多個家庭因非故意傷害或意外事故而失去孩子,從而使這些家庭變得支離破碎,而更多的兒童因為意外事故造成永久傷害。如果世界各國采取有效干預,每天可挽救1 000多名兒童的生命。如果兒童具有一定的安全常識,這些傷害大部分是可以避免的[1]。
現(xiàn)今的安全教育一般是通過口頭或書面方式,這種方式效果不是很好[2]。而教育效果較好的兒童安全體驗館,因為建設費用高,絕大多數(shù)兒童無法通過這條途徑獲得教育機會。為改善這種現(xiàn)狀,本文設計了一款交互性良好、兒童易接受、成本適中的安全教育模式[3]。
1 系統(tǒng)框架
本系統(tǒng)以現(xiàn)有安全教育措施為基礎,采用Unity 3D游戲引擎構建虛擬的安全教育場景,將體驗者帶入虛擬的安全場景中。通過動作捕捉傳感器,實時捕捉體驗者姿態(tài),并判斷其動作,根據(jù)體驗者的動作反饋進行體感交互[4]。安全場景采用虛擬提示,通過體感的交互方式將體驗者“帶入”虛擬的安全場景中,“親自”完成整個安全過程[5],以達到安全教育的目的。
本系統(tǒng)的動作捕捉傳感器選擇微軟公司的Kinect V2。Kinect V2是微軟公司于2013年推出的Kinect V1的升級版,其內部的高清攝像頭能采集30fps的1 080p的RGB圖像,獨立的30fps紅外傳感器能采集30fps的512×424的紅外圖像數(shù)據(jù),還能得到相當于3倍Kinect V1精度的深度數(shù)據(jù)。Kinect V2還具備同時捕捉6個人體的準確姿態(tài),每個人體能識別出25個重要關節(jié),同時識別兩個人體簡單手勢,還能判斷出一個人體的簡單表情。前端的麥克風陣列組具備聲音定位功能,加入微軟推薦的Speech Platform語言包還能實現(xiàn)語音識別 [6]。
2 系統(tǒng)軟件設計
2.1 安全體驗場景設計
Unity 3D是由Unity Technologies開發(fā)的一個讓玩家輕松創(chuàng)建諸如三維視頻游戲、建筑可視化、實時三維動畫等互動內容的多平臺綜合型游戲開發(fā)工具,是一個全面整合的專業(yè)游戲引擎。引擎中自帶Asset store,該商店是一個插件交互商店,開發(fā)者可售賣自己開發(fā)的插件,也可購買大量優(yōu)秀的成品插件,這種模式大大加快了應用開發(fā)的周期[7-8]。
本文通過Asset store獲得相關插件,構建了多套不同安全教育場景,虛擬安全場景效果如圖3所示。
2.2 Kinect V2在Unity 3D上的應用
Unity 3D上Kinect V2常用插件有:
(1)專用插件包KinectFor Windows_UnityPro_2.0,該插件包在微軟的官方網站上可下載,下載后導入所有資源及導入場景后,Hierarchy有如圖4所示預制項目。
插件包提供的示例場景展示了Kinect的大部分功能,BodyView實現(xiàn)Kinect實時采集人體的25個關節(jié)三維坐標,具體關節(jié)如圖5所示。將每個相連關節(jié)搭接起來,形成一具人體骨骼框架[9-10]。
ColorView將Kinect采集的30fps的1 080p RGB圖像實時顯示,InfraredView將30fps的512×424的紅外圖像實時顯示,DepthBase將深度數(shù)據(jù)實時顯示,具體效果如圖6所示。
(2)卡耐基梅隆的KinectWrapper插件包。從Kinect SDK1.0版本就開始支持卡耐基梅隆的KinectWrapper插件包,一直到當前的Kinect SDK2.0。插件包可從Unity 3D自帶的Asset Store中獲得。下載后導入所有資源及加載AvatarsDemo場景所有的預制項目,如圖7所示。
AvatarsDemo這個示例場景通過Kinect傳感器讀取人體主要關節(jié)點的實時坐標以及姿態(tài),將這些數(shù)據(jù)綁定到一個動畫人物的骨架上,可實現(xiàn)虛擬人物實時動態(tài)跟蹤體驗者動作,并同時實現(xiàn)被讀取人物的正面和背面動作,還能實現(xiàn)一個虛擬骨骼框架和一個BodyIndex人物大致外廓[11],如圖8所示。
安全教育場景需要識別踏步、揮手、下蹲這3組較為簡單的動作,涉及到的關節(jié)部位較少。為盡量減少計算機的資源開銷,本系統(tǒng)選擇微軟自帶的KinectFor Windows_UnityPro_2.0插件包實現(xiàn)體感交互部分。
本應用中計算機有相當部分資源消耗在動畫效果渲染上,體驗者不需要精準操作,只需要能正確識別動作即可,系統(tǒng)開銷小。
2.3 簡易人體動作識別
通過人體手、腳的運動軌跡確定動作。采用公式(1)計算任意兩幀間關節(jié)p(x1,y1,z1)與p(x2,y2,z2)的移動距離。在同一幀內采用公式(1)計算兩個關節(jié)的間距。踏步、揮手、跳動根據(jù)相鄰幀間相關關節(jié)的運動距離進行判定[12-13]。
計算膝關節(jié)的角度能判斷人體是否下蹲,只要得到單邊髖關節(jié)、膝關節(jié)、踝關節(jié)的坐標,就可根據(jù)公式(1)計算出各個關節(jié)的距離,再通過余弦定理式(2)計算人體膝關節(jié)角度,判斷人體是否在完成下蹲動作[14-15]。
相關動作狀態(tài)判定流程如圖9所示。啟動系統(tǒng)后打開Kinect傳感器,對骨骼進行中值濾波,中值濾波會有一幀的延時,在處理時會根據(jù)計算機配置產生一定的延時。根據(jù)微軟文獻,72%的人有100ms的反應時延,因此只要將延時控制在100ms以內,大部分用戶是可以接受的[16]。濾波的輸入輸出及幀數(shù)關系如圖10所示,中值濾波可以較好地控制關節(jié)運動中產生的噪點[17-18]。
通過采用Unity 3D中MonoBehaviour內置的定時器設定100ms的延時讀取并記錄相關關節(jié)數(shù)據(jù),再根據(jù)當前幀和前項幀的關節(jié)坐標判定相應動作。
人體行走的自然步頻是95~125步/分,踝關節(jié)在走路時是先抬高、后放下。根據(jù)最慢步頻95計算,踝關節(jié)做單程運動每次為0.32ms[19]。據(jù)觀測,在有動畫提示的游戲過程中,體驗者會將腳抬得比平時更高,因此在踏步條件中采用單邊踝關節(jié)的最低單程運動數(shù)的1/3時間即100ms,體驗者的踝關節(jié)運動超過5cm,而另一邊踝關節(jié)沒有運動,據(jù)此判定體驗者處于踏步狀態(tài)[20]。
人標準下蹲膝關節(jié)的角度為90°,但游戲過程中蹲得太低大大影響體驗。因此,當幀內髖、膝、踝關節(jié)的夾角小于150°時就判定體驗者處于蹲的狀態(tài)。
揮手動作相對于前兩個動作來說相對簡單,只要腕關節(jié)高于肩關節(jié),且在300ms內移動0.1m就判定當前體驗者處于揮手狀態(tài)[21]。
上述的判斷條件及數(shù)值還會根據(jù)未來具體的體驗情況進行相應修正。
2.4 Unity 3D中Animator組件使用
Unity 3D的Animator組件是一個能在多個動畫直接切換的控制器,也稱為動畫狀態(tài)機,可在Assets中Create的Animator Controller組件進行相關狀態(tài)設置,如本系統(tǒng)體驗者的站立、踏步、下蹲、揮手4個狀態(tài)及其轉換路徑見圖11。在每個狀態(tài)的Motion參數(shù)里添加對應的人物動作片段,之后在參數(shù)中設置狀態(tài)轉換變量,見圖12。當腳本狀態(tài)變量改變時,場景中的人物就會從當前動作切換到新的狀態(tài)中 [22]。
系統(tǒng)通過Kinect采集并實時分析體驗者動作,并將體驗者動作狀態(tài)通過動畫狀態(tài)機在游戲中實時響應,將體驗者帶入到虛擬的安全場景中,讓體驗者在游戲中達到安全教育的目的。
3 結語
本系統(tǒng)采用體感的交互方式,讓兒童能在友好的環(huán)境下愉快學習安全知識,效果等同于市面上的兒童安全教育體驗館,但成本大大降低。系統(tǒng)在相關展覽會上受到廣大兒童及家長歡迎,體驗效果如圖13所示。
圖13 測試現(xiàn)場
參考文獻:
[1] PEDEN M,OYEGBITE K,OZANNE-SMITH J,et al.World report on child injury prevention[R].World Health Organization,2008:3-4.
[2] 楊余香.幼兒對安全相關概念認知的研究[D].南京:南京師范大學,2008.
[3] 呂瑤.體感技術何時闖入教育[J].中國遠程教育,2012,23(16):75-78.
[4] 王森.Kinect體感程序設計入門[M].北京:科學出版社,2014:33-35.
[5] AOI.Unity將角色變成玩家[EB/OL].http://bbs.9ria.com/thread-285690-1-1.html.
[6] 孫運達.多視點非接觸式人體運動捕捉研究[D].北京:北京交通大學,2006.
[7] 盧金浩,張帥伍,傳敏,等.基于Unity 3D三維游戲場景與AI系統(tǒng)的設計與實現(xiàn)[J].三明學院學報,2013,12(6):33-35.
[8] 吳志達.一個基于Unity 3D游戲引擎的題干游戲研究與實現(xiàn)[D].廣州:中山大學,2012.
[9] Kinect和U3d結合開發(fā)基礎之基本的動作識別[EB/OL].http://blog.csdn.net/zhaoshouyue/ article/details/51225442.
[10] 黃露丹,嚴利民.基于Kinect深度數(shù)據(jù)的人物檢測[J].計算機技術與發(fā)展,2013,36(3):121-124.
[11] Kinect和U3d結合開發(fā)基礎之KinectWrapperPackage[EB/OL].http://blog.csdn.net/zhaoshouyue/ article/details/51178614.
[12] 于芝枝.基于Kinect的人體姿勢識別與校正[D].廣州:廣東工業(yè)大學,2014.
[13] 吳淳,孫心佩,程健,等.體感CF2.0三維場景游戲之開發(fā)[J].電子世界,2014,34(9):13-14.
[14] 董傲霜.使用Kinect深度圖像的靜態(tài)人體動作識別[D].阜新:遼寧工程技術大學,2014.
[15] 羅鳴.基于Kinect傳感器的骨骼定位研究[D].武漢:武漢科技大學,2013.
[16] 如何平滑處理Kinect采集的骨骼數(shù)據(jù)[EB/OL].http://www.cnblogs.com/microcampus/archive/ 2013/05/06/3063625.html.
[17] 錢塹,馬旭東,戴先中.基于抽象隱馬爾可夫模型的運動行為識別方法[J].模式識別與人工智能,2009,22(3):433-439.
[18] CHANG Y J,CHEN S F.A Kinect-based system for physical rehabilitation:a pilot study for young adults with motor disabilities [J].Research in Developmental Disabilities,2011,32(6):2566-2570.
[19] 劉開余,夏斌.基于Kinect的實時人體姿勢識別[J].電子設計工程,2014(19):31-34.
[20] 韓旭.應用Kinect的人體行為識別方法研究與系統(tǒng)設計[D].濟南:山東大學,2013.
[21] 鄧小園.基于Kinect運動捕捉的高爾夫揮桿分析與輔助訓練系統(tǒng)的研制[D].北京:北京郵電大學,2013.
[22] Mecanim Animator使用詳解[EB/OL].http://blog.csdn.net/myarrow/article/details/45242403.
(責任編輯:杜能鋼)