There don't seem to be many universally recognised patterns for 3D gestures, such as you might use to interact with something like the Kinect. A previous question looks at Kinect gestures, but there aren't too many satisfactory answers.

Given that, it seems like developers have to work from scratch on gestures - this isn't ideal, and could be solved by creating a decent pattern library, like this one for multi-touch gestures.

The question, therefore, is this: what methods can be used to create such a library? What principles should be followed, and are there any common techniques for establishing patterns like this (patterns for creating patterns, if you will)? And are there any considerations unique to 3D gestures?

4 Answers 4


I'd like to quote a couple of paragraphs from Buschmann et al.'s "On Patterns and Pattern Languages":

A pattern documents a recurring problem–solution pairing within a given context. A pattern, however, is more than either just the problem or just the solution structure: it includes both the problem and the solution, along with the rationale that binds them together. A problem is considered with respect to conflicting forces, detailing why the problem is a problem. A proposed solution is described in terms of its structure, and includes a clear presentation of the consequences -- both benefits and liabilities -- of applying the solution.

The recurrence of patterns is important -- hence the term pattern -- as is the empirical support for their designation as patterns. Capturing the commonality that exists in designs found in different applications allows developers to take advantage of knowledge they already possess, applying familiar techniques in unfamiliar applications. Of course, by any other name this is simply ‘experience.’ What takes patterns beyond personal experience is that patterns are named and documented, intended for distilling, communicating, and sharing architectural knowledge.

If you agree with their reasoning, perhaps you should look at the following things:

  • Research existing pattern languages from different domains.
  • Investigate as many gesture-driven applications that you can find.
  • See what commonalities exist between the applications when it comes to interaction/gestures.
  • Observe users using these systems.
  • Identify common problems that users encounter.
  • Try to discern why the users struggle.
  • Identify common interactions that users do not struggle with.
  • Look at other literature to describe human motion (this may be slightly out of scope, but there have been some work in dance choreography to capture "patterns")
  • Compile an initial catalog of recurring problems-with-solutions.
  • Share your catalog with experienced interaction designers/developers, and revise (or maybe even start over).

From what I can remember, Dan Saffer attempted to create a library of standardised gestures in his book Designing for Gestural Interfaces.

It's a few years since I read it so I couldn't tell you how widely these patterns have been adopted, but it's certainly worth checking out before you re-invent the wheel.


A gesture library written for the Kinect a while back is explained here: Link

The post goes into some detail about how they are created and recognized. Basically it is watching the various joint locations in relation to each other. As one moves, a series of checks determines if a gesture is in process or has completed.

You can interpret the method beyond the Kinect.

If the Kinect is your destination platform, I've updated the code for the above library to the latest SDK. You can find it here: http://www.exceptontuesdays.com/gestures-with-microsoft-kinect-for-windows-sdk-v1-5/


You may wish to check out this http://www.ted.com/talks/pattie_maes_demos_the_sixth_sense.html Their main website is here http://www.pranavmistry.com/projects/sixthsense/

I am not sure whether the gestures are documented, but you can see a lot of them from the videos.

or this guy http://www.ted.com/talks/view/lang/en//id/872

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.