MRが楽しい

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

HoloLens2でホロモンアプリを作る その106(シェアリング実装の仕様検討)

本日はアプリ作成枠です。
HoloLens2でホロモンアプリを作る進捗を書き留めていきます。

今回からシェアリング実装を進めていきます。今回は仕様検討をまとめます。

シェアリングのプラットフォーム

今回はシェアリングのプラットフォームに Phothon を用いることにしました。
bluebirdofoz.hatenablog.com

ホロモンアプリのシェアリング実装における課題

ホロモンアプリでシェアリングを実装するに当たって大きな課題となるのが、空間マッピングの問題です。
シェアリングを行う方法として人の位置や動きなど最低限の入力のみを共有して、各デバイスで同じロジックを走らせることで同じ状況を再現する方法があります。
しかし各々のデバイスで全く同じ空間マッピングが生成されるということはないため、各デバイスで同じロジックを動かしてもホロモンが同じ動作をしてくれる保証が得られません。
よって空間マッピングとそれに対する物理演算を多用するホロモンアプリでは各デバイスで状況に応じた計算を行う方法は適切ではないと判断できます。

ホストとクライアントの動作仕様

これを踏まえて今回は以下のようにホストデバイスで全ての物理演算を行い、ホロモンやアイテムの座標やアクションのみを共有する形で実装することとしました。
いくつかの課題が発生しますが、まずは許容することとします。

・ホスト側の動作
 - ホロモンはホストデバイスの空間マッピングに基づき単体動作と同様の動きをする
 - ルームに参加したクライアントの頭部と手の座標や状態にホロモンは反応を示す

・クライアント側の動作
 - ホストデバイスにおけるホロモンやアイテムの状態をそのまま表示する
  ホロモンとアイテムに関するロジック処理やアタリ判定はクライアント内では無効化しておく
  (要はひとまず単なるビューアプリ的な感じの動作をさせる)

・シェアリング手法
 - ホストとクライアント間の通信には Photon を利用する
 - ホストとクライアントの位置合わせにはQRコードによる位置合わせを利用する
 - デバイスはHoloLens2同士の想定とする

・クライアント側から共有する情報
 - プレイヤー頭部の座標、回転、状態
  (首振り、頷き等の細かな状態判定はクライアント側で実施する)
 - プレイヤー両手の座標、回転、状態
  (こちらも手のジェスチャーの細かな状態判定はクライアント側で実施する)

・ホスト側から共有する情報
 - ホロモンの座標、回転、スケール、アニメーションの状態、ステータス?
  (クライアントから受け取った情報を含めた環境下でホロモンが動作した結果を共有する)
 - 各アイテムの座標、回転、スケール、状態
  (クライアントから受け取った情報を含めた環境下でホロモンが動作した結果を共有する)

・予想される課題
 - ホストデバイスの負荷が増える
 - 各々で計算する場合に比べて通信データ量が増える
 - ホストから離れた場所の空間マッピングが利用できない
  (空間マッピングを常に共有するのはデータ量的にあまり現実的ではない)
 - ホロモンやアイテムを掴むという操作がクライアント側はできない
  (MRTKの掴みコンポーネントの処理をクライアント側で利用できないため、自作コンポーネントを作ればできるがひとまず見送り)

こんな感じの計画で実装を進めていきます。10月末までには試せるようにしたい。