雨時々グリーンカレー

はるひのなにか

Unity2017でKinectV1を扱う

備忘録的にKinectV1を利用した際の事について書いておきます。

  • 用意するもの

Unity2017
KinectV1
Kinect for Windows SDK v1.8(v1.7)
Kinect Wrapper Package for Unity3D(パッケージ)

Unityのバージョンはたぶん5系統でも問題ないです。

現行はKinectV2でそちらの方が色々やりやすいらしいです。

 

  • とりあえず動かすまで

まず、SDKを落としてインストールする。インストールの後、勧められるデベロッパー用ツールはなくても動かせます。そもそもそれどうやって使うのか知らないですけど

Unityを起動してKinect Wrapper Packageをインポートする。

インポートが無事終わったら、”KinectSample”Sceneを開いてKinectを接続します。必要なドライバ等は勝手にインストールされます。

Sceneを再生して右側の画面に撮影された映像が表示されレインボーマンが動いたら成功です。

NuiInitialize Failed.が出る場合はKinectの接続しなおしやPCの再起動などをしてください。これでできなかったら木の下に埋めてもらって構わないよ!

  • 任意のモデルを動かす

 任意のモデルを任意のシーンに持ってきて、Script>Kinect>KinectModelControllersにあるKinectModelControllerV2.csを任意のモデルにアタッチします。また、必ず忘れずに”KinectSample”SceneにあったKinectPrefabプレハブを任意のシーンにコピペします(1敗)

モデルにアタッチしたスクリプトの各欄に対応したボーンを当てはめて埋めます。モデルのよっては名前と対応する位置が違うので、”KinectSample”にあったレインボーマンをお手本にボーンの位置を確認するといいと思います。当てはまるものが無ければ適当に埋めといたらいいと思います。

Swの欄にはKinectPrefabを入れてください。

それを終えれば再生すると動くと思います。

こんな感じ

f:id:frawrle:20180124181947p:plain

参考までに自分が使ったユニティちゃんのボーン設定置いときます

f:id:frawrle:20180124182621p:plain

・おまけ

Script>Kinect>KinectImgControllersにあるDisplayColor.cs(通常カメラ用)やDisplayDepth.cs(深度カメラ用)を任意のオブジェクトにアタッチするとそのオブジェクトの面に撮影された映像が表示されます。DwにKinectPrefabを入れるのを忘れないように。上の動画の後ろの影はDisplayDepth.csを適用したものです。

 

Kinect Wrapper Packageには他にも色々機能があるらしいのですが今のところ触ったのはここまでです。気が向いたら追記します。