個人的にあまり興味がなかったKinectだったのですが、PCに接続できると聞き俄然興味がわきました。発売前日にamazonで注文、本日、大学に届きました。
Link: Xbox 360 Kinect センサー(amazon)
あれこれ雑務があり帰宅したのは夜11時。家族が寝静まってからごそごそ作り始めました。とりあえず時間も時間だったので簡単に作れそうなもの。。。考えたのですがアイデアが浮かばなかったので、とりあえずOliver Kreylosさんのマネ(3Dビデオカメラ)をすることにしました。
ちなみに使用機材はmacbookです。ちなみに準備が2つ必要です。KinectをPCに認識させるためのドライバとProcessing用のKinectライブラリです。手順は以下に書かれています。なぜかドライバをインストールするときにエラーがいくつか表示されますが問題なく動作します。気持ち悪いですけどね。。。
Link: ドライバ
Link: Kinectライブラリ
で、とりあえず動いたので動画にしたのが以下。ううーーん、キビシいですね。かなり間引いているのですが、openframeworksで作らないとリアルタイム処理は追いつかないような気がします。
daniel shiffmanさんのサンプルベースですが、プログラムは以下の通りです。参考まで。
import shiffman.kinect.*; color[] colors; color[] depths; float angle = 0.0; boolean flag = true; final int SIZE = 10; void setup() { size(640, 480, P3D); NativeKinect.init(); camera(0, 0, 1600.0, 0, 0, 0, 0.0, 1.0, 0.0); noStroke(); } void draw() { NativeKinect.update(); colors = NativeKinect.getPixels(); depths = NativeKinect.getDepthMap(); if (flag) angle += 0.05; rotateY(sin(angle)*1.2); scale(2.0); background(0); for (int i = 0; i < height; i += SIZE) { for (int j = 0; j < width; j += SIZE) { pushMatrix(); color c = colors[j + i * width]; fill(c); translate(j - width / 2, i - height / 2, brightness(depths[j + i * width]) * 2); box(SIZE); popMatrix(); } } } void keyPressed() { flag = ! flag; }