摘要:隨著數字化體驗時代的發展, 人們越來越關注自然的人機交互方式。體感技術作為一種最新的交互體驗方式, 也越來越多地受到人們的重視, 體感技術通過多種技術手段把虛擬平臺和現實平臺相結合, 實現自然地人機交互方式。本文基于Processing進可視化編程, 并基于Kinect進行多目標跟蹤實現準確地識別和交互, 致力于實現自然和諧、身臨其境的虛擬游戲體驗。
關鍵詞:Processing; Kinect;
1、Processing介紹
Processing是一種具有革命前瞻性的新興計算機語言, 它的概念是在電子藝術的環境下介紹程序語言, 并將電子藝術的概念介紹給程序設計師。它是Java語言的延伸, 并支持許多現有的Java語言架構, 不過在語法 (syntax) 上簡易許多, 并具有許多貼心及人性化的設計。Processing可以在Windows、MAC OS X、MAC OS 9、Linux等操作系統上使用。目前最新版本為Processing 3。以Processing完成的作品可在個人本機端作用, 或以Java Applets的模式外輸至網絡上發布。
2、開發基于Processing的人機交互小游戲
2.1、打飛機小游戲的設計
首先設計一個飛機類, 并為其設計初始化方法Plane、飛行方法fly, 顯示方法display, 被擊毀得分方法Crash
設計一個子彈類cannonball, 并為其設計初始化方法cannonball () 、開火方法、飛行方法fly () 和顯示方法display ()
設計一個大炮類cannon, 并為其設置初始化方法、開火方法fire () 和顯示方法display () ,
設計完三個類之后將三各類實例化, 并在Setup () 方法和draw () 方法中調用
圖1 打飛機游戲
2.2 彈球小游戲設計
設計一個小球類circle () , 并為其設置初始化方法circle () 、移動方法move () 、反彈方法judge () 以及顯示方法display () , , 在setup方法中初始化所有設置并在draw方法中調用Mouse Pressed方法來判斷鼠標的狀態以控制小球的發射。
圖2 彈球游戲
3、游戲中加入使用Kinect體感交互
Processing支持通過API調用Kinect設備。這里我們使用Kinect V2 API。
(1) 獲得玩家人數
在setup () 方法中激活enable Depth Img屬性和enable BodyTrack Img屬性, 將他們設置為true。在draw (0方法中通過getBody Track Image方法獲得人體跟蹤圖像, 通過get Depth Image獲得深度圖像, 調用get Raw Body Track跟蹤人體獲得圖像序列, 并通過get Num Of Users獲得玩家的數量。
(2) 進行人體和臉部跟蹤
在setup () 方法中激活enable HDFace Detection屬性和enable Color Img屬性, 將他們設置為true, 在draw () 方法中使用get HDFace Vertex方法獲得臉部集合圖形。
(3) 獲得人體骨架
通過enable Body Track Img獲得人體骨架后最終手部的點, 以此來代替鼠標進行操控游戲中玩家的動作。
4、總結
本文基于Processing構建了兩個交互小游戲, 并設計了通過Kinect進行體感交互操作。主要步驟分為基于Kinect的人體骨架模型構建和人體行為識別。Kinect可實現人體骨骼追蹤功能, 通過識別人體的關鍵關節點位置來確定人體的骨骼, 最終實現使用者的三維空間表示。其原理可分為以下三個步驟:利用數字圖像處理技術可以完成前景分割;識別人體輪廓區域內的各個身體部位, 如頭部、軀干和四肢等。從正面、側面等多個角度去分每一個可能的像素來確定關節點的坐標;谥鞒煞址治龇ǖ奶卣魈崛、基于SVM的每幀人體行為分類和基于人體運動數據庫的行為識別通過以上技術, 我們能夠快速的創建基于體感交互的應用與游戲。