この記事ではAzure Kinect(Kinect v2)を使用して公式のUnityサンプルシーンを動作させるまでを紹介します。
Azure Kinectを使用してUnityでボディトラッキングを使用する機会があったので
公式サンプルを動作させるまでの手順を記事に残そうと思います。
#####実行環境
-
Windows10 Home
-
RTX2070
-
corei7
-
Unity2019.1.2(公式サンプルが開発されたバージョン)
-
Visual Studio 2019
-
Azure Kinect SDK 1.4.0
-
Azure Kinect BodyTracking SDK 1.1.0
-
Azure Kinect DK Firmware
項目 | 各種 |
---|---|
RGB camera firmware | 1.6.108 |
Depth camera firmware | 1.6.79 |
Depth config file | 6109.7 |
Audio firm ware | 1.6.14 |
Build Config | Production |
Certificate Type | Microsoft |
#目次
-
Azure Kinectのセットアップ
-
Azure Kinect SDKを準備
-
Azure Kinect BodyTrackingを準備
-
ファームウェアの更新
-
公式のサンプルシーンを動作
-
動かない場合の修正
-
おわりに
-
参考になった記事
Azure Kinectのセットアップ
Azure KinectはPCのUSB3.0と電源に接続してください。
認識されなければUSB3.0に挿入しているか確認しましょう。
また、type-cを延長USB等を介して接続すると認識されにくいため、type-cはPCと直結しましょう。
##Azure Kinect SDKを準備
次にAzure Kinect SDKを入手します。
筆者は v1.4.0 をおすすめします。(最終的に動いたバージョンなので...)
インストール後にAzure Kinect Viewerというアプリケーションが追加されているはずなので、起動してみましょう!
##Azure Kinect BodyTracking SDKを準備
次にAzure Kinect BodyTracking SDKを入手しましょう。
筆者はv1.1.0を使用しました。msi
をクリックするとダウンロードされます。
インストール後にAzure Kinect BodyTrackingというアプリケーションが追加されているはずなので、起動してみましょう!
このようにボーンを認識し、クリック時にマウスを動かすことで視点を変えることができます。
以下のサイトを参考にKinectのファームウェアを更新してください。
##公式のサンプルシーンを動作
では、いよいよ本題に入りましょう!
私自身いろいろな記事やサイトを参考にしましたが、どれも動作しなかったため原因と解法をまとめつつ紹介していきます。
まずは、GitHubからマイクロソフトが提供しているサンプルを入手します。
*筆者は.zipで入手しました。
UnityHubを起動し、[リストに追加]から
Azure-Kinect-Samples-master\body-tracking-samples\sample_unity_bodytracking
を追加します。
ソリューションエクスプローラーから[NuGetパッケージの復元]を選択します。
完了後は下ウィンドウにメッセージが表示されます。
Unityへ戻りShow in Explorer
からプロジェクトのルートディレクトリへ移動し、MoveLibraryFiles
パッチを実行します。
実行すると必要なファイルを移動してくれます。
しかし、これだけではいくつか不足しているため手動で追加します。
先ほどのルートディレクトリにいずれもProgram Files\Azure Kinect Body Tracking SDK\
から、
・ cudnn_cnn_infer64_8.dll
・ cudnn_ops_infer64_8.dll
・ cuff64_10.dll
Unityへ戻り、SceneフォルダからKinect4AzureSampleScene
に飛びます。
実行して、Kinectの前に立つと赤い棒人間が出てくるはずですが、代わりに一番下のログに
catching exception for background thread result = K4A_RESULT_FAILED
UnityEngine.Debug:Log (object)
人によってはここまでで実行できるかもしれませんが、以下は私みたくここまでやって出来ないときの修正について書いていきます。
##動かない場合の修正
では、直していきましょう!
ScriptフォルダからSkeletalTrackingProvider.cs
の46行目の
using (Tracker tracker = Tracker.Create(deviceCalibration, new TrackerConfiguration() { ProcessingMode = TrackerProcessingMode.Gpu, SensorOrientation = SensorOrientation.Default }))
上記のコードを...
using (Tracker tracker = Tracker.Create(deviceCalibration, new TrackerConfiguration() { ProcessingMode = TrackerProcessingMode.Cpu, SensorOrientation = SensorOrientation.Default }))
Cudaがすでに導入されている場合は以下のように書くこともできます。
using (Tracker tracker = Tracker.Create(deviceCalibration, new TrackerConfiguration() { ProcessingMode = TrackerProcessingMode.Cuda, SensorOrientation = SensorOrientation.Default }))
Unityで実行してみると...
今度はちゃんと表示されました!
ちなみに.Cuda
はインストールしていれば使えます。手順はこちらのサイトでご確認ください。
#おわりに
Unityでデバイスを使用するのは初めてで解決するまでに、とても時間が掛かかりました。
サンプルを動かせたときの達成感はすごかったです。
#####解決のヒントになった記事やサイト
https://github.com/microsoft/Azure-Kinect-Sensor-SDK/issues/1600