夜風のMixedReality

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

複数のHoloLens 2でホログラムを共有する その⑤ 実機でホログラムを共有する

本日はSharing勉強枠です。

HoloLens 2ではデバイスをかけている人のみがホログラムを見ることができますが、HoloLens 2が複数台ある場合は一つのホログラムを複数人で操作することができます。

前回はAzureSpatialAnchorsのアカウントを作成しUnity上のプロジェクトと対応させました。

redhologerbera.hatenablog.com

今回は対応させたAzureSpatialAnhorをアプリ内で利用するところを行います。

〇ASAを実行するボタンの配置

①hierarchyウィンドウから[SharedPlayground]オブジェクトを展開し、[TableAnchor]オブジェクトを展開します。

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

②[Buttons]プレファブを[TableAnchor]オブジェクトの子オブジェクトとして配置します。

 [Buttons]プレファブはAssets/MRTK.Tutorials.MultiUserCapabilities/Prefabs/Buttons.prefabに存在します。

③[Buttons]オブジェクトを展開し、[StartAzureSession]という名前の最初の子ボタンオブジェクトを選択します。

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

④Inspectorウィンドウから[Interactable]コンポーネントの[OnClick()]に[TableAnchor]オブジェクトをアタッチし、関数に[AnchorModuleScript→StartAzureSession]を選択します。

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

[Interactable]コンポーネントはMRTKによって提供されるアクションに対してのリアクションを実行するコンポーネントです。

ここではボタンを押すことで[TableAnchor]オブジェクトのAnchorModuleScriptコンポーネント、StartAzureSession関数が実行されます。

これによってAzureSpatialAnchorが初期化されます。

⑤同様に[CreateAzureAnchor]オブジェクトの[Interactable]コンポーネントの[OnClick()]に[TableAnchor]オブジェクトをアタッチし、関数に[AnchorModuleScript →CreateAzureAnchor]を選択します。また引数のゲームオブジェクトには[TableAnchor]オブジェクトをアタッチします。

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

これによってアンカーが作成されます。

⑥同様に[ShareAzureAnchor]オブジェクトの[Interactable]コンポーネントの[OnClick()]に[TableAnchor]オブジェクトをアタッチし、関数に[ SharingModuleScript → ShareAzureAnchor ]を選択します。

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

これによってアンカーがほかのデバイスにシェアされるようになります。

⑦最後に[GetAzureAnchor]オブジェクトの[Interactable]コンポーネントの[OnClick()]に[TableAnchor]オブジェクトをアタッチし、関数に[ SharingModuleScript → GetAzureAnchor]を選択します。

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

これはシェアされているアンカーを入手してオブジェクトの座標を合わせます。

以上で準備が完了しました。

〇実機で確認

実機では2台のHoloLens 2が必要となります。

1台目で[StartAzureSession]、[CreateAzureAnchor]、[ShareAzureAnchor]の順でボタンを押します。

2台目で[StartAzureSession]、[GetAzureAnchor]を選択することで位置が同期することができます。

こちらは筆者のワンオペでは難しかったため動画ができ次第掲載します。