Blog
祢次金です。
昨年末に話題になったKinectを使って、プロジェクタスクリーンをタッチパネル化するアプリケーションを作ってみましたのでご紹介したいと思います。
Kinect自体の説明については他所に譲りますが、オープンソースのKinectドライバが公開されてから今まで、実に多くの人々がKinectで面白い実験を行っています。Kinectでピアノを作った人までいます。
Kinectは赤外線によって深度情報が取れますので、単なる机や床に対しても擬似的にタッチを検出することができるわけです。
そこで私も先ほどの例に倣い、プロジェクタ画面に落書きをするアプリケーションを書いてみました。
KinectのドライバとしてはOpenKinectを使い、タッチの検出周りの実装にはopenFrameworksとそのアドオンであるofxKinectを使っています。またofxOscアドオンを利用し、検出したタッチ情報をOSCメッセージとして、描画担当のAdobe AIRアプリケーションに送出しています。AIR側でのOSCの受信にはTUIO as3ライブラリを使いました。
大まかには以下のような流れで処理が進みます。
- Kinectのカメラ映像の中でタッチスクリーン化したい平面を選ぶ。
- 選んだ平面から距離が一定以内にあるオブジェクトを検出。
- オブジェクトの検出をタッチと見なし、平面上でのその座標をOSCメッセージに載せ送出。
- AIRアプリケーションがOSCメッセージを受け取り、描画。
- あとは2から4の繰り返し。
ものすごい駆け足になりましたが、Kinectでプロジェクタスクリーンをタッチパネル化するアプリケーションをご紹介しました。誤差も大きくてまだまだ課題はありますが、これを色々な大画面タッチアプリケーションに応用できたら楽しそうです。
また、マイクロソフトから正式にKinect SDKも提供される予定だそうで、こちらにも非常に期待です。音声認識もできるとさらに夢が広がるのですが。皆さんもこの夏、Kinectを導入して面白いUIを作ってみてはいかがでしょうか?
それでは。
Tag