At first glance, it appeared that the world of Processing was one flourishing with innovation, new artists, new medias, and endless possibility…but then I finished the tutorials and started to venture out on my own. My interest in utilizing the Kinect V2 hardware with Processing is taking me down quite the path. This is a path with many forks that inevitably lead me down one of two paths: partially forged trails, with no clear direction and well-forged trails which have become overgrown and unusable due to unsue in recent years.
While not entirely surprising or even extremely troubling, it does take more research and scavenging to find the right resources than I have had to deal with when working in more robust and popular languages (such as Java, which Processing is based on, and C++, which is my go-to for Kinect related development).
To be fair, I am asking a lot. I am asking for the latest version of Processing (which is still in beta) to allow me to use the Kinect V2 fully on an OS not fully supported by Kinect Devs: Mac OS X. No wonder why the path seems so desolate.
For the few Processing libraries that support the Kinect on Mac, OpenKinect and SimpleOpenNI are the mainstream powerhouses. Only OpenKinect works with the Kinect V2 AND Processing 3.0. SimpleOpenNI is unfortunately no longer recognized by Processing 3.0 and seems to have a bit of trouble with the V2 Kinect. Add in the fact that the SimpleOpenNI community is no longer active (thanks Google Code…) and you have the makings of some long nights and sad results.
OpenKinect is wonderful and is by far the best solution for anyone crazy enough to want to program in Processing 3.0 with the Kinect V2 on the Mac, but just does not fully harvest all of the amazing features of the Kinect just yet.
For that reason, I am returning to the very start of the path, crossing a bridge, and starting on a path that seems far more promising and – if I’m lucky – populated. That path is Kinect development on Windows. With the Kinect V2 SDK and hundreds of Microsoft tutorials (although, typically in C++ and C#), I am now entering the native territory for Kinect dev. This is a good start, by all means. Even if I wanted to jump into development with Java, I can easily start doing so thanks to the popular Java for Kinect (J4K) library. All great news so far.
How about Processing, then? A little less friendly and a little less paved, so far. I found a library created by Thomas Lengeling called KinectPV2. From the examples alone, it is clear that I will have the ability to really harness the hardware of the Kinect sensor through this library. From face tracking to masking, a lot of great opportunities emerge from this library. But I am not entirely sold just yet.
I started my journey into Processing on the recommendation of a trusted mentor so as to explore the space, become familiar with the language, and begin to experiment with related technologies. For hardware with a larger fan base (looking at you Arduino), I can imagine that Processing may just be the golden ticket to minimal work and amazing results. The Kinect, however, is incredibly exciting to me as hardware both for installations and advanced multimedia projects.
Don’t believe me? Check out all of the amazing work involving the Kinect presented at Carnegie Mellon’s Art && Code: DIY 3D Sensing and Visualization festival. Four years ago, this event took place and the work remains beyond my capacity today. From my research, it appears that the artists primarily work with C++ and C#, a language which I am still crazy new to despite using to develop my most recent Kinect installation, HappyHappyRevolution.
So what does this mean for me/my work moving forward? Well, that’s difficult to say. If I remove my fixation with the Kinect, I can easily break into Processing development with web cams, touch pads, Arduino, sound, and more. But that all feels a bit stale and “DIY-culture” to me. The works at Art && Code so perfectly capture the dynamism, progressivity, and boundless optimism that I am chasing with my artistic and programmatic development. I may very well have to jump ship and begin devoting my resources to learning and practicing more Java or C++ so that I can fully realize the various ideas and projects I have in mind, all of which utilize the Kinect in some capacity. That said, I’d prefer not to overwhelm my already fading memory of Java with an entirely new language, thus I need to decide how to best proceed sooner rather than later.
The options, as I see them, are as follows:
- Push my Processing practice further and jump into development on Windows. This includes investigating the J4K library further, especially in relation to the SDK.
- Dust off Eclipse and start to boost my Java skills with projects involving the Kinect.
- Learn C++! Going from Java to C++ is rough but not impossible – I would, however, prefer to keep pushing my growth in one language (Java) rather than multiple at this early stage.
I am curious to see which solution makes the most sense. As I continue to research and push myself, I am starting to appreciate the value in mastering Java but love how easy and intuitive Processing is proving to be, even despite lockups with out-of-date libraries and communities.