読者です 読者をやめる 読者になる 読者になる

Unityな日々(Unity Geek)

Unityで可視化アプリを開発するための試行錯誤の覚書

KINECT SDKを使う その1・環境設定編

参考:Microsoft Kinect - Microsoft SDK - Unity3D

UnityでKINECTを使う。方法はいくつかあるが、正攻法でMicrosoftのSDKを使ってみる。
注)以下はすべてWindows7以降の環境で行うこと。Macは非対応。


1.KINECT SDKをインストールする
Develop for Kinect | Microsoft Kinect for Windowsの”Download SDK"をクリック。
下のページから”DOWNLOAD LATEST SDK"と”DOWNLOAD TOOLKIT"をクリックして各々のセットアップ実行ファイルをダウンロード。
ダウンロードしたセットアップファイルを実行して、KINECTドライバーや開発キットをインストールする。(詳細省略)


2.KINECTのUnity用ラッパーを準備する
KINECTラッパーのUnityパッケージは、からダウンロードする。
これは、Microsoft Kinect - Microsoft SDK - Unity3Dの、"Kinect Wrapper Package for Unity3D"からでもアクセスできる。


Unityエディターからインポートする。
f:id:yasuda0404:20120903193320j:plain
f:id:yasuda0404:20120903193339j:plain

KINECTラッパーPackageをインポートした状態は次。
f:id:yasuda0404:20120903193335j:plain

ここで、Kinect/KinectInterop.csを修正する必要あり!
上記サイトのラッパーは、KINECTのベータリリース用のもの。正式版のSDKではDLLの場所が異なるため、このままではエラーになってしまう。
解決するには、Kinect/KinectInterop.cs ソースファイルの305~338行(コメント等のため多少前後するかも)にあるのDLLのパスをすべて、

C:\Program Files (x86)\Microsoft Research KinectSDK\MSRKINECTNUI.DLL

から

 C:\Windows\System32\Kinect10.dll

に変更する。全9箇所ある。修正後のKinectInterrop.csの該当部分。
f:id:yasuda0404:20120903193552j:plain

(参考:Microsoft Kinect SDK Wrapper For Unity Crash Bug Fix


3.KINECT用のシーンを作成する。

上述のラッパーには、Unityのサンプルシーン"KinectExample"がある。これを実行すれば、即Kinectのデモが可能。

マニュアルで行う手順は次の通り。(パッケージのモデルデータを利用する)


プロジェクトウィンドウ、Models/rainbowMan_v6(ボーンモデル)と、Prefabs/Kinect_Prefab(Kinectエンジン)を、ヒエラルキーウィンドウにドラッグ&ドロップ
f:id:yasuda0404:20120903193816j:plain

ヒエラルキーウィンドウのrainbowMan_v6を選択。。インスペクター上で、変数SWに"Kinect Prefab"をアサイン。
その他のモデルパーツは、次のようにアサインする。
f:id:yasuda0404:20120903193942j:plain


以上で、KINECTを通してモデルデータが動くデモができる。



ラッパーには別のモデルデータ、"KinectPointMan"が入っている。こちらは各関節ノードを取り出したモデル。
プロジェクトビューから"KinectPointMan"をヒエラルキービューにドラッグ&ドロップ。
f:id:yasuda0404:20120903194002j:plain

注)"KinectPointMan"は"rainbowMan_v6"より小さい。約10倍すると同等の大きさになるので、必要に応じてXYZ各スケールを変更する。

ヒエラルキービューで"KinectPointMan"を選択。
インスペクタービューで、変数SWに"Kinect Prefab"をアサイン。

これで、関節を球体であらわしたモデルも動く。