最高のコンピューティング環境とは?

2011-01-08

[][][]Kinectを使ってブラウザWebGL内を動いてみた

Kinectを買ったので、最近熱いWebGLの入力として使ってみた。

遊び・デモ用で汎用的には作ってない。


デモムービー

ムービーではChrome10のWebGLKinect入力の棒人間が動いてます。

Firefox4 / Safari5とかでも動きます。

Firefox3でも動かなくはないですが、WebGL非対応なので檄重です。


やってることとそれぞれのソースコード

1.Kinect --> 2.OpenNI(PC用のKinect対応フレームワーク)を使ったアプリ --[TCP]--> 3.ローカルNode.jsサーバー --[WebSocket(SocketIO)]--> 4.ブラウザWebGL(three.js)を使って表示

最初はDepthJSを使おうとしたけど、特定のブラウザでしか動かない拡張らしく、OpenCVとかも面倒だと思っていた時に、下記のサイトでOpenNIから簡単にほしい情報が取れると知ったので、OpenNIのサンプルアプリを改造して使うことにした。

sd-tech: [Kinectハック]OpenNI+Flashでマルチユーザーマルチタッチ OpenNI解析編
http://sd-tech-blog.blogspot.com/2010/12/kinectopenniflash.html
"2.OpenNI(PC用のKinectドライバ+ライブラリ)を使ったアプリ"

"OpenNI\Samples\NiUserTracker"を、TCPで体の各パーツの移動情報を投げるように改造した物。ソースのコメントにGPLとあるので下記に変更点を公開。

"3.ローカルNode.jsサーバー"

TCPで情報を受け取り、SocketIOを使って、対応していればWebSocketでブラウザに転送する。WebSocket非対応の場合他の通信方法(FlashTCP等)が使われる。

"4.ブラウザWebGL(three.js)を使って表示"

SocketIOを使って情報を受け取り、three.jsを使って対応していればWebGLで描画する。WebGL非対応の場合も描画はされるが実用的でないほど遅くなる。


現状の問題と対応

  • 大量に無駄なパケットを投げている
    • OpenNIを使ったアプリで動作の変化が少なければパケットを送らないようにするつもりだったが、Chromeでそのまま動いてしまったのため面倒なので放置

感想とか今後の予定とか

2011/02/09 追記

Macで動くようにした方がいます。Mac人気ありますね。

Mac で 「Kinectを使ってブラウザWebGL内を動いてみた」 - Scalaとlift のはずだった ・・・
http://d.hatena.ne.jp/scalar/20110123/1295756813

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証