ブログ@kaorun55

HoloLensやKinectなどのDepthセンサーを中心に書いています。

Kinect for Windows v1をUnityで使う

Unityを使うことが増えてきた今日この頃、みなさんいかがお過ごしでしょうか。

主要なDepthセンサーは、ほぼUnity対応が行われており、Kinect SDK v2もUnity対応されることになりました。

Kinect v1については公式なUnityパッケージがないのですが、(おそらく)有志の手によって作成されたUnityパッケージがあったので紹介します。「ユニティちゃんをKinect for Windows v1」で動かすで使ったものです。

なお、このパッケージのライセンスは今のところ僕のほうでは把握してないので、取扱いは自己責任でお願いします。またUnityはPro版でしか確認していませんが、Free版でも動くんじゃないかとは思います。

スクリーンショット 2014-06-13 15.12.37

こちらも併せて参照してください。

使い方の解説(簡易)

このパッケージを追加したいUnityプロジェクトを開いた状態で、こちらからダウンロードしたZIPを解凍してできた「Kinect1.7UnityPackage.unitypackage」を開きます。

スクリーンショット 2014-06-13 15.10.33

インポートするパッケージの内容を聞かれますので、そのままの状態でインポートします。

スクリーンショット 2014-06-13 15.10.41

Projectビューの「Assets\Scene\KinectSample.unity」がサンプルのシーンです。Kinectを接続してこれを実行すると、3Dモデルの操作、カラー、Depthの表示、スケルトンの位置表示ができます。

スクリーンショット 2014-06-13 15.12.37

ざっくり見てみましょう。

Kinectの機能はKinectPrefabにあります。本来はPrefabフォルダにあるようですが、見つからないので、他のプロジェクトで使うときにはこのPrefabごとコピペして使っています。

なお、エミュレーター機能も持っているようで、記録したKinectのデータを再生できます。

再生はDeviceOrEmulatorスクリプトのUseEmulatorにチェックをいれます。これでKinectが接続されていなくても動きを再生できます。再生するファイルはKinectEmulatorスクリプトのInputファイルになります。

記録はKinectで実行中にF10を押します。これで記録が開始されます。再度F10を押すと記録が終了します。なお、終了時にファイルへの書き込みが行われるので、2回目のF10を押す前にプログラムを終了させると記録されません。デフォルトでは上記InputファイルのAssets/Recordings/playback0が上書きされます。

キャプチャ1

モデルの動作です。

動かしたいモデルに「Assets\Script\Kinect\KinectModelControllers」にある「KinectModelControllerV2.cs」スクリプトを追加します。続いてInspectorビューの「Kinect Model Controller V2」にモデルの設定をします。Swにプレファブを、それぞれのジョイントに対応するボーンを設定します。なおCollar(襟)というのがあるのですが、対応がよく分からず。とはいえ、設定しないと動かないので、Sholderを入れておきました。

キャプチャ3

続いてカラーデータの表示です。Planeなど表示させたいものに「Assets\Script\Kinect\KinectImgControllers」にある「DisplayColor.cs」を追加します。モデルと同じように「Dev Or Emu」にプレファブを追加します。

キャプチャ2

Depthデータの表示はカラーデータと同じです。Planeなど表示させたいものに「Assets\Script\Kinect\KinectImgControllers」にある「DisplayDepth.cs」を追加し、「Dev Or Emu」にプレファブを追加します。

キャプチャ5

ほかにもスケルトンの表示などあります。基本的にすべてソースが提供されていますので、読めば何とかなるでしょう。。。