教學課程:跨工作階段和裝置共用空間錨點

Azure Spatial Anchors 是一款跨平台開發人員服務,可讓您使用在一段時間之後仍跨裝置保持其位置的物件,建立混合實境體驗。

在本教學課程中,您將使用 Azure Spatial Anchors 在一個工作階段中建立錨點,然後在相同或不同裝置上找到這些錨點。 相同的錨點也可由多個裝置在相同的位置同時找到。

此動畫顯示使用行動裝置建立,並在過去幾天內與不同裝置搭配使用的空間錨點。

在本教學課程中,您將了解如何:

  • 在 Azure 中部署可用來共用錨點,並將錨點儲存至記憶體達指定期間的 ASP.NET Core Web 應用程式。
  • 在快速入門中的 Unity 範例內設定 AzureSpatialAnchorsLocalSharedDemo 場景,以使用「共用錨點」Web 應用程式。
  • 將錨點部署至一或多個裝置並執行。

如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

Prerequisites

開始進行本教學課程之前,請確定您符合下列必要條件:

  • 閱讀 Azure Spatial Anchors 概觀
  • 完成其中一個 5 分鐘快速入門

    注意

    Android/NDK 和 iOS/Swift 快速入門目前不會展示本教學課程中說明的功能。

  • 下列項目的基本知識:
    • ARCore (如果您使用的是 Android)。
    • ARKit (如果您使用的是 iOS)。
  • 具備 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 入口網站會顯示您的部署已完成。

顯示資源部署已完成的螢幕擷取畫面。

選取 [移至資源]。 您現在可以檢視資源屬性。

將資源的 [帳戶識別碼] 值複製到文字編輯器,以供稍後使用。

資源屬性窗格的螢幕擷取畫面。

此外,也將資源的 [帳戶網域] 值複製到文字編輯器,以供稍後使用。

顯示資源帳戶網域值的螢幕擷取畫面。

在 [設定] 下,選取 [存取金鑰]。 將 [主要金鑰] 值、[帳戶金鑰] 複製到文字編輯器,以供稍後使用。

帳戶 [金鑰] 窗格的螢幕擷取畫面。

下載範例專案

執行下列命令以複製範例存放庫

git clone https://github.com/Azure/azure-spatial-anchors-samples.git
cd ./azure-spatial-anchors-samples

部署共用錨點服務

開啟 Visual Studio,然後開啟 Sharing\SharingServiceSample 資料夾中的專案。

開啟發佈精靈

在 [方案總管] 中,以滑鼠右鍵按一下 SharingService 專案,然後選取 [發佈]。

發佈精靈隨即啟動。

選取 [App Service] > [發佈] 以開啟 [建立 App Service] 窗格。

登入 Azure

登入 Azure 入口網站。

在 [建立 App Service] 窗格上選取 [新增帳戶],然後登入您的 Azure 訂用帳戶。 如果已經登入,請從下拉式清單中選取要使用的帳戶。

注意

如果您已經登入,請勿選取 [建立]。

建立資源群組

資源群組是一個邏輯容器,可在其中部署與管理 Azure 資源 (例如 Web 應用程式、資料庫和儲存體帳戶)。 例如,您可以選擇在稍候透過一個簡單的步驟刪除整個資源群組。

選取 [資源群組] 旁邊的 [新增]。

將資源群組命名為 myResourceGroup,然後選取 [確定]。

建立應用程式服務方案

App Service 方案會指定用來裝載應用程式的 Web 伺服器陣列位置、大小和功能。 在裝載多個應用程式時,您可以將 Web 應用程式設定為共用單一 App Service 方案來節省開支。

App Service 方案可定義:

  • 區域 (例如︰北歐、美國東部或東南亞)
  • 執行個體大小 (小型、中型或大型)
  • 級別計數 (1 到 20 個執行個體)
  • SKU (免費、共用、基本、標準或進階)

選取 [主控方案]旁的 [新增]。

在 [設定主控方案] 窗格中,使用以下設定:

設定 建議的值 描述
App Service 方案 MySharingServicePlan App Service 方案的名稱
Location 美國西部 裝載 Web 應用程式的資料中心
大小 免費 決定裝載功能的定價層

選取 [確定] 。

建立和發佈 Web 應用程式

在 [應用程式名稱] 中,輸入唯一的應用程式名稱。 有效的字元為 a-z、0-9 和破折號 (-),或接受自動產生的唯一名稱。 Web 應用程式的 URL 是 https://<app_name>.azurewebsites.net,其中 <app_name> 是您的應用程式名稱。

選取 [建立] 開始建立 Azure 資源。

精靈完成後,系統會將 ASP.NET Core Web 應用程式發佈至 Azure,然後在預設瀏覽器中開啟該應用程式。

Azure 中已發佈的 ASP.NET Web 應用程式的螢幕擷取畫面。

您在本區段中使用的應用程式名稱會被用來作為 URL 首碼,其格式為 https://<app_name>.azurewebsites.net。 將此 URL 複製到文字編輯器以供後續使用。

部署範例應用程式

Java Android 範例支援跨裝置共用。

在 Android Studio 中,開啟範例資料夾中的 SharedActivity.java 檔案。

輸入您在先前的步驟中複製的 URL (來自您的 ASP.NET Web 應用程式 Azure 部署),作為 SharedActivity.java 檔案中的 SharingAnchorsServiceUrl 值。

將 URL 中的 index.html 取代為 api/anchors。 它看起來應該像這樣:https://<app_name>.azurewebsites.net/api/anchors

將應用程式部署到您的裝置。

應用程式啟動後,在 [選擇示範] 窗格中,使用向左鍵或向右鍵選取 [LocalShare] 選項。 然後,點選 [前往!]。

依照應用程式中的指示操作。 您可以選取 [建立及共用錨點] 或 [尋找共用的錨點]。

透過 [建立及共用錨點],您可以建立錨點,並將其儲存至您的共用服務。 而您則會得到錨點的識別碼,可用來從共用服務擷取錨點。 然後,您可以執行第二個案例,從您的裝置或不同的位置,選取 [尋找共用的錨點]。

透過 [尋找共用的錨點],您可以輸入先前所述的識別碼,以找出先前共用的錨點。 挑選案例之後,應用程式會提供進一步的指示來引導您。 例如,其會要求您移動裝置來收集環境資訊。 之後,您會在世界中放置錨點、等候錨點儲存、開始新的工作階段,然後找到錨點。

清除資源

在前述步驟中,您在資源群組中建立了 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 應用程式中的錨點識別碼,您可以讓應用程式在數天後返回以重新尋找錨點。