「[Kinectハック]OpenNI+Flashでマルチユーザー・マルチタッチ」で使っていた
OpenNI解析アプリがexe化できたので、「SD_KinectIO」として公開します。
手の情報だけじゃなく、すべてのスケルトン情報を送るように改良しました。
ソケットサーバーの知識さえあれば、これを使って誰でもKinectで遊べますよ。
[2011/1/6追記]
OpenNIのライセンスがLGPLなので、exeではなくソースを公開します。
OpenNIをインストールして、OpenNI/Samples/に下記のファイルを展開してください。
source: SD_KinectIO_source_v0_1.zip
■ソケット通信仕様
クライアントからは下記に接続します。
IP: 127.0.0.1
TCP Port: 3000
■通信内容
内容はカンマ区切りで送っています。
デリミタはFlashの通信仕様に合わせてNull文字にしています。
"ユーザーID","部位ID","状態","x座標","y座標","z座標" (Null)
(例)
1,1,add,100.223,600.032,1534,302
1,1,update,140.344,632.323,1523,324
1,1,remove,0,0,0
ユーザーID:1~10
部位ID:1~24
状態:add,update,remove
部位の対応リストはこんな感じ。
HEAD = 1 NECK = 2 TORSO = 3 WAIST = 4 LEFT_COLLAR = 5 LEFT_SHOULDER = 6 LEFT_ELBOW = 7 LEFT_WRIST = 8 LEFT_HAND = 9 LEFT_FINGERTIP =10 RIGHT_COLLAR =11 RIGHT_SHOULDER =12 RIGHT_ELBOW =13 RIGHT_WRIST =14 RIGHT_HAND =15 RIGHT_FINGERTIP =16 LEFT_HIP =17 LEFT_KNEE =18 LEFT_ANKLE =19 LEFT_FOOT =20 RIGHT_HIP =21 RIGHT_KNEE =22 RIGHT_ANKLE =23 RIGHT_FOOT =24
ただ、OpenNIから値が来ていない部位もあり、
有効な部位だけをまとめるとこんな感じ。
■使い方
[注意] KinectドライバとOpenNIが必要です。
KinectドライバとOpenNIをインストールして下さい。
ダウンロードしたファイルから「SD_KinectIO_.exe」を起動します。
起動すると「クライアント接続」待機状態になります。
ファイアーウォールを有効にしている場合は、セキュリティ警告がでるので、
「ブロックを解除する」を選択します。
クライアント側からSocket通信で上記のIP/ポートに接続します。
接続テストだけならSocketDebuggerがオススメです。
クライアント接続後、しばらくするとカメラウィンドウが開きます。
Kinectの前に立って、手を90度に曲げながら上に上げるとキャリブレーションが始まります。
キャリブレーションが終わるとクライアントへスケルトン情報が送られます。
Flash側の解説はまた今度。
-> [Kinectハック] SD_KinectIOをFlashで受ける
こんばんは。
返信削除SD_KinectIO_.exeを起動して
「クライアント接続」待機状態になった後、
カメラウィンドウが開きません。。。
kinectのドライバ/OpenNIはインストール済みです。
(kinectのLED操作など行えているので、問題ない状態だと思います)
何か原因など分かりますでしょうか?
ご指摘ありがとうございます。説明が一部抜けてました。
返信削除「クライアント接続」待機状態でクライアントからSoket通信で接続してください。
このあたりの説明を記事に追記しています。