ベスパリブ

プログラミングを主とした日記・備忘録です。ベスパ持ってないです。

Unityでキネクトの使い方

キネクトの環境設定は以下を参照

http://unitygeek.hatenablog.com/entry/2012/09/03/194047

上の設定を行えば、ProjectビューにScenes/KinectExample.unityというサンプルプロジェクトが手に入る。それを開けばUnityでキネクトを使用するテストが行える(XBOX360キネクトで動作確認)。

 

・自分の腕の座標を取得したい。

自分の腕の座標を取得すれば、色々やりたいことができるはず。が、やり方がよくわからない。

ところで上記のテストプロジェクトでrainbowMan_v6とかいうモデルが動かせるが、こいつの腕の座標を取得すれば同様のことができるはず。

というわけで「rainbowMan_v6」と「Kinect Prefab」と「KinectAvatar」をプレハブ化し、自分のプロジェクトに追加する。

あとは自分のプロジェクト上でもサンプルプロジェクトみたいに動かせるようになれば良い。

「rainbowMan_v6」に「Kinect Model Controller V2」スクリプトを追加。SwやHip_canterなどのモデルパーツをサンプルプロジェクトのように適応させる(参照:

http://unitygeek.hatenablog.com/entry/2012/09/03/194047

これできっと動くはず。動かなければ、サンプルプロジェクトをよく見て頑張って同じ環境にしよう。

 

・rainbowMan_v6の腕の座標を取得したい。

腕の座標はどのへんが良いだろうか。手首あたりで良いか。

というわけでヒエラルキービューの、/rainbowMan_v6/skeleton/root_joint/hip_center/spine/right_collar/right_shoulder/right_elbow/right_wristの座標を取得することにする。

Gameobject.Find関数を使ってright_wristのゲームオブジェクトを取得でき、Transform.position.xやらで座標は手に入る。おわり。

ちなみにプレビューしてもright_wristのPositionは変化しないことに気づく。これは相対座標が表示されているからである。ワールド座標はきちんと動いているので上記の方法で座標は手に入る。

 

・rainbowMan_v6が邪魔

「rainbowMan_v6」の子、「root_joint」の「Skinned Mesh Renderer」のチャックをはずす。これで描画されなくなる。

 

・Unityのキネクトライブラリの詳細

下記のサイト様に詳しい情報が。

http://izmiz.hateblo.jp/entry/2014/02/19/114715

読み解けば、自分の座標を正しい方法(?)で設定できるような気がします。