Slide 1

Slide 1 text

Azure Spatial Anchors と Photon を使った マルチユーザーシェアリングについて ― HoloLens 2, iOS, Android 神 戸 デ ジ タ ル ・ ラ ボ 新 事 業 創 造 係 堀 尾 風 仁 x R D e v e l o p e r s C o m m u n i t y C o n f e r e n c e ( 2 0 2 0 / 0 8 / 3 1 ) M S 公 式 チ ュ ー ト リ ア ル 徹 底 解 説

Slide 2

Slide 2 text

堀 尾 風 仁 株 式 会 社 神 戸 デ ジ タ ル ・ ラ ボ 新 事 業 創 造 係 M R 班 M i x e d R e a l i t y ア プ リ ケ ー シ ョ ン 企 画 / 開 発 に 従 事 コ ミ ュ ニ テ ィ 運 営 A R K O B E ( 2 0 1 9 - ) A z u r e T e c h L a b . ( 2 0 1 9 - ) M i c r o s o f t M V P f o r W i n d o w s D e v e l o p m e n t ( 2 0 2 0 - 2 0 2 1 ) ※ 本 日 の 資 料 、 発 表 内 容 に 誤 り を 見 つ け ら れ た 場 合 は ご 指 摘 い た だ け ま す と 幸 い で す 。

Slide 3

Slide 3 text

01. Multi-user capabilities チュートリアル概要 02. Azure Spatial Anchors / Photon について 03. チュートリアル手順 解説 04. まとめ ア ジ ェ ン ダ

Slide 4

Slide 4 text

01. Multi-user Capabilities チュートリアル概要 H o l o L e n s 2 公 式 チ ュ ー ト リ ア ル

Slide 5

Slide 5 text

な ぜ 今 M i c r o s o f t H o l o L e n s 2 公 式 チ ュ ー ト リ ア ル の 話 な の か ? Microsoft 公式 HoloLens 2 チュートリアルが MRTK v2.4.0 バージョンアップに伴い更新されました ( 全5種類 ) U P D A T E https://docs.microsoft.com/en-us/windows/mixed-reality/tutorials

Slide 6

Slide 6 text

M u l t i - u s e r C a p a b i l i t i e s チ ュ ー ト リ ア ル 概 要 ( 1 ) ASA = Azure Spatial Anchors (略称) 動画を貼り付ける

Slide 7

Slide 7 text

実際のデモの様子

Slide 8

Slide 8 text

Azure Spatial Anchors と Photon を使って複数人での ホログラム の共有を実現できるチュートリアル 1. Spatial Alignment (空間位置合わせ) 2. リアルタイム (低遅延) での CG 共有 ASA = Azure Spatial Anchors (略称) シェアリングに必要な機能 - Spatial Mapping HoloLens はどのように CG 配置・固定を行っているのか? - Spatial Anchor ≒ World Anchor ? M u l t i - u s e r C a p a b i l i t i e s チ ュ ー ト リ ア ル 概 要 ( 2 )

Slide 9

Slide 9 text

02. Azure Spatial Anchors / Photon について ク ロ ス プ ラ ッ ト フ ォ ー ム で シ ェ ア リ ン グ を 実 現 す る た め の 仕 組 み

Slide 10

Slide 10 text

M i c r o s o f t H o l o L e n s 2 に 搭 載 さ れ て い る セ ン サ ー 系 ① 慣性計測装置 ( IMU : Internal Measurement Unit ) ⇒ 加速度センサー、ジャイロセンサー(角速度)、磁力センサー ② 可視光カメラ (4つ) ⇒ ヘッドトラッキング用 ③ カメラ ⇒ 画像/ビデオ撮影、画像認識用 ④ 深度センサー ⇒ 1-MP TOF ( Time of Flight ) 深度センサー ⑤ 赤外線 (IR) カメラ (2つ) ⇒ アイトラッキング用 H o l o L e n s 2 が 仮 想 オ ブ ジ ェ ク ト ( C G ) を 配 置 ・ 固 定 す る 仕 組 み ( 1 )

Slide 11

Slide 11 text

H o l o L e n s 2 が 仮 想 オ ブ ジ ェ ク ト ( C G ) を 配 置 ・ 固 定 す る 仕 組 み ( 2 ) ① 6DoF ( six degrees of freedom ) 各種センサーなどで取得した周辺環境の情報から、 自己位置の推定と地図の作成を同時に行うこと。 ② SLAM ( simultaneous localization and mapping ) 3次元において剛体が取り得る動きの自由度のこと。 AR / MR で 仮想オブジェクト (CG) を配置・固定する上で重要となる2つの概念 Y軸 X軸 PITCH Z軸 ROLL YAW HoloLens ではこれらの技術概念について Spatial Mapping ( with Spatial Anchor ) と呼ばれる機能で提供しています。

Slide 12

Slide 12 text

S p a t i a l M a p p i n g / S p a t i a l A n c h o r ( L o c a l A n c h o r ) と は ? 各種センターデータを用いて Spatial Map (空間マップ) を作成し、空間マップ内にアンカーを配置することで CG を永続的に固定 Unity の World Anchor コンポーネントを GameObject にアタッチすることで、Spatial Anchor を実現します。 Spatial Mapping データは接続中の Wi-fi に紐づき永続的に保存・管理される [ Device Portal ] > [ 3D View ] - Spatial Mapping - Spatial Anchor 2つのデータを閲覧・保存可能 Spatial Anchor Spatial Mapping ・Anchor = 錨 (いかり)

Slide 13

Slide 13 text

W o r l d A n c h o r は ア プ リ を 起 動 し た 際 に 生 成 さ れ て い る オフィスや自宅などで開いたアプリケーションウィンドウが後日同じ場所に残っている経験ないですか? ローカルディスクに保持された World Anchor 情報は永続的に保存されたままになる。

Slide 14

Slide 14 text

W o r l d A n c h o r 情 報 は H o l o L e n s 設 定 画 面 か ら 削 除 す る こ と が で き る 1. 近くのホログラムを削除 アプリケーションウィンドウの World Anchor は [ 設定 ] > [ システム ] > [ ホログラム ] から削除することができます。 2. すべてのホログラムを削除 過去に同じ場所で作成したアンカーを一括で削除 過去に作成した全てのアンカーを一括で削除 ※ Spatial Map (空間メッシュ) が更新され、 ウィンドウの表示に異常が起こった場合など アンカーの削除が可能です。

Slide 15

Slide 15 text

S p a t i a l M a p p i n g / S p a t i a l A n c h o r ( L o c a l A n c h o r ) と は ? 各種センターデータを用いて Spatial Map (空間マップ) を作成し、空間マップ内にアンカーを配置することで CG を永続的に固定 Unity の World Anchor コンポーネントを GameObject に追加することで、Spatial Anchor を実現します。 Spatial Mapping データは接続中の Wi-fi に紐づき永続的に保存・管理される [ Device Portal ] > [ 3D View ] - Spatial Mapping - Spatial Anchor 2つのデータを閲覧・保存可能 Spatial Anchor Spatial Mapping ただし、World Anchor は HoloLens の Anchor 管理方法 https://docs.unity3d.com/ja/2019.2/Manual/wmr_input_types.html

Slide 16

Slide 16 text

A z u r e S p a t i a l A n c h o r s ( C l o u d A n c h o r ) と は ? ( 1 ) マルチプラットフォーム ( HoloLens, iOS, Android ) で アンカー情報の共有を可能にする Azure サービス https://docs.microsoft.com/en-us/azure/spatial-anchors/concepts/guidelines-effective-anchor-experiences#stable-visual-features Create an effective anchor experience by using Azure Spatial Anchors より画像引用・改編 Anchor データ ・空間トラッキングデータ (特徴点) ・仮想オブジェクトの配置位置 [ Anchor 利用時の注意点 ] ・特徴点の少ない部屋では精度が低い ・家具配置が変更される場所では利用不可 [ 対策 ] ・ポスターやモノを置くことで 特徴点を増やすことができる 空間に配置された仮想オブジェクト

Slide 17

Slide 17 text

A z u r e S p a t i a l A n c h o r s ( C l o u d A n c h o r ) と は ? ( 2 ) https://github.com/Azure/azure-spatial-anchors-samples/blob/master/Unity/Assets/AzureSpatialAnchors.SDK/Scripts/SpatialAnchorExtensions.cs どうやって マルチプラットフォーム ( HoloLens, iOS, Android ) の Anchor の共有を実現しているのか? SpatialAnchorExtensions.cs - HoloLens の World Anchor を Azure Spatial Anchor で扱えるように変換 AzureSpatialAnchors.SDK に内包されるコンポーネント 関数名 : ApplyCloudAnchor - ARFoundation パッケージを使用して、 ARKit / ARCore のアンカーを ASA 用に変換

Slide 18

Slide 18 text

A z u r e S p a t i a l A n c h o r s ( C l o u d A n c h o r ) と は ? ( 3 ) Azure Spatial Anchors を使うとどのようなことが可能になるのか? マルチプラットフォームで コンテンツの位置合わせが可能に コンテンツの永続化 Way-Finding ( 道案内 ) https://docs.microsoft.com/en-us/azure/spatial-anchors/overview

Slide 19

Slide 19 text

A z u r e S p a t i a l A n c h o r s ( C l o u d A n c h o r ) と は ? ( 3 ) Azure Spatial Anchors を使うとどのようなことが可能になるのか? マルチプラットフォームで コンテンツの位置合わせが可能に コンテンツの永続化 Way-Finding ( 道案内 ) https://docs.microsoft.com/en-us/azure/spatial-anchors/overview ASA は、リアルタイムでの 仮想オブジェクト (CG) 位置の共有はできない = Spatial Alignment (空間位置合わせ) のみに使用される

Slide 20

Slide 20 text

P U N – P h o t o n U n i t y N e t w o r k と は ? Exit Games 社 ( アメリカ/ドイツ ) が提供する マルチプラットフォーム 対応の Unity ネットワークエンジン PUN ( Photon Unity Network ) を使用すると、複数人で低遅延なコンテンツの共有が可能になります。 https://www.photonengine.com/ Photon Cloud ( 同時接続20人まで無料 ) マスターサーバー ゲームサーバー ロビー ( Lobby ) ルーム1 ( Room ) ルーム3 ( Room ) ルーム2 ( Room ) ユーザー作成、ルーム作成 (入室) ルーム内ユーザーとCGを同期

Slide 21

Slide 21 text

M u l t i - u s e r C a p a b i l i t i e s T u t o r i a l s の シ ス テ ム 構 成 HoloLens 2 (ユーザー1) HoloLens 2 (ユーザー2) ルーム Azure Spatial Anchors PUN ( Photon Unity Network ) ロビー Anchor データを ID で管理

Slide 22

Slide 22 text

M u l t i - u s e r C a p a b i l i t i e s T u t o r i a l s の シ ス テ ム 構 成 HoloLens 2 (ユーザー1) HoloLens 2 (ユーザー2) ルーム Azure Spatial Anchors PUN ( Photon Unity Network ) ロビー Anchor データを ID で管理 ユーザー作成、ルーム作成 (入室)

Slide 23

Slide 23 text

M u l t i - u s e r C a p a b i l i t i e s T u t o r i a l s の シ ス テ ム 構 成 HoloLens 2 (ユーザー1) HoloLens 2 (ユーザー2) ルーム Azure Spatial Anchors PUN ( Photon Unity Network ) ロビー Anchor データを ID で管理 オブジェクトの生成、同期 この時点で、オブジェクトの同期のみ (※位置は同じでない)

Slide 24

Slide 24 text

M u l t i - u s e r C a p a b i l i t i e s T u t o r i a l s の シ ス テ ム 構 成 HoloLens 2 (ユーザー1) HoloLens 2 (ユーザー2) ルーム Azure Spatial Anchors PUN ( Photon Unity Network ) ロビー Anchor データを ID で管理 アンカー生成・保存、ID生成 (共有)

Slide 25

Slide 25 text

M u l t i - u s e r C a p a b i l i t i e s T u t o r i a l s の シ ス テ ム 構 成 HoloLens 2 (ユーザー1) HoloLens 2 (ユーザー2) ルーム Azure Spatial Anchors PUN ( Photon Unity Network ) ロビー Anchor データを ID で管理 IDを元にアンカー情報取得、位置合わせ オブジェクトが同じ位置に表示され、同期されている状態

Slide 26

Slide 26 text

03. チュートリアル手順 解説 H L 2 公 式 チ ュ ー ト リ ア ル 手 順 解 説

Slide 27

Slide 27 text

本 資 料 の 検 証 環 境 ・Windows 10 バージョン 1903 以降 ・Windows SDK 10.0.18362.0 以降 開発用PC : Windows 10 Pro 使用ソフトウェア 一覧 ・Unity 2019.3.15f1 ・UWP - ユニバーサル Windows プラットフォーム Build Support ・IL2CPP - Windows Build Support ・ARFoundation 3.1.3 ( ARKit・ARCore Plugin 3.1.3 ) ・PUN 2.21 / Photon lib 4.1.4.4 ・Visual Studio 2019 Community ・Version 16.6.2 Android へデプロイする場合 ・ARCore をサポートした Android 端末 ( ex. Pixel 3 ) ・Android Build Support モジュール ( Unity ) iOS へデプロイする場合 ・ARKit をサポートした iOS 端末 ( ex. iPhone XS ) ・iOS Build Support モジュール ( Unity ) ・MacOS搭載PC ( XCode, CocoaPods ) https://docs.microsoft.com/en-us/windows/mixed-reality/mr-learning-sharing-01 Microsoft HoloLens 2 ・Windows 10 バージョン ( 10.0.19041.1113 ) ※ 公式チュートリアル とは違うバージョン

Slide 28

Slide 28 text

1. Unity インストール & プロジェクト作成 2. Switch Platform を実行 3. TextMeshPro Essential Resource をインポート 4. MRTK v2.4.0 をインポート / ASA アカウント作成 5. MRTK プロファイル編集 6. Custom Package のインポート & AR Foundation のインストール 7. PUN ( Photon Unity Network ) アカウント準備 8. Unity アセットストアより PUN アセット (無料) をインポートする 9. Unity シーンの編集 ( Prefab 追加、PUN 設定 etc.. ) 10. Unity ビルド実行 11. Visual Studio 2019 で HL2 向けにビルド&デプロイを実行 12. 実機検証 チ ュ ー ト リ ア ル 手 順 1. HoloLens 2 へのデプロイ手順 2. iOS へのデプロイ手順 3. Android へのデプロイ手順 https://docs.microsoft.com/en-us/windows/mixed-reality/mr-learning-sharing-01 赤枠部分のみ抜粋のうえ、本資料でご紹介します。 1. Switch Platform を実行 2. MRTK カメラ設定の変更 3. Unity ビルド & デプロイ を実行 1. Switch Platform を実行 2. MRTK カメラ設定の変更 3. Unity ビルドを実行 4. CocoaPods で ASAライブラリインストール 5. XCode でビルド&デプロイを実行

Slide 29

Slide 29 text

MRTK インポート済みの状態

Slide 30

Slide 30 text

M R T K プ ロ フ ァ イ ル 編 集 - S p a t i a l A w a r e n e s s メ ッ シ ュ 表 示 設 定 Spatial Awareness 機能を有効化し、Spatial Mapping ( 空間マップ ) のメッシュデータを扱う設定方法 HL2 標準プロファイル ( DefaultHoloLens2ConfigProfile ) では Spatial Awareness System が 無効化されているので有効化する

Slide 31

Slide 31 text

[ Display Option ] - None : 空間メッシュを表示/利用しない - Visible : Visible Material を使用して空間メッシュを可視化する - Occlusion : Occlusion Material を使用してシーン内のオブジェクトを隠蔽 (オクルージョン) する M R T K プ ロ フ ァ イ ル 編 集 - S p a t i a l A w a r e n e s s メ ッ シ ュ 表 示 設 定 メッシュ表示オプション ( Display Settings ) から好きな設定を選択することができます。 ※ 設定を変更するためにはプロファイルをクローン又は新規作成後、適用する必要があります。 https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/SpatialAwareness/ConfiguringSpatialAwarenessMeshObserver.html#display-settings

Slide 32

Slide 32 text

M R T K プ ロ フ ァ イ ル 編 集 - S p a t i a l A w a r e n e s s メ ッ シ ュ 表 示 MRTK の Spatial Awareness 機能を使うと、Spatial Mapping (空間マップ) データを元に CG を配置することが可能になります。 Visible 空間メッシュの可視化 ( Visible Material : MRTK_SurfaceReconstruction.mat ) None 空間メッシュを未使用 Occlusion 空間メッシュを使用した隠蔽 https://microsoft.github.io/MixedRealityToolkit- Unity/Assets/MRTK/SDK/Experimental/PulseShader/README.html

Slide 33

Slide 33 text

C u s t o m P a c k a g e の イ ン ポ ー ト ( 本 チ ュ ー ト リ ア ル 向 け に 既 に 用 意 さ れ た も の ) https://docs.microsoft.com/en-us/windows /mixed-reality/mr-learning-sharing-02 #importing-the-tutorial-assets 以下、4つのパッケージを ダウンロード & インポート ・AzureSpatialAnchors.unitypackage (version 2.2.1) ・MRTK.HoloLens2.Unity.Tutorials.Assets.GettingStarted.2.4.0.unitypackage ・MRTK.HoloLens2.Unity.Tutorials.Assets.AzureSpatialAnchors.2.4.0.unitypackage ・MRTK.HoloLens2.Unity.Tutorials.Assets.MultiUserCapabilities.2.4.0.unitypackage

Slide 34

Slide 34 text

C u s t o m P a c k a g e の イ ン ポ ー ト ( 本 チ ュ ー ト リ ア ル 向 け に 既 に 用 意 さ れ た も の ) この段階で CS0246 : The type or namespace name ‘Photon’ .. というエラーが表示されます。 このエラーは後で PUN2 – 無料 ( Unity Assets ) をインポートすることで解消できるので、このまま続行してください。

Slide 35

Slide 35 text

A R F o u n d a t i o n の イ ン ス ト ー ル https://docs.unity3d.com/Packages/[email protected]/manual/index.html Azure Spatial Anchors SDK から呼び出される AR Foundation パッケージをインストールします [グローバルメニュー] > [Window] > [Package Manager] を選択 AR Foundation は最新版ではなく、3.1.3 をインストール

Slide 36

Slide 36 text

P U N ( P h o t o n U n i t y N e t w o r k ) ア カ ウ ン ト 準 備 Photon サインインページへアクセスし、アカウントを作成していきます。 https://dashboard.photonengine.com/en-US/account/signin 「Create One ... 」ボタンを押下し、 新規アカウント作成ページへ移動します。 ( ※ アカウント作成手順 省略 )

Slide 37

Slide 37 text

P U N ( P h o t o n U n i t y N e t w o r k ) ア カ ウ ン ト 準 備 アカウント作成が終わったら、作成したアカウントでログインを行います。( 以下、ログイン後の画面 ) https://dashboard.photonengine.com/en-US/publiccloud 「Create A NEW APP」ボタンを押下し、 PUN ( Photon Unity Network ) アプリケーション を作成していきます。

Slide 38

Slide 38 text

P U N ( P h o t o n U n i t y N e t w o r k ) ア カ ウ ン ト 準 備 新規作成する「Photon Type」, 「Name」を選択し、「CREATE」 ボタンを押します。 https://dashboard.photonengine.com/en-US/App/Create Photon Type : Photon PUN を指定 [必須] Name : アプリケーション名 (任意) [必須] Description : アプリケーション説明 Url : アプリケーションURL Photon Type プルダウンメニュー

Slide 39

Slide 39 text

P U N ( P h o t o n U n i t y N e t w o r k ) ア カ ウ ン ト 準 備 Photon PUN アプリケーション の新規作成が完了すると、ダッシュボードに追加されます。 ※ App ID を使って、PUN アプリケーション に 接続するのでメモしておいてください。 https://dashboard.photonengine.com/en-US/publiccloud

Slide 40

Slide 40 text

U n i t y ア セ ッ ト ス ト ア よ り P U N ア セ ッ ト ( 無 料 ) を イ ン ポ ー ト す る Unity アセットストア より 「PUN 2 無料版」 アセット ( 無料 ) を ダウンロード & インポート します。 https://assetstore.unity.com/packages/tools/network/pun-2-free-119922 Unity Asset Store は、 ショートカット : Ctrl + 9 or [Window] > [Asset Store] より開けます。

Slide 41

Slide 41 text

U n i t y ア セ ッ ト ス ト ア よ り P U N ア セ ッ ト ( 無 料 ) を イ ン ポ ー ト す る インポートが完了したら、セットアップウィザードにて設定を行います。 1. さきほどメモした AppId を入力 [Window] > [Photon Unity Networking] > [PUN Wizard] より再設定することも可能 https://doc.photonengine.com/zh-tw/pun/v2/getting-started/initial-setup 詳しい設定方法は、以下URLを参照 Fixed Region : 固定リージョンの指定 Support Logger : ログ出力の有無

Slide 42

Slide 42 text

U n i t y シ ー ン の 編 集 ( P r e f a b 追 加 、 P U N 設 定 e t c . . ) インポートした Custom Package 内に含まれる Prefab, コンポーネントを追加し、シーンを作成していきます。 Photon への接続関連 ASA 関連の処理 ログ管理 ( 表示 ) 上図 : チュートリアル手順を全て終えた後のヒエラルキー画面

Slide 43

Slide 43 text

U n i t y シ ー ン の 編 集 ( P r e f a b 追 加 、 P U N 設 定 e t c . . ) NetworkLobby NetworkRoom

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

SharedPlayground

Slide 46

Slide 46 text

V i s u a l S t u d i o 2 0 1 9 で H L 2 向 け に ビ ル ド & デ プ ロ イ を 実 行 Windows 10 August 2020 アップデート (10.0.19041.1113) にて USBデプロイ時のエラーが解決されてます! (検証済み) https://microsoft.github.io/MixedRealityToolkit- Unity/Documentation/BuildAndDeploy.html#unity-20193-and-hololens MRTK v2.4.0 + Unity 2019.3.x ビルド時にUnityバグあり - Target Platform : ARM だと Unity バグあり - ARM ではなく、ARM64を推奨 (公式) - ARM を使用したい場合、Graphic Jobs オフ https://twitter.com/deco_c_/status/1296395790835884034

Slide 47

Slide 47 text

i O S / A n d r o i d へ の デ プ ロ イ に つ い て https://docs.microsoft.com/en-us/windows/mixed-reality/mr-learning-asa-05 モバイル端末向け MRTK カメラ設定方法 や 各プラットフォームへのデプロイ方法は一つ前のチュートリアルに記載されてます。 Player Setting の編集 モバイルAR カメラ設定の追加

Slide 48

Slide 48 text

実 機 検 証 ( H o l o L e n s 2 / i P h o n e X S / P i x e l 3 ) 実際にマルチプラットフォーム、複数端末、1人で動かすことができました。 (感想) 1人で3台操作は腕がしんどいので辞めた方が良い

Slide 49

Slide 49 text

04. まとめ チ ュ ー ト リ ア ル を 実 際 に 試 し て み て

Slide 50

Slide 50 text

・PUN ( Photon Unity Network ) を利用することで手軽にシェアリング体験を作ることができる ・モバイル端末は対応デバイスが多い分、精度の差も出やすい? / 若干 仮想オブジェクト がカクつく?(個人的感想) 所感 注意すべきポイント ・Photon ログ表示の設定 / 使用リージョンの設定について ・Photon は無料枠だと制限がある ( 最大接続数 / メッセージ数など ) ・PhotonView.cs ( チュートリアルは最新版の PUN2 ではないため ) を追加で設定変更する必要がある ・MRTK v2.4.0 + Unity 2019.3 は VS2019 ビルド時に Unity バグ を踏む可能性があるので注意 ・Switch Platform を実行すると Player Settings 設定 が消えるので注意が必要 ・処理内容理解よりもライブラリ関連のバージョン差異の動作確認を行う方が大変な気が ...

Slide 51

Slide 51 text

・Multi-user Capabilities Tutorials https://docs.microsoft.com/en-us/windows/mixed-reality/mr-learning-sharing-01 ・Azure Spatial Anchors https://docs.microsoft.com/en-us/azure/spatial-anchors/ ・Photon | Photon Unity Network 公式サイト https://www.photonengine.com/ 参 考 文 献

Slide 52

Slide 52 text

手 順 の 詳 細 は . . . https://qiita.com/Futo_Horio 詳細の手順は、今後 Qiita にて公開する予定です。

Slide 53

Slide 53 text

@ F u t o _ H o r i o こ れ を 機 に 仲 良 く し て い た だ け る と 嬉 し い で す ! ご 視 聴 い た だ き あ り が と う ご ざ い ま し た T h a n k s