The binary file supplied should be executable. I have supplied two programs, the SphereChanger and Device. SphereChanger is executable whereas the Device class is a framework for whatever device you would like to connect to. In order to compile the code, the following steps are required: Under Project Properties -> C/C++ -> General -> Additional Include Directories, add Path to OpenNI\Includes Path to OpenGL includes Path to Java SDK... \Java\jdk1.6.0\include Path to Java SDK win32 \Java\jdk1.6.0\include\win32 (example) \kinect\project\v0.2.1\cs1635 Under Project Properties -> Linker -> General -> Additional Library Directories, add Path to OpenNI\lib Program Files\OpenNI\Samples\NiSimpleViewer\Libs Under Project Propertier -> Linker -> Input -> Additional Dependencies, add OpenNI.lib Finally, the programd can accept either a .ONI file as input or run from the Kinect. The lines marked for this are located in SceneDrawerMain.cpp and are tagged by CHANGE INPUT so that a quick find will take you where to go. One of the following two lines must be commented. The first line requires the full path to the .ONI file. The second line simple initializes it to run from the Kinect. The section above was for both programs, I shall now describe individual components. SphereChanger No calibration necessary. Simply wave to start the program. After you wave the program will then begin tracking your hand. It is possible to resize the sphere by moving your hand. When you have decided on the proper size for the sphere, simply perform the click gesture and it will finalize the size. Once this is done, the color can then be adjusted by again moving your hand. Finally, once the color is selected, click again and you can then get the sphere to follow your hand. One final click terminates the program. Device Device is simple a skeleton framework designed for interacting with any device. It contains the following pieces: This structure contains the gesture information required to tell the Kinect to begin looking for a gesture. struct Gesture{ XnChar* name; int GestureID; XnBoundingBox3D* box; } The getGestureDefs function is called from SceneDrawer and retrieves the gestures defined when the Device is initliazed. std::vector getGestureDefs() sendGesture is called by GestureRecognizer and is used to send a recognized gesture to the Device. int sendGesture(const XnChar* name); updatePosition is used mainly as a debugger and is sent a value whenever hand movement is detected. int updatePosition(const XnPoint3D *loc); Gestures is a vector that contains all the gestures that the device requires to be informed of. std::vector Gestures; The Device initializer msut define the Gestures vector. This is also where you would place the code to start the device. sendGesture must be defined to tell the device what to do when a gesture is recognized. updatePosition will be constantly receiving information once everything is loaded and once the Kinect starts tracking the user's hand.