When Microsoft announced that the Kinect for Windows Commercial SDK would be released in February we thought it would be interesting to take a look and see how things have moved on. For us, the best way to review the SDK was to create a small Kinect application just to see how easy or not it is! It’s worth mentioning at this point that the Commercial SDK only supports the Kinect for Windows hardware and that the Beta2 SDK supports the Xbox Kinect.
Following our initial review of the SDK, which you can download here and a sift through the sample code/applications (And yes, it was fun to see a skeleton mapped over your body) we put our thinking caps on. As well as testing the SDK we also wanted to investigate Natural User Interfaces and how a Kinect device could be used in this context.
After a number of hare-brained ideas were abandoned we decided on an interactive video wall that would allow users to navigate, select and view some of our client case study videos. Not a very ambitious project its true but it would help answer our SDK questions while also offering visitors to our offices a different way of interacting with our showcase.
So with the concept agreed we concentrated on key features including; gestures for scrolling through the video wall content, gestures to play the selected video at full screen and to return to the video wall. We opened a new project in Visual Studio and after another quick review of the sample apps started to lay down code to setup the device and draw the skeleton track. While it’s possible to work through the samples provided and determine the mechanisms for this we came across a useful tool called the KinectContrib project. The download provides you with a set of Visual Studio Templates, that will get you started with the basic setup and rendering of the skeleton map. This made it very easy to get started.
So while we setup a WPF project and started to layout the video wall it dawned on us that we needed to figure out how to do gesture recognition, which would allow us to navigate through the video wall. The Kinect SDK allows you to obtain skeleton maps, depth data and audio but gesture recognition is not included. A quick search on our favourite search engine and we came across the Kinect Toolbox project. The Kinect Toolbox provides features for gesture detection, posture detection, drawing, Skeleton record and replay, streams and voice commander.
So all that was left was for us to work out how we could replicate the hover button the Xbox games have, again a quick search lead us to the Coding4Fun Kinect Toolkit. Unfortunately, while this toolkit has some great features for WPF and the Kinect SDK it didn’t provide us with the hover button we wanted. After a couple of hours of thinking about how we could tackle this we ended up developing our own hover button. It wasn’t that difficult once we understood the skeletal data in terms of joints and displaying them on the screen.
After a few days of tweaking we finally had a working prototype of our Kinect video wall player, although a simple little application it helped us demonstrate how Kinect and Natural User Interfaces are evolving but also made us think in a completely different way when approaching user interface design for applications that don’t use mouse or keyboards.
The last interesting takeaway we have is how easy it was to build applications using the Kinect SDK. Don’t get us wrong we know we only built a small application but we were impressed with how quickly we could get to a stage of demonstrating an application that uses Kinect as the input device.
You can find out more about the Kinect for Windows here http://www.microsoft.com/en-us/kinectforwindows/