之前在 OpenNI 1 的時候,有一套名為 FAAST 的軟體,可以把人體的全身動作,對應成 Windows 的鍵盤滑鼠訊號,讓使用者可以透過肢體動作,來完成電腦的操作(請參考《用 FAAST 把 Kinect 當 Windows 鍵盤用!》);不過感覺上,該團隊似乎停止開發了,所以當 OpenNI 改版到 OpenNI 2 之後,FAAST 也不能用了。
不過現在,又有一套名為「HandGKET」(Hand Gesture Key Emulation Toolkit)的軟體,可以透過 OpenNI 2 做到類似的事情了~
它的官方網站是:https://sites.google.com/site/kinectapps/handgket。
下面則是官方的展示影片:
如果想玩的話,可以在該頁面最下方,找到檔案的下載;只要點選「HandGKET_v0.9.2(Distribution).zip」這個檔案右方的向下箭頭,就可以下載此程式的壓縮檔了。而解壓縮後,裡面有兩個資料夾,分別是 32 位元和 64 位元的版本,可以視需要使用。而另一個「HandGKET_manual.pdf」的檔案,則是這套軟體的使用說明,建議也下載來看看。
由於他是基於 OpenNI 2 和 NiTE 2 來開發的,所以要使用的話,可能會需要安裝 OpenNI 2 和 NiTE 2(不過實際上他有附上對應的 dll,理論上只要有驅動程式應該可以不用裝);而如果是使用 Microsoft Kinect 感應器的話,則需要安裝 Kinect for Windows SDK 或 Kinect for Windows Runtime(連結),才能正常使用。
而由於此程式沒有用來做設定的圖形介面,所以所有的設定,都是要靠一個純文字檔來完成;詳細的設定說明,請參考官方的文件。
和 FAAST 使針對全身骨架來做處理不一樣,HandGKET 只有針對手的位置來做處理,所有的鍵盤滑鼠對應,都是靠雙手來觸發的。
HandGKET 使用上分為「單手模式」和「雙手模式」兩種;「單手模式」可以用來對應鍵盤和滑鼠,「雙手模式」則只能對應鍵盤。而由 HandGKET 應該是使用 NiTE2 來做手的追蹤的,所以在執行起來後,要先透過 NiTE 的 Wave(揮手)或 Click(往前伸再縮回)來完成手的定位。
而在程式執行中,螢幕中間應該會出現顯示目前狀態的小視窗,裡面的圖示各自代表不同的意義如下:
基本上,都是要等到綠色的手出現,才能開始進行手勢的。
在單手模式下,他支援六種手勢,代表了手往六個不同的方向移動,也就是「HAND_LEFT」、「HAND_RIGHT」、「HAND_UP」、「HAND_DOWN」、「HAND_PUSH」和「HAND_BACK」;而他的手勢的定義,就是先往其中一個方向,然後在一定的時間內、再移回原來的位置,就算是完成了一個手勢。
下圖就是程式執行後的畫面,在手的位置會有一個綠色方框(如果是滑鼠模式,會是一個圓);當手移動動的時候,他不會立刻跟著動,只要先移到別邊,在馬上移回這個方框,就算是完成一個手勢了。
每個方向也都可以設定不同的移動距離條件(TRHESHOLD),所以其實是可以根據手移動的距離,來決定要做的事情的。
在雙手模式下,他則提供了下列的十種手勢,一樣可以各自設定不同的條件,來對應到不同的鍵盤事件。
- TWO_HANDS_PUSH
- TWO_HANDS_BACK
- TWO_HANDS_UP
- TWO_HANDS_DOWN
- TWO_HANDS_OPEN
- TWO_HANDS_CLOSE
- LEFT_HAND_PUSH
- RIGHT_HAND_PUSH
- TURN_LEFT
- TURN_RIGHT
而要使用雙手模式,則是要先靠 Wave 或 click 的手勢,來讓程式能追到兩隻手,然後擺出下面的初始化姿勢、來進行接下來的操作。
而一樣,只要做出上面定義的動作,就可以送出對應的鍵盤事件了。
而在設定檔的部分,官方有提供一個「gesture_event.txt」的檔案,裡面就是範例的設定。有興趣的話,就玩看看吧~真的有需要的話,也是可以根據這個檔案、再參考文件來做修改的。
至於完整的設定教學?說實話,Heresy 可能不會下去寫了…如果有人有比較詳細的教學,也歡迎提供。
最後,下面則是用這套軟體來玩 Need for Speed 這款賽車遊戲的展示:
請問heresy
要如何用openNI偵測膝蓋關節來驅動人物
例如膝蓋抬多高可以偵測出是在跑步
我知道FAAST就有這個功能但是因為要能同時偵測兩人的動作所以不知道FAAST可不可以
to severe234
OpenNI 本身沒有類似的分析功能,你必須要自己去定義、分析怎樣的條件,算是符合在跑步的條件。
而 FAAST 的話,Heresy 自己沒有去玩過多人的狀況,所以不確定。
你好
請問一下HandGKET只限於使用openNI2嗎
因為我目前有使用FAAST但是他是openNI
所以灌了HandGKET後會打不開
我在想是不是openNI和openNI2不相容
那想請問有沒有別的方法可以做到一樣的功能
(另外我是使用Unity製作遊戲)
to pepe
是的,OpenNI 1 和 OpenNI 2 是不相同的,
但是兩者可以同時安裝,如果是使用 PrimeSense 或是 ASUS 的感應器的話,則可以同時使用。
http://viml.nchc.org.tw/blog/paper_info.php?CLASS_ID=1&SUB_ID=1&PAPER_ID=491