Want to develop for Kinect (before the SDK) with .NET - what are the options?
Join the DZone community and get the full member experience.Join For Free
Let's face it - you can't wait to develop application with Kinect. The official SDK is not out yet, but you have an abundance of ideas and you have experience developing .NET applications for Windows. Do you still have to wait for the official SDK to be able to try what Kinect is capable of? Nope. There are two options you have in order to be able to build your dream application.
OpenNI.NET is definitely the most complete framework you can get. It is a wrapper around the standard OpenNI libraries, developed by PrimeSense - the guys that sold their IR depth recognition hardware patent to Microsoft. It has everything you need, other than support for the Xbox Motor. You would need the KinectMOD for proper drivers on top of existing OpenNI libraries for proper Kinect interactions.
It might seem a bit too complicated to configure and use in the context of a .NET application, but eventually it is totally worth it given that the depth sensor and the camera are the primary components you need. The wrapper is distributed as a part of the open-source distributable package of OpenNI (if you need the source-code itself) or as a DLL (part of the binary distribution).
One problem I found about OpenNI is the lack of decent documentation. But with enough experimentation and "challenge accepted" attitude, this can easily be dropped as an issue (hint: learn to use Reflector).
You can download OpenNI here.
The most active Kinect-related project. It heavily relies on libfreenect as the foundation for everything it provides. The older version of the OpenKinect wrapper is able to provide support for the hardware motor while the newer versions don't work so well in the Windows environment. Because of compatibility problems, libfreenect is not exactly compatible with the .NET invocation scheme. That being said, trying to use the .NET build in Visual Studio will most likely cause this problem:
There is a workaround to this, if you decide to work with MonoDevelop. This problem is not specific to the Mono Framework and it can easily invoke libfreenect through a standard DllImport. The biggest problem I hear people complaining about is the compilation from source process. It is very well documented on the official page here.
The demos supplied with the project are sufficient to get you started in every context possible (related to the device), but you also have tons of documentation available in the official wiki.
You can download OpenKinect here.
By the way...
That being said, Kinect SDK is right around the corner, so I would highly recommend experimenting with the libraries mentioned above to quickly get the idea of the framework itself.
Opinions expressed by DZone contributors are their own.