MRが楽しい

MRやVRについて学習したことを書き残す

HoloLens2-ResearchMode-Unityを使ってHoloLens2の深度センサ情報をUnityで取得する

本日は HoloLens2 の技術調査枠です。
HoloLens2-ResearchMode-Unityを使ってHoloLens2の深度センサ情報をUnityで取得してみます。
f:id:bluebirdofoz:20210605212613j:plain

前提条件

以下の手順に基づき、HoloLens2 の ResearchMode を有効化しておきます。
bluebirdofoz.hatenablog.com

HoloLens2-ResearchMode-Unity

petergu684 氏が公開している HoloLens2 で ResearchMode 機能を使用するための Unity プラグインです。
プラグインを利用することで Unity アプリから HoloLens2 の深度センサ情報などを取り扱うことができます。
github.com

プロジェクトのダウンロード

GitHub から GIT のクローンまたは[Download ZIP]でプロジェクトファイルをダウンロードします。
f:id:bluebirdofoz:20210605212639j:plain

フォルダを展開すると、以下の2つのプロジェクトが含まれています。
f:id:bluebirdofoz:20210605212707j:plain

HL2UnityPlugin

Unity プラグインのプロジェクトフォルダです。
ソリューションファイルはフォルダ直下にある HL2UnityPlugin.sln です。

UnitySample

HL2UnityPlugin を利用してセンサ情報を表示する Unity のサンプルプロジェクトです。

Unityプロジェクトのビルド

プロジェクトを試すには UnitySample フォルダを Unity で開きます。
UnitySample フォルダにはビルド済みの HL2UnityPlugin プラグインが含まれているため、事前に HL2UnityPlugin をビルドする必要はありません。
f:id:bluebirdofoz:20210605212718j:plain

[Assets/Scenes]フォルダ配下の PointCloudSample.unity を開きます。
f:id:bluebirdofoz:20210605212729j:plain

メニューから[File -> BuildSettings]を開き、[UWP]プラットフォームを選択して[SwitchPlatform]を実行します。
f:id:bluebirdofoz:20210605212739j:plain

Tips

サンプルアプリで表示される点群データは SinglePass レンダリングに対応していないため、そのままビルドすると左目側にのみ描写されます。
両目に描写したい場合は以下の手順でマルチパスレンダリングに切り替える必要があります。

1. メニューから[Edit -> ProjectSettings]を開く。
2. [Player]タブの[XR Settings]パネルを開き、[Stereo Rendering Mode]の設定を[Multi Pass]に変更する
f:id:bluebirdofoz:20210605212753j:plain

設定を完了したら再び BuildSettings から[Build]を行います。
f:id:bluebirdofoz:20210605212802j:plain

マニフェストの設定

ビルドして作成されたソリューションファイルを開きます。
f:id:bluebirdofoz:20210605212811j:plain

ビルド設定をを[Release][ARM64]に設定します。
プラットフォームはプラグインが[ARM64]対応のため、[ARM]では動作しません。
f:id:bluebirdofoz:20210605212820j:plain

ソリューションから Package.appxmanifest をXML(テキスト)エディターで開きます。
f:id:bluebirdofoz:20210605212830j:plain

[Package]タグの[xmlns:mobile]の後に、以下の[xmlns:rescap]の設定を追記します。

xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"

f:id:bluebirdofoz:20210605212839j:plain

[Capabilities]タグの[uap2:Capability]の後に、以下の[rescap:Capability]の設定を追記します。

<rescap:Capability Name="perceptionSensorsExperimental"/>

f:id:bluebirdofoz:20210605212858j:plain

インストール先に HoloLens2 のIPアドレスの[リモートコンピュータ]または、USB接続をして[デバイス]を指定します。
メニューから[デバッグ -> デバッグなしで開始]を実行してビルドと HoloLens2 へのインストールを行います。
f:id:bluebirdofoz:20210605212909j:plain

HoloLens2上での動作確認

センサのアクセス許可を設定する初回起動時は正常に動作しないため、一度アクセス許可を設定した後、アプリを終了します。
アプリを再起動し、近距離の Depth センサ映像、点群データ、左右の環境認識カメラの映像が表示されれば成功です。
f:id:bluebirdofoz:20210605212919j:plain