夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

OpenXR な開発環境StereoKitを始める

本日はHoloLensの開発環境調査枠です。

またHoloLens Adevntカレンダー2021 9日目の記事です

〇HoloLens Adevntカレンダー2021とは?

HoloLens Adventカレンダーは技術関連投稿サイトのQiita上で毎年12月に開かれているイベントの一つです。

あるテーマに沿って12月1日から25日までの間毎日誰かしらが情報共有を行うというイベントになっています。

HoloLens Advent カレンダーは初代HoloLensがリリースされた2016年より毎年開かれ今年で5年目となっています。

qiita.com

〇StereoKitとは?

StereoKitはMicrosoftによって提供されているMixedRealityアプリ開発に特化したVisualStudio向けのライブラリです。

Unityを使用することなくVisualStudio上でC#アプリとしてアプリケーションを作成することができます。

これはMixedRealityToolkit for Unity同様Oculus Quest 2等のデバイスにも対応しています。

公式では[StereoKit ハッカソン]が開催されています。

docs.microsoft.com

〇導入

①以下のサイトから[Stereokit]のテンプレートをダウンロードします。

marketplace.visualstudio.com

f:id:Holomoto-Sumire:20211211215234p:plain

②ダウンロードした[.vsik]ファイルをダブルクリックし、展開します。

f:id:Holomoto-Sumire:20211114093344p:plain

f:id:Holomoto-Sumire:20211114094106p:plain

③VisualStudio2019を開き新規プロジェクトを作成、テンプレートから[Stereokit.Net Core]を選択します。

f:id:Holomoto-Sumire:20211114094203p:plain

④ソリューションが作成されます。Program.csがメインの関数です。

f:id:Holomoto-Sumire:20211114094616p:plain

④実行することでウィンドウが開き手とCubeが表示されます。Unityでの開発同様Cubeを動かすことができます。

f:id:Holomoto-Sumire:20211211215446p:plain

〇HoloLensへデプロイする

①HoloLensでStereoKitを使用するにはStereoKitのテンプレートから [StereoKit UWP]を選択します。

f:id:Holomoto-Sumire:20211211201027p:plain

②[Program.cs]を表示するとエラーが発生することがあります。

f:id:Holomoto-Sumire:20211211213845p:plain

これはネームスペースが足りていないためです。

③エラーを解消するためにソリューションをビルドします。

f:id:Holomoto-Sumire:20211211214116p:plain

これによってエラーが解消されます。

④Unityのソリューションファイル同様[Device]、[Arm64]でビルドします。

f:id:Holomoto-Sumire:20211211214502p:plain

以上でStereoKitのアプリが実機にデプロイされます。

youtu.be

トラブルシューティング

実行時にウィンドウが固まってしまう問題がありました。

エラーコードを見てみるとVarjo関連でエラーが発生していることがわかりました。

20211114 9:55:16.420 ERR [Varjo::Session::setError] varjo_GazeInit: Error: Gaze not connected
[SK diagnostic] Using system:
[SK diagnostic] OpenXR depth LSR ext enabled!
20211114 9:55:16.421 WAR [Varjo::Session::setBackwardCompatibilityOptions] Disabling off-center projection matrices due to SDK version < 1.2
20211114 9:55:16.422 ERR [Varjo::Session::setError] varjo_GazeInit: Error: Gaze not connected

筆者環境ではOculus Link環境のほかVarjoBaseも導入していたためこれが原因であると判断してVarjoBaseをアンインストールすることで問題が解消されました。