Project 3: Gesture Controller

The goal of this project is to gain familiarity with developing applications that use the Kinect sensor. You will be creating two different controllers for selecting on-screen targets. Selection is a basic operation of just about any user interface, but selection techniques can vary based on input modality (e.g., mouse vs. game controller) and use case (e.g., productivity apps vs. entertainment). Your challenge is to pick an application area and design two different Kinect-based gesture controllers for selection. At this point, your thinking should be divergent: choose two approaches that are interestingly different!

Be creative! Selection can be achieved in any number of ways. You could move your hand over a target ("touch"), at a target ("point"), or away from it ("pull"). You might experiment with different aspects of motion and timing. Use your application area to help you navigate the design space. Select what is the most interesting and appropriate for your envisioned users. How might different designs enable faster or more accurate selection? Avoid false positives? Reduce fatigue? Etc...

We will provide scaffolding code for the Kinect application, including an API that your controller should follow and a user interface built in WPF for testing and demonstration. We recommend that you use the Microsoft Kinect SDK and our provided scaffolding code. However, you are free to develop your own framework (e.g., using open source libraries) if you prefer, so long as you adhere to the approach and constraints of the assignment. You are also free to modify the scaffolding code if you find it useful to do so. If you are unsure of a modification, contact the course staff.

You can download the scaffolding code from:

Deliverables. There are three primary deliverables, all due on Friday January 27 by 2pm. The project should be submitted in the form of a link to a project web page. Email the URL for your P3 page to cs247@cs.stanford.edu. Your web page should include the names of all project members as well as the following:

  1. Design sketches
    Keep a record of your P3 design process, including brainstorming ideas and design sketches. Include a short textual description of your rationale for the two controllers you chose to implement. Include within your sketches your envisioned users and their context of use: where, when, and why would people want to use your controllers? Use your project web page to tell the "story" of how you developed your controllers.

  2. Demonstration video
    Please make a short demo video (no more than 2 minutes long) showcasing your working gesture controllers. Upload the video to YouTube or Vimeo and embed it in your project page.

  3. Project code
    Turn in a zip archive of your development workspace, including all source code. We should ideally be able to simply open the project in Visual Studio to compile and run the application. Please provide any special instructions if needed. Your P3 web page should include a hyperlink to your code archive.

You must work in groups of five for this assignment. Find a team that you will likely want to work with for the final project.

30%   Design sketches and process log.
60%   Gesture controller implementation and fit to application area.
10%   Video demonstration of controllers in action.
P3 Grading Rubric

P3 Submissions and Tournament


Please feel free to e-mail us at cs247@cs.stanford.edu if you have any questions.