#はじめに ( ※執筆途中 )
__MWC 2019 Microsoft 基調講演 ( Mobile World Congress @ Barcelona )__で発表された、
「 Azure Spatial Anchors 」を使って、HoloLens
と Google Pixel 3
のアンカー情報を共有してみる。
目次
1. What's Azure Spatial Anchors !?
2. 本記事を読んで実現できること
3. 前提条件 ( 開発環境 )
4. HoloLens
単体サンプル 動作確認 ( Unity )
5. アンカー共有サービス ( ASP.NET ) をデプロイする
6. HoloLens
, Google Pixel 3
で仮想オブジェクトの配置情報を共有する ( Unity )
7. 終わりに
1. What's Azure Spacial Anchors !?
現実空間をトラッキングしたデータ ( 空間情報 ) をクラウド上で管理・複数端末間で共有できるサービスです。
本サービスを利用することで、アンカー情報 ( 空間トラッキング + 仮想オブジェクトの配置位置 ) を、
複数端末で、永続的に (再)利用することが可能 になります。
「 Tutorial: Sharing across sessions and devices with Azure Spatial Anchors 」より抜粋。
拡張現実 (AR) プラットフォームでは、"アンカー" は、 複数のユーザーが同じ物理的な場所にデジタル コンテンツを配置できるようにするための共通座標系 です。さまざまなデバイスで、環境を基準に同じ位置と向きでコンテンツを表示できます。Azure Spatial Anchors を使用すると、アンカーの永続性とアクセス許可を追加し、ユーザーが近くのコンテンツを見つけることができるように、アプリケーション内でアンカーに接続できます。「 Azure Spatial Anchors 」より抜粋。
クロスプラットフォーム対応
Azure Spatial Anchors は、以下、__クロスプラットフォームのマルチデバイス__に対応しています。
- Microsoft HoloLens
- iOS端末 ( ARKit 対応 )
- iOS 11.0 or later 〔 ex. iPhone SE 以降 〕
- Android端末 ( ARCore 対応 )
- Android 7.0 or later 〔 ex. Pixcel 3, Galaxy S9 〕
2. 本記事を読んで実現できること
Microsoft HoloLens
と、Google Pixel 3
の2つのデバイス間で、空間情報を共有する。
[ 動画 ] を張り付ける!
想定されるユースケース ( Azure Spatial Anchors )
- マルチユーザーエクスペリエンス
ー ( マルチユーザー、マルチデバイスでの体験共有 )
-
道案内
ー ( アンカー情報のリレーションシップ作成 ) -
仮想オブジェクトの現実世界での永続化
ー ( 配置した仮想オブジェクトの配置位置データを記録 )
「 Azure Spatial Anchors overview 」より、抜粋。
【 参考 】 Google Pixel 3 ( XL ) で、「 Azure Spatial Anchors 」を試してみた!
会社の先輩の Google Pixel 3 XL
を無理やりパクリ、以下__Android端末 2台__で動作検証してみました。
-
Google Pixel 3 (
検証用端末
) - Google Pixel 3 XL ( @torisankanasan の私物 )
Azure Spatial Anchors、Google Pixel 3 (XL)で動かしてみました!想像以上に、精度が良い。#Azure #AzureSpatialAnchors #Pixel3XL pic.twitter.com/Vd2YagwjRu
— Futo Horio@xRエンジニア (@Futo_Horio) 2019年3月27日
3. 前提条件 ( 開発環境 )
-
Surface Book 2 (
Windows 10 Pro
) -
Unity (
2018.3.8f1
) - ARCore SDK for Unity v1.7.0
-
Microsoft Visual Studio (
Community 2017
) -
Android Studio (
3.3.2
) -
Azure アカウント (
発行済み
) - デプロイ端末
-
Android端末 ( ex.
Google Pixel 3
) -
Windows端末 ( ex.
HoloLens
) -
iOS端末 ( ex.
iPhone XS
)
4. HoloLens 単体サンプル 動作確認 ( Unity )
本章では、以下、公式チュートリアルに従い、作業を進めます。
開発環境
-
開発環境
-
Windows 10 Pro ( 開発者モード オン )
-
デプロイ端末
-
Microsoft HoloLens ( Windows 10 - Build xxx )
(1) Spatial Anchors リソースを作成する ( Azure Portal )
「リソース作成
」ボタンを押下し、「Spatial Anchors
」を検索する。
「*リソース名
」「*サブスクリプション
」「*リソースグループ
」「*リージョン ( 場所 )
」を指定します。
※ リージョンに関しては、現時点で「East US 2 ( 米国東部 2 )
」のみ選択可 (2019/03/27)
「アカウントID ( = Account ID )
」と「プライマリキー ( = Accout Key )
」をメモします。
※ 後で、Unity上で使用します。
以上で、Azure Portalでの作業は終了です。
(2) Unity上で、サンプルプロジェクトを開きます。
VSCode ターミナルより、git clone
を実行する。
git clone https://github.com/Azure/azure-spatial-anchors-samples.git
クローンができたら、Unity上でプロジェクト ( Unityフォルダ ) を読み込みます。
このサンプル自体が、Unity 2018.3.6f1 で開発されているため、アラートが表示されますが、
「 Continue 」 ボタンを押下し、次に進みます。
File
> New Scene
より、以下シーンファイルを開きます。
Assets/AzureSpatialAnchorsPlugin/Examples/AzureSpatialAnchorsBasicDemo.unity
AzureSpatialAnchors にアタッチされている「 AzureSpatialAnchorsDemoWrapper
」に以下、値を入力します。
- Spatial Anchors Id ( = Account Id )
- Spatial Anchors Key ( = Primary Key )
シーンの保存が終われば、次はUWP用のビルド設定を行います。
Ctrl + Shift + B
にて、「Build Settings」タブを開き、
プラットフォームを「UWP」、ターゲットデバイスを「HoloLens」に変更し、
「Switch Platform」ボタンを押下します。
※ プラットフォームをUWPに変更した途端、シーン選択領域が狭くなります、、。汗
エクスポート先のディレクトリ「UWP」を新規作成し、ビルドを実行します。
(3) 実機確認 ( HoloLens )
では、実機で動作確認してみましょう。
#MWC19 Microsoft 基調講演で、#HoloLens2 と共に発表された、「Azure Spatial Anchors」の公式チュートリアル試してみた。「AzureSpatialAnchorsBasicDemo ( Unity ) 」#HoloLens #Azure #AzureSpatialAnchors pic.twitter.com/eMxS2DUhKc
— 堀尾 風仁 / Futo Horio (@Futo_Horio) 2019年3月22日
【 サンプルアプリ処理フロー 】
Next: Create Azure Spatial Anchors Session
Next: Configure Azure Spatial Anchors Session
Next: Start Azure Spatial Anchors Session
Tap a surface to add the Local Anchor
Next: Save Local Anchor to cloud
Saving local Anchor to cloud...
Next: Stop Azure Spatial Anchors Session
Next: Create Azure Spatial Anchors Session for query
Next: Start Azure Spatial Anchors Session for query
Next: Look for Anchor
Looking for Anchor...
Next: Delete Anchor
Next: Stop Azure Spatial Anchors Session for query
Next: Restart demo
Azure Portal 画面上からも、正常に動作していることが確認できます。
5. アンカー共有サービス ( ASP.NET ) をデプロイする。
マルチデバイス間で、アンカー情報をやり取りするためのWebアプリをデプロイします (サンプル)
(1) Visual Studioを開き、「Sharing\SharingServiceSample」フォルダーを開きます。
(2) 「SharingService.sln」をダブルクリックします。
(3) 「Azure App Service」を発行します。 ( Azure ログイン済み )
発行先を__「 App Service 」__に選択し、発行ボタンを押下。
(4) 「App Service」のリソース、サブスクリプション等を指定し、作成ボタンを押下する。
(5) 作成ボタンを押下すると、アプリが発行されます。(1~2分)
(6) アプリの発行が終わると、ブラウザ上でアプリが起動します。
※ 後で、こちらのURLを使用するので、メモしておくこと。
https://sharingservice-xxxxxxxxxxx.azurewebsites.net/index.html
6. HoloLens
, Google Pixel 3
で仮想オブジェクトの配置情報を共有する ( Unity )
本章では、HoloLens
と、 Google Pixel 3
のデバイス間で、アンカー情報の共有をしてみたいと思います。
(1) 必要な作業項目
- Azure Spatial Anchors 作成 ( Azure Portal ) ※ 作成済み
- Azure App Service ( Web Apps ) 作成 ※ 作成済み
( --- 以下、新たに作業が必要となります --- )
- GitHubサンプル 「 AzureSpatialAnchorsLocalSharedDemo.unity 」 を実機へデプロイ
- Android向けアプリをデプロイ ( Google Pixel 3 )
- UWP向けアプリをデプロイ ( HoloLens )
- iOS向けアプリをデプロイ ( iPhone XS ) ※TBD
6-1. Android向けアプリをデプロイ ( Google Pixel 3
)
【 Unity 】Android 開発環境の構築手順 を参考に、Andoroid向けのビルド環境を整える。
【 環境構築 ( 手順 ) 】
- Android Studio インストール
- Java JDK ( Java Development Kit ) インストール
- Android NDK ( Native Development Kit ) セットアップ
後述の理由にて、なかなかAndroidアプリがうまく動作しなかったので、
まずARCoreのサンプルプログラムで、「 Hello AR 」をしてみた。
【 参考 】 ARCore で、「 Hello AR 」してみた!
Google Pixel 3
で、ARCore
に入門してみた! ( 動画 )
AzureSpatialAnchorsをどうしてもAndroidで動かしてみたかったので、ARCoreに入門してみた。#ARCore #HelloAR pic.twitter.com/8L2XLCO6m1
— Futo Horio@xRエンジニア (@Futo_Horio) 2019年3月26日
Hello World できた瞬間は、いつだって嬉しいですね。笑
Unity上で、サンプルコードを開きます。
[ Azure-Spatial-Anchors-Samples
] > [ Unity
]
サンプルシーンを開き、各種値を入力します。
「 Unity\Assets\AzureSpatialAnchorsPlugin\Examples\AzureSpatialAnchorsLocalSharedDemo
」を開き、
以下、3つの値を追加します。
- ※ Base Sharing Url
- Spatial Anchors Account Id ( = Account Id )
- Spatial Anchors Account Key ( = Primary Key )
※ Base Sharing Urlは、5.で発行したWebアプリのURLの末尾を、
「index.html」から「api/anchors」に修正したものを入力します。
「https://sharingservice-〇〇〇〇〇.azurewebsites.net/api/anchors 」
ARCoreをインポートし、ビルドセッティングをAndroidにセット。
省略
6-2. UWP向けアプリをデプロイ ( HoloLens
)
6-3. iOS向けアプリをデプロイ ( iPhone XS
) ※TBD
(2) 実際にアプリを起動し、検証してみる!
7. 終わりに
最後までお読みいただき、ありがとうございましたー! いやー、長かった。。
記事を書きながらなので、進捗出すのに苦戦しましたが、記事に残しているからこそ、思考の深掘りができ、
「 Azure Spatial Anchors 」への理解が、少し深まったような気がします!
参考文献
- Microsoft HoloLens 2 ( 公式サイト )
- 公式ドキュメントを元に、Azure Spatial AnchorsをiOSとAndroidで試してみた
- マルチデバイス間でシェアリングできるAzure Spatial Anchorsをやってみた(HoloLens、iOS、ARKit)
皆さま、情報公開ありがとうございます!
キーワード ( 解説 )
Spatial ( スペーシャル )
【 形容詞 】: 空間の、空間に存在する、空間的広がりのある、空間的な
Anchor ( アンカー )
【 名詞 】: ≪海事≫ いかり
【 自動詞 】: いかりを下ろす、投錨する
【 他動詞 】: 〔船を〕いかりで固定する、~をしっかりと固定する
ASP.NET
マイクロソフトが開発・提供しているWebアプリケーションフレームワークで、
動的なウェブサイトやWebアプリケーションやXML Webサービスの開発や運用を行う。
Gradle ( 読み : グレードル )
Gradleは、進化系のビルド自動化ツールです。Gradleは、ソフトウェアパッケージはもちろん、その他様々な形式のプロジェクト ( 例えば自動生成された静的Webサイトやドキュメント等 ) のビルド・テスト・ ( ライブラリ等の ) 公開・デプロイ・その他を自動化します。「 Gradle入門 」より引用。