本文闡述了一種通用肢體訓練系統的設計與實現。該系統使用Kinect作為動作捕捉輸入源,使用Unity3D作為輸出平臺,可實時捕捉人體骨骼動作并進行動作匹配,同時反饋匹配結果,通過保存動作并共享的方式解決了訓練者在訓練時必須依賴教練、教練必須重復輔導多個訓練者的弊端。
【關鍵詞】肢體訓練 動作捕捉 Kinect Unity3D
1 緒論
Kinect作為一種體感設備,可以獲取到運動捕捉時的動態骨骼數據,同時支持影像識別,語言輸入,語音識別等多種功能,官方也提供了內含的運行驅動、擁有程序開發接口(Raw Sensor Streams API)、方便的安裝文件以及完整的開發手冊,可讓軟件開發人員使用主流的高級程序設計語言在visual studio開發平臺下輕易開發體感系統和支持自然人機交互的應用。本文正是在這樣的背景下,在基于對Kinect體感識別技術研究的基礎上,設計實現一款通用肢體訓練體感教育系統
2 系統設計
2.1 系統分析
本文旨在為肢體訓練領域研究一個通用式的解決方案,若是僅僅單一的以教練員或者以訓練者為主都不能實現這一目的。因此本課題計劃為不同用戶開發不同的使用端,多個終端通過網絡連接到服務器,使用服務器上傳下載動作文件從而實現文件的共享。文件共享之后,打破了傳統訓練者和教練員一一對應的關系,訓練者可以練習來自所有教練的所有動作,而教練員的動作也可以供所有訓練者下載練習。
系統業務流程如圖1所示。
2.2 系統設計
根據以上分析,可以將系統分為一個服務器端和三個客戶端,分別為標準動作采集端、訓練端和手機無線控制端。服務器端負責存儲文件,實現文件的共享;標準動作采集端負責錄制教練員的標準動作,并將動作信息轉換成數據記錄到文件,再將文件上傳到服務器;訓練端則從服務器下載文件并解析成動作數據并將其應用于虛擬人物,實現動作的回放。訓練端還需要獲取訓練者的動作,并將自身動作數據與標準動作數據進行比對,得到比對結果后再反饋給訓練者;考慮到訓練者在訓練時需要遠離電腦,在訓練時也無法通過鼠標或者鍵盤控制播放狀態,所以在這里引入手機無線控制端,手機端通過無線與訓練端進行連接,主要負責控制動作回放時的播放和暫停,作為訓練端的控制器而存在。
就整個系統而言,可以將系統分為輸入部分、存儲部分、輸出部分和控制部分,系統結構圖如圖2 所示。
3 系統實現
系統的主要功能,可以通過模型綁定、數據驅動、切換數據源、動作匹配等主要步驟來實現。
3.1 模型綁定
真實人物與虛擬人物的動作綁定主要考慮如何通過Kinect獲取到真實人物的骨骼動作,再將真實的骨骼動作同步到虛擬人物上從而實現虛擬人物與真實動作的同步。系統要實現的所有功能模塊幾乎都需要在此基礎上進行。所以首先需要通過Kinect獲取到人物的骨架以及每個骨架結點的坐標。但是Kinect使用的坐標與Unity內部使用的坐標不一樣,所以需要進行必要的轉換,將人物相對于Kinect傳感器的坐標轉換成虛擬人物相對于屏幕的坐標。此轉換完成之后,即可對應真實人物與虛擬人物的關節點。
關節點同步之后,虛擬人物還需要根據關節點來移動骨骼模型。此時才可以實現虛擬人物的運動效果。該功能通過Unity提供的Avatar骨骼系統來實現。Avatar系統可以根據人物骨骼結點的Rotation來使骨骼進行平滑的移動。使用Dictionary
3.2 數據驅動
真實人物與虛擬人物的動作綁定后,可以實現使用虛擬人物骨骼的關節結點與真實人物的關節點進行關聯,下一步要實現虛擬人物根據真實人物的動作進行運動。
這里用到的是在單位時間內對各個人體骨骼結點的位置進行采樣。通過對單位時間段內不同關節點位置做補間動畫來實現同步真實人物動作的動畫效果。
3.3 切換數據源
在真實人物與虛擬人物動作對應的過程中,可認為動作的數據流從真實人物流到虛擬人物中。要實現保存動作,只需要動作數據流附與虛擬人物時將數據流拷貝一份副本進行序列化再保存到本地即可。若要實現動作的播放,只需要將虛擬人物的數據源切換到文件流即可。動作的保存與播放結構如圖4所示。
3.4 動作匹配
動作匹配是指比較訓練者的姿勢與播放的教練的姿勢是否匹配。高效且精確度滿足需求的評估方法尤為重要。系統需要對同一空間下的兩個不同虛擬人物模型的相對應的關節點進行比較匹配,以驗證訓練者的某個關節點的移動距離和方向是否與標準動作一致。本文通過兩個向量的差來判斷其匹配度。即通過比較兩個虛擬模型相應結點的相對位置來判斷結點是否匹配并返回匹配結果,按此方式遍歷所有結點,便可以得到該動作的匹配情況。
可由方程(1)來計算誤差值:
△Z=((a-b)-(c-d))2 (1)
對于任意一個骨骼結點,θ1表示訓練者的某個關節點,θ2表示教練模型上與θ1相對應的結點。向量a表示坐標原點到骨骼結點θ1的向量;向量c表示坐標原點到骨骼結點θ2的向量,b和d分別表示訓練者模型和教練員模型的根結點△表示兩個結點的相似度,如果△的值比允許的誤差值小,那么可以認為該結點的匹配是達標的。但是,若向量足夠小,即便兩向量方向相反,他們的差也有可能小于誤差值,這顯然是不被允許的。因此在計算向量的差值之前還需要對兩個向量的方向的夾角進行判定。此時需要引入向量的余弦相似度,即兩個向量夾角的余弦值越接近1,表明兩個向量越相近。當余弦相似度達不到要求時,可直接判定當前節點為不匹配。
動作匹配結果如圖5所示。
4 結束語
基于Kinect的通用式肢體訓練系統為教練員和訓練者分別開發了兩個功能不同的客戶端。教練端通過Kinect捕捉獲取到教練人員的骨骼動作后,使用Unity將骨骼動作的數據流轉換成文件流保存成文件再通過網絡將動作文件上傳至云空間進行共享;訓練端則是下載并播放動作文件,將播放的動作文件與Kinect獲取的自身的動作進行比對,并反饋各個關節點匹配的結果。與傳統的肢體訓練相比,使用兩個客戶端互相配合,訓練者可以靈活的增加、刪除和選擇要練習的動作,避免了需要為訓練不同的動作開發不同軟件的弊端。
后期擬在錄制教練員動作時同時也以視頻的形式錄制下來。如此訓練者可以通過觀看視頻獲取更精確的動作細節信息,使用骨骼信息來進行比對測試自身練習的動作是否到位。這樣給予訓練者一個更全面的練習環境。另外,擬增加開發一款動作剪輯軟件,使得專業人員可以像剪輯視頻一樣剪輯動作,丟棄冗余、錯誤的動作,給訓練者一個更專業的標準動作。
參考文獻
[1]蔡俊.基于Kinect的上肢康復訓練系統的研究[D].廣東工業大學,2015.
[2]鄔冠上.基于Kinect的交互式健身游戲的設計與實現[D].中國科學院大學(工程管理與信息技術學院),2014.
[3]黃彧.相似性度量的研究及其在數據挖掘中的應用[D].福建師范大學,2009.
[4]余濤.Kinect應用開發實戰:用最自然的方式與機器對話[M].北京:機械工業出版社,2013.
[5]商宇浩,李一帆,張吉祥.Unity 5.x完全自學手冊[M].北京:電子工業出版社,2016.
[6]吳國斌.KINEC人機交互開發實踐[M].北京:人民郵電出版社,2013.
[7]陳泉宏.Unity API解析[M].北京:人民郵電出版社,2014.
[8](美)Alan, Shalloway.設計模式解析[M].北京:人民郵電出版社,2016.
[9]Erich,Gamma.設計模式:可復用面向對象軟件的基礎[M].北京:機械工業出版社,2007.
[10]陳綏陽,張娓娓,李繼C#面向對象程序設計[M].北京:清華大學出版社,2014.
[11]李紅波,丁林建,冉光勇.基于Kinect深度圖像的人體識別分析[J].專題策劃,2012(04).
[12]王瑩.基于Kinect的Tri-tracking視頻跟蹤算法研究[D].大連:大連理工大學,2012.
[13]代艾波,瞿暢,朱小龍,于陳陳.體感交互技術在運動康復領域的應用[J].中國康復理論與實踐,2014(01).
[14]David M.Frost,Tyson A.C.Beach,Troy L.Campbell,Jack P.Callaghan,Stuart M.McGill.Can the Functional Movement Screen? be used to capture changes in spine and knee motion control following 12 weeks of training?[J]. Physical Therapy in Sport,2016.
[15]向澤銳,支錦亦,徐伯初,李娟.運動捕捉技術及其應用研究綜述[J].計算機應用研究,2013(08):2241-2245.
作者簡介
曲毅,女,淮海工學院計算機工程學院,副教授,主研方向為計算機圖形學、虛擬現實、人機交互。
張承凱,男,計算機工程學院軟件工程專業2017屆本科畢業生。
作者單位
江蘇省連云港市淮海工學院計算機工程學院 江蘇省連云港市 222002endprint