經過了前面兩章的暖身,這次我們就要來對Kinect最威能的部份-「身體感應」來做個基本的了解啦!!不然只拿Kinect來拍照的話對Kinect來說可是一種天大的污辱啊~~
經過了前面兩章的暖身,這次我們就要來對Kinect最威能的部份-「身體感應」來做個基本的了解啦!!不然只拿Kinect來拍照的話對Kinect來說可是一種天大的污辱啊~~
Kinect SDK中提供的身體感應點
Kinect SDK預設就內建了20個身體部位的感應點,比某些第三方元件提供的13~16個點就硬生生的多了好幾個。而在C#版的Kinect SDK中也很友善的幫我們預先把這二十個點都以一個Enum封裝了起來,我們只需要透過Enum去選取我們要的部位就可以取得該點的座標值。
下圖即為目前Kinectsdk中提供的二十個感應點名稱(不過在C#版提供的Enum中是沒底線的喔)。
Kinect 的座標系
另外,Kinect的座標系也跟我們平常習慣用在電腦上的座標系有所不同。我們在電腦螢幕上習慣以左上角為起點,往右的話X軸的值增加,往下的話Y軸的值增加;不過,Kinect是以面對Kinect Sensor的方向為準,往左手邊的話則X軸的值增加,往上方的話Y軸的值增加,而往前的話則Z軸的值增加。
牛刀小試
有了上述的兩個基本觀念之後,再看看實際的範例,應該就會更有Fu啦~懶人有懶人的作法,讓我們直接使用S/L大法,以KinectSkeletonApplication專案樣版來建立一個應用程式,接著來研究裡面的程式吧!!我就把裡面幾個比較重要的地方列出來和大家分享。
為了讓抓取到的點更明顯,我將原來專案中的三個紅點以自己定義的控制項取代了,修改後的Xaml檔如下:
再來看看Code-Behind的部份(我在幾個比較重要的地方加上了註解):
好啦~~來看看執行畫面吧!!
最後一樣奉上專案原始碼,請自行取用: