Unity 2019以降ではPackege ManagerによるWindows XR PluginによるHoloLens 2アプリ開発が推奨されています.
Unity 2019でのHoloLens開発環境の設定項目
HoloLensアプリ開発用にUnityにUWPのモジュールを追加します.(Unity 2019からUWPビルドはIL2CPPのみサポートされます.)
Build SettingsのPlatformをUWPに変更
Windows XR Pluginを利用する場合XR Settingsは変更しないでください
Windows XR Pluginの導入
Unity 2019からは今までのUnityEngine.XR.WSA.Inputから利用できる機能ではなくWindows XR Pluginを利用するように推奨されています.
UnityEngine.XR.WSA.Inputを利用したジェスチャー入力の使い方はHoloLens 2で利用できるジェスチャー入力について(Unity 2018編)へ
Windows XR Pluginのドキュメントはこちら
https://docs.unity3d.com/Packages/com.unity.xr.windowsmr@2.0/manual/index.html
Window/PackageManagerから
Windows XR Pluginをインポートします.
Pluginインポート後Project SettingsのXR Plugin Managementから必要な設定と追加のプラグインを導入します.
UnityのScene設定
カメラにTracked Pose Driverをアタッチして以下のように設定値を指定します.
ハンドトラッキング用のGameObjectにTracked Pose Driverをアタッチして左右それぞれに設定を行います.
ここまでの設定でHoloLens 2のカメラとハンドの追従が行えるようになります.
ジェスチャー入力の実装方法
ハンドトラッキングまではWindows XR Pluginで行えるのですが,AirTapの利用がプラグインから見つけられなかったのでUWPの関数から検出を行うことにしています.
|
|
利用する機能によってはUWP,Unity共に動作可能なThreadが異なります.
InvokeOnUIThreadとInvokeOnAppThreadを利用することで適切なThreadに切り替えを行う必要があります.
- UI ThreadよりAirTap情報を取得できる
SpatialInteractionManagerを取得しイベントを登録します. 今回はAirTapの検出なのでPressとReleaseのみですが,ハンドの検出・検出終了・更新のイベントも利用できます.
|
|
- イベント取得後のUnityへの反映時にはUnity Threadに戻ってくる必要があるので
InvokeOnAppThread内でGameObjectなどに反映させます.
|
|
実際にWindows XR Pluginを利用して両手のハンドを利用した動画とサンプルプロジェクトが以下になります.
GitHub : HoloLens2InputSampleWithUnity
まとめ
- プラグインを導入することでUnity Scene内のみでカメラとハンドの追従までできる
- Hand Meshや関節情報の取得は行えない