Kinect Exploration – Big Update
September 30, 2011 § Leave a comment
[ Sorry for the long 2-week silence, here’s an update on what I’ve been working on. ]
Once I managed to get blob tracking working for the kinect portion of the project, I realised that OpenCV doesn’t actually track them. So I searched around for potential libraries that could help. Flobs looked promising, but it didn’t appear to work for me. One annoying feature of the ‘Windows labs’ in Architecture (University of Sydney), is that you have to use Internet Explorer, which turns all google searches to local (Australia based) instead of global. This however, resulted in the discovery of a previous blog post that contained pseudocode aimed at addressing this issue. I then adapted this pseudocode for my own purposes to track the blob in my application (based on a dissimilarity score determined predominantly by location).
The next major problem was figuring out camera control in a 3D environment. Quite a large amount of time was spent figuring out the mathematics behind 3-dimensional viewpoints, even looking at openGL’s camera control. It turned out that the built-in camera() function in processing worked perfectly for my purposes (a function which I had initially dismissed due to errors from some mis-cast variables).
This allowed me to implement a two handed wheel into my application. It essentially worked by users holding up an imaginary wheel in front of them, and rotating and moving it around, like one does when driving a car.
Some basic user tests were done to refine the parameters of the system, however, further tests revealed that two hands was too much, and one handed control would be a larger benefit to the user interaction design.
As such, a one handed control scheme for navigation in a 3d space, was implemented. After the creation of a navigable 3D space, it was found that users felt it awkward if one axis was inversed, and the other was not. Considering this, users quickly adapted to the navigation-control scheme, whether it was fully inversed, or fully normalized.
Below is a video of the current Kinect portion of the project. (The control scheme for navigation is normalized here).