2012年5月14日月曜日

UnityとKinectとOpenNIを組み合わせる

UnityOpenNIKinectXtion Proを使って、Unity内のオブジェクト操作する環境を構築する方法についてまとめておこうと思う。

前提条件: OpenNI一式とUnityが動作していること。
検証した環境: Mac OSX Lion、Unity 3.5、Xtion ProまたはKinect


  1. OpenNIのダウンロードページから"PrimeSene Unity Wrapper Unstable Build v0.9.7.4"(2012.5.14時点の最新)をダウンロードする
  2. ダウンロードしたopenni_unity_toolkit-0.9.7.4.zipを展開するとOpenNI_Unity_Toolkit-0.9.7.4.unitypackageが出来る。
  3. UnityのProjectにOpenNI_Unity_Toolkit-0.9.7.4.unitypackageをインポートする。方法はメニューから"Assets"->"Import Package"->"Custom Package ..."でOpenNI_Unity_Toolkit-0.9.7.4.unitypackageを選択。
  4. Unity 3.5を使っている場合、3でインポートしたパッケージ内のNIInput.csにエラーが起こるのでここを参考に次の通り修正する。295行目の"return Input.GetRotation(deviceID);"を"return Quaternion.Euler(Vector3.zero);"。306行目の"return Input.GetPosition(deviceID);"を"return Vector3.zero;"にそれぞれ書き換える。
  5. "OpenNI"->"Prefabs"->"Sample Prefabs" "OpenNI"->"Sample Scenes"にある各種サンプルをHierarchyに追加して動かしてみる。
以上だが、Cheetah3Dで自作したキャラクターにリグを組んでインポートしたら、回転と前後左右が逆になった。右手系と左手系の変換が上手くいっていないようで、久しぶりにBlenderを使おうかと。

参考
[Unity][Blender] BlenderからUnityへキャラクターをインポートする

2012.5.14 手順の5番目の記述が間違えていたので修正