Be The Controller... The Project


Today's Gallery post comes via the Kinect for Windows SDK Forum post, Easy Pose and Gesture Recognition with “Be the Controller” projectGeneric Episode Image

How could this not be included in the Kinect Gallery?  Wink

Be the Controller Project

Be the controller is a developer’s tool kit made by Nicolas Hadjimina as part of his MSc in Computer Games Technology dissertation at the City University London. This tool aims to help programmers easily recognize user’s pose and gestures, using the Microsoft kinect controller and perform the appropriate actions. The project is divided into two parts:

1) A windows application (PoseAndGestureGenerator.exe), which allows a developer to create a list of poses and gestures that he want to recognize in his application, using an easy to use graphic interface.

2) A library (Bethecontroller.dll) which provides the infrastructure to the developer of an application to recognize the set of poses and gestures he created with the PoseAndGestureGenerator project.

The tool calculates all the relations relative to the user’s body so the position of the user in the environment is not important for the recognition of a pose as far as the kinect controller can track the user’s skeleton.

The Pose and Gesture generator, the library (dll file) and a guide how to use the project are available under the download section.

Project Information URL:

Project Download URL:

Project Documentation URL:



Available is a sample game that uses the library. Here's a code snip of the library in use;

public Game1()
      //load pose and gesture files
      graphics = new GraphicsDeviceManager(this); = true;
      Content.RootDirectory = "Content";

  void KinectNui_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
      SkeletonFrame allSkeletons = e.SkeletonFrame;
      skeleton = (from s in allSkeletons.Skeletons
                  where s.TrackingState == SkeletonTrackingState.Tracked
                  select s).FirstOrDefault();

protected override void Draw(GameTime gameTime)

     // TODO: Add your drawing code here
     Matrix view = Matrix.CreateLookAt(new Vector3(0, 0, -20), new Vector3(0, 0, 100), Vector3.Up);
     Matrix projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4,

     // Draw the current primitive.
     GeometricPrimitive currentPrimitive = primitives[currentPrimitiveIndex];
     Color color = Color.Black;
     DrawPrimitveSkeleton(currentPrimitive, view, projection, color);
     if (startcastingRight) DrawPrimitveStartSword(primitives[1], view, projection, BTCHelper.Hand.Right, Color.WhiteSmoke);
     if (startcastingLeft) DrawPrimitveStartSword(primitives[1], view, projection, BTCHelper.Hand.Left, Color.WhiteSmoke);
     if (swortLeft) DrawPrimitveSword(primitives[0], view, projection, BTCHelper.Hand.Left);

     if (swortRight) DrawPrimitveSword(primitives[0], view, projection, BTCHelper.Hand.Right);

     // Reset the fill mode renderstate.
     GraphicsDevice.RasterizerState = RasterizerState.CullCounterClockwise;