Azure Spatial Anchorsの空間アンカーをHoloとスマホで共有したい
Hololensとスマホで空間を共有したい案件が出てきた
ということで一番文献が多いだろうAzure Spatial Andhorsを使用してみる
想定環境は以下の通り
- Unity 2021.3.2f1
- HoloLens2
- Pixel 4a 5G android 12
- MRTK 2.7.2
- ARFoundation
iwakenさんのZenn記事を参考にしつつ、公式のチュートリアルを進めてみる
まずはHoloの実装をしてみる
あまりMixed Reality Feature Toolを使うのが好きではないので、いまはチュートリアルの通りにすゝめ
そのあとにUPMを使えるように心づもりしておきたい
MS LearnのASAチュートリアル
MS公式docsのASAの記事
公式docsのクイックスタートで使われるAzureから出ているASAのチュートリアル
これが一番有名な気がする
あとOpenXRとMRTKをUnityで使うサンプルでもASAのサンプルが同梱されているので参考になりそうだし
こっちのほうがシンプルで良い
HoloLensであれば、Unityのプロジェクトを1から作れるチュートリアルもある
ちゃんと勉強するならこちらをやるのが良さそうな気がしている。いったんこれを進めてみようかな
適当にifディレクティブで囲めばAndroidへのビルドもできるのではないか
デバイス間での共有はサンプルプロジェクトを実行しろとのことだったので残念
ん-そしたらサンプルからやってみて、あとで↑をやってみて理解を深めるか?
ドキュメントにASAパッケージのことが書いてあった
パッケージネームさえわかればMRfeaturetool使わなくて済みそう
Unityでアンカーを作成する方法について詳細に書いてあるが、
認証とかの文脈も入ってちょっと読みづらい
これだけではあまり理解できなさそうなので、いろいろ試してから読み返してみようかな
他の記事
詰まったら確認してみたい
horioさんのQiita
がちもとさんのQiita
とりあえずまずはクイックスタートのHoloLensからやってみる
MRFeatureToolアプデして、クローンしたリポジトリのUnityディレクトリに
- asa core
- asa android
- asa windows
をインポート
サンプルの動作を確認した
MRTKが入っていないピュアなプロジェクトなのでちょっとUIにビビったが、普通に実行できた
sharingのサンプルも試している
なんかWebサイトが上手くデプロイされないな~~~と唸っていたら
発光ボタン押してないだけだった......
コードの中にAADの情報を入れる場所があったけど、ここはノータッチでも大丈夫なんだ
ひとまずここで切る
WebサーバーはASP.NETがわからないなりに読んでみたが、
どうやらアンカーのキーをメモリキャッシュに保存したりCosmosDBに保存したりするらしい
AppSerivrces は20分でタイムアウトするため、メモリキャッシュが消えるので
永続化したい場合はCosmosDBなどを使うと良い
まだ動作確認すらできていないけど、
WebAppsにデプロイしたASP.NET Coreサーバーの実装を見ていた
シンプルなAPI鯖なのだけども、内容としては
- anchorNumberというlong型をGETで受け取ってanchorKeyというstring型のレスポンスを返す
- anchorKey:stringをPOSTで受け取って内部のanchorNumberをインクリメントして登録する
というシンプルなものだった
とりあえず{long anchorNumber, string anchorKey}
というデータを保存できていればよいのかな
せっかくなので、オブジェクトの表示を共有したい
アンカーの姿勢を基準にGameObjectの姿勢をholo⇔android間でosc通信をして、
リアルタイムで反映させたい
androidでオブジェクト移動させるのはUX的にアレなので
基本はHoloでの作業をAndroidに反映させる形になりそう
OSCライブラリの選定
keijiroさんが出しているJackOSCを最近知ったので使いたかったが、
Requirementsに2021.3 or Laterと書いてあったので、とりあえず保留
あとはhecomiさんのuOSC
こちらは元から知っていたので、これを使おうと思う
と思ったらJackOSCの1.0.3なら2019 or Laterだった
けどまぁどっちでもいいんだよなぁ
AndroidとHoloで動けば
ということでuOSCを使う
オブジェクトを手で持って移動させたかったので、そのためにMRTKを入れたら
途中でデモアプリの進行ができなくなってしまう事態が発生
これはMRTKが悪さをしていそうなので
デモアプリで凝った挙動を実装するのはやめておこう