Today I made a touch and hold style menu system for my Celestia project. It works by tracking a player’s hands, comparing where and for how long they are ‘hovered’, and if a certain time target is reached an event is fired.
The tricky part is to make this modular so that many different menus can be created without reinventing stuff. Currently this only works for rectangular areas but I will enhance this to cater for circles and irregular shapes soon.
An interesting thing I had to consider here is that the active area around a player must be scaled in such a way that all menu items can be reached without stretching, but is small enough that items aren’t triggered by accident. I think this will mainly be trial and error, and I may not have time to change the scaling based on how far away from the camera the player stands.
So now I have voice controls and touch menus from Microsoft’s SDK and full-body gesture controls from NITE. I have to decide whether to re-create the NITE stuff in the Kinect SDK, wait for someoe else to make a library of gesture controls in the SDK or to use an SDK->NITE binding (which doesn’t even exist yet). For now, though, I think I’ll go to bed.