教學課程:跨工作階段和裝置共用空間錨點
Azure Spatial Anchors 是一款跨平台開發人員服務,可讓您使用在一段時間之後仍跨裝置保持其位置的物件,建立混合實境體驗。
在本教學課程中,您將使用 Azure Spatial Anchors 在一個工作階段中建立錨點,然後在相同或不同裝置上找到這些錨點。 相同的錨點也可由多個裝置在相同的位置同時找到。
在本教學課程中,您將了解如何:
- 在 Azure 中部署可用來共用錨點,並將錨點儲存至記憶體達指定期間的 ASP.NET Core Web 應用程式。
- 在快速入門中的 Unity 範例內設定 AzureSpatialAnchorsLocalSharedDemo 場景,以使用「共用錨點」Web 應用程式。
- 將錨點部署至一或多個裝置並執行。
如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶。
必要條件
開始進行本教學課程之前,請確定您符合下列必要條件:
- 閱讀 Azure Spatial Anchors 概觀。
- 完成其中一個 5 分鐘快速入門。
注意
Android/NDK 和 iOS/Swift 快速入門目前不會展示本教學課程中說明的功能。
- 下列項目的基本知識:
- 具備 Visual Studio 2019 或更新版本和 ASP.NET 與網頁程式開發工作負載的 Windows 電腦。
- .NET Core 3.1 SDK。
- 下列一或多個要部署和執行應用程式的裝置:HoloLens、HoloLens 2、iOS 或 Android。
注意
您在本教學課程中將使用 Unity 和 ASP.NET Core Web 應用程式,但此方法只為了提供範例來說明如何與其他裝置共用 Azure Spatial Anchor 識別碼。 您可以使用其他語言和後端技術達到相同的目標。
建立 Spatial Anchors 資源
移至 Azure 入口網站。
在左窗格上,選取 [建立資源]。
使用搜尋方塊搜尋 Spatial Anchors。
選取 [空間錨點],然後選取 [建立]。
在 [空間錨點帳戶] 窗格上,執行下列動作:
使用規則英數字元,輸入唯一的資源名稱。
選取您要連結資源的訂用帳戶。
選取 [新建] 來建立資源群組。 將其命名為 myResourceGroup,然後選取 [確定]。
資源群組是一個邏輯容器,可在其中部署與管理 Azure 資源 (例如 Web 應用程式、資料庫和儲存體帳戶)。 例如,您可以選擇在稍候透過一個簡單的步驟刪除整個資源群組。
選取要在其中放置資源的位置 (區域)。
選取 [建立] 開始建立資源。
建立資源之後,Azure 入口網站會顯示您的部署已完成。
選取 [移至資源]。 您現在可以檢視資源屬性。
將資源的 [帳戶識別碼] 值複製到文字編輯器,以供稍後使用。
此外,也將資源的 [帳戶網域] 值複製到文字編輯器,以供稍後使用。
在 [設定] 下,選取 [存取金鑰]。 將 [主要金鑰] 值、[帳戶金鑰] 複製到文字編輯器,以供稍後使用。
下載範例專案 + 匯入 SDK
複製範例存放庫
執行下列命令以複製範例存放庫:
git clone https://github.com/Azure/azure-spatial-anchors-samples.git
cd ./azure-spatial-anchors-samples
匯入 ASA SDK
請遵循 這裡的 指示,下載和匯入 HoloLens 平臺所需的 ASA SDK 套件。
部署共用錨點服務
注意
在本教學課程中,我們將使用Azure App 服務的免費層。 免費層會在 閒置 20 分鐘 後逾時,並重設記憶體快取。
開啟 Visual Studio,然後開啟 Sharing\SharingServiceSample 資料夾中的專案。
開啟發佈精靈
在方案總管中,以滑鼠右鍵按一下SharingService專案,然後選取 [發佈...]。
發佈精靈隨即啟動。
- 選取 [下一步目標Azure> ]。
- 選取 Windows) [下一步] Azure App 服務 (> 特定目標
- 登入 Azure 入口網站。
- 選取綠色 「+」 以建立Azure App 服務
App Service 設定
設定 | 建議的值 | 描述 |
---|---|---|
名稱 | myASASharingService | 為您的服務提供唯一的名稱 |
訂用帳戶名稱 | 選取您慣用的 Azure 訂用帳戶 | |
資源群組 | myResourceGroup 或選取現有的資源群組 | 資源群組是一個邏輯容器,可在其中部署與管理 Azure 資源 (例如 Web 應用程式、資料庫和儲存體帳戶)。 例如,您可以選擇在稍候透過一個簡單的步驟刪除整個資源群組。 |
主控方案 | 選取 [新增... ],並查看下表 | App Service 方案會指定用來裝載應用程式的 Web 伺服器陣列位置、大小和功能。 您可以將 Web 應用程式設定為共用單一App Service plan.App Service方案定義,以節省裝載多個應用程式的費用:
|
主控方案設定
設定 | 建議的值 | 描述 |
---|---|---|
主控方案 | MySharingServicePlan | 為您的主控方案指定唯一的名稱 |
Location | 美國西部 | 裝載 Web 應用程式的資料中心。 選擇最接近您應用程式將使用之實體位置的位置 |
大小 | 免費 | 決定裝載功能的定價層 |
- 選取[建立] 以建立App Service
- 建立應用程式服務之後,請在 [App Service 實例] 清單中選取它,然後選取 [ 完成]
- 在 [SharingService: Publish] 索引標籤上,選取 [ 發佈]
發佈至 Azure ASP.NET Core Web 應用程式之後,您可以在[SharingService: Publish] 索引標籤上,移至 https://<your_app_name>.azurewebsites.net
或按一下[網站]旁的連結。將此 URL 複製到文字編輯器以供稍後使用。
設定 + 部署範例應用程式
開啟專案
在 Unity 中,開啟 Unity 資料夾中的專案。 Unity 可能會提示您,專案中的版本與您已在電腦上安裝的版本有何差異。 只要您的 Unity 編輯器版本比建立專案所使用的版本還要新,這個警告沒有問題。 如果您的版本較新,請選取 [繼續]。 如果您的版本比專案需要的版本還要舊,請選取 [結束],並且升級您的 Unity 編輯器。
設定組建設定
藉由選取 [檔案] >[組建設定] 來開啟 [組建設定] 。
在 [平台] 區段中,選取 [通用 Windows 平台] 。 將 [目標裝置] 變更為 [HoloLens] 。
選取 [切換平台] ,將平台變更為 [通用 Windows 平台] 。 Unity 可能會提示您安裝 UWP 支援元件 (如果元件遺失的話)。
關閉 [組建設定] 視窗。
設定帳戶資訊
下一個步驟是將應用程式設定為使用您的帳戶資訊。 您先前已在 「建立空間錨點資源」 一節中,將帳戶金鑰、帳戶識別碼,以及帳戶網域 值複製到文字編輯器。
在 [專案] 窗格上,移至 Assets\AzureSpatialAnchors.SDK\Resources
。
選取 SpatialAnchorConfig。 在 [偵測器] 窗格上,輸入 Account Key
做為空間錨點帳戶金鑰的值、輸入 Account ID
做為空間錨點帳戶識別碼的值,以及輸入 Account Domain
做為空間錨點帳戶網域的值。
在專案窗格上按兩下 AzureSpatialAnchorsLocalSharedDemo,以開啟名為 AzureSpatialAnchorsLocalSharedDemoAssets/AzureSpatialAnchors.Examples/Scenes/AzureSpatialAnchorsLocalSharedDemo
的場景
在 [專案] 窗格中,移至 Assets\AzureSpatialAnchors.Examples\Resources
。
選取 SpatialAnchorSamplesConfig。 然後,在 [偵測器] 窗格中,輸入 Sharing Anchors Service
URL (來自您的 ASP.NET Web 應用程式 Azure 部署) 作為 Base Sharing Url
的值。 使用 附加 URL /swagger/api/anchors
。 它看起來應該像這樣:https://<your_app_name>.azurewebsites.net/swagger/api/anchors
。
選取 [檔案]>[儲存] 以儲存場景。
匯出 + 部署 HoloLens 應用程式
藉由選取 [檔案] >[組建設定] 來開啟 [組建設定] 。
在 [建置中的場景] 底下,確定所有場景旁邊都有勾號。
選取 [組建] 。 在對話方塊中,選取要在其中匯出 HoloLens Visual Studio 專案的資料夾。
匯出完成時,會顯示含有匯出的 HoloLens 專案的資料夾。
在資料夾中,按兩下 [HelloAR U3D.sln] ,以在 Visual Studio 中開啟專案。
將 [方案組態] 變更為 [發行] ,並將 [方案平台] 變更為 [x86] ,然後從部署目標選項中選取 [裝置] 。
如果使用 HoloLens 2,請使用 ARM64 作為解決方案平台,而非使用 x86。
開啟 HoloLens 裝置並登入,然後使用 USB 纜線將該裝置連接到電腦。
選取 [偵錯] >[開始偵錯] 來部署您的應用程式並開始偵錯。
執行應用程式
在應用程式中,使用箭號選取 LocalSharedDemo ,然後按 [Go! ] 按鈕來執行示範。 依照指示來放置及回收錨點。
使用 建立 & 共用錨點,您可以建立錨點,並將它儲存至共用服務。 而您則會得到錨點的識別碼,可用來從共用服務擷取錨點。 然後,您可以執行第二個案例,從您的裝置或不同的位置,選取 [尋找共用的錨點]。
透過 [尋找共用的錨點],您可以輸入先前所述的識別碼,以找出先前共用的錨點。 挑選案例之後,應用程式會提供進一步的指示來引導您。 例如,其會要求您移動裝置來收集環境資訊。 之後,您會在世界中放置錨點、等候錨點儲存、開始新的工作階段,然後找到錨點。
清除資源
在前述步驟中,您在資源群組中建立了 Azure 資源。 如果您認為未來不需要這些資源,可以用刪除資源群組的方式將它們刪除。
從 Azure 入口網站功能表或 [首頁] 頁面,選取 [資源群組]。 然後,在 [資源群組] 頁面上,選取 [myResourceGroup]。
在 [myResourceGroup] 頁面上,確定所列出的資源是您想要刪除的項目。
選取 [刪除資源群組] ,在文字方塊中輸入 myResourceGroup,然後選取 [刪除] 。
後續步驟
在本教學課程中,您已在 Azure 中部署 ASP.NET Core Web 應用程式,且已設定並部署 Unity 應用程式。 您使用應用程式建立了空間錨點,並使用 ASP.NET Core Web 應用程式與其他裝置共用這些錨點。
您可以改善 ASP.NET Core Web 應用程式,使其能夠使用 Azure Cosmos DB 持續儲存共用的空間錨點識別碼。 藉由新增 Azure Cosmos DB 支援,您可以讓 ASP.NET Core Web 應用程式立即建立錨點。 然後,藉由使用儲存在 Web 應用程式中的錨點識別碼,您可以讓應用程式在數天後返回以重新尋找錨點。