2. Erste Schritte mit Azure Spatial Anchors2. Getting started with Azure Spatial Anchors

In diesem Tutorial erkunden Sie die verschiedenen Schritte, die zum Starten und Beenden einer Azure Spatial Anchors-Sitzung und zum Erstellen, Hochladen und Herunterladen von Azure Spatial Anchors auf einem Einzelgerät erforderlich sind.In this tutorial, you will explore the various steps required to start and stop an Azure Spatial Anchors session and to create, upload, and download Azure Spatial Anchors on a single device.

ZieleObjectives

  • Erlernen der Grundlagen des Entwickelns mit Azure Spatial Anchors für HoloLens 2Learn the fundamentals of developing with Azure Spatial Anchors for HoloLens 2
  • Erfahren, wie Raumanker erstellt und aus Azure abgerufen werdenLearn how to create spatial anchors and fetch them from Azure

Erstellen und Vorbereiten des Unity-ProjektsCreating and preparing the Unity project

In diesem Abschnitt erstellen Sie ein neues Unity-Projekt und bereiten es für die MRTK-Entwicklung vor.In this section, you will create a new Unity project and get it ready for MRTK development.

Befolgen Sie zunächst die Anweisungen unter Initialisieren Ihres Projekts und Bereitstellen Ihrer ersten Anwendung – jedoch ohne die Anweisungen zum Erstellen Ihrer Anwendung auf Ihrem Gerät – die die folgenden Schritte beinhalten:First, follow the Initializing your project and deploying your first application, excluding the Build your application to your device instructions, which includes the following steps:

  1. Erstellen eines neuen Unity-Projekts, das mit einem passenden Namen bezeichnet wird, beispielsweise MRTK-TutorialsCreating the Unity project and give it a suitable name, for example, MRTK Tutorials
  2. Wechseln der BuildplattformSwitching the build platform
  3. Importieren der TextMeshPro Essential-RessourcenImporting the TextMeshPro Essential Resources
  4. Importieren des Mixed Reality-ToolkitsImporting the Mixed Reality Toolkit
  5. Konfigurieren des Unity-ProjektsConfiguring the Unity project
  6. Erstellen und Konfigurieren der Szene und Bezeichnen der Szene mit einem passenden Namen, z. B. AzureSpatialAnchorsCreating and configuring the scene and give the scene a suitable name, for example, AzureSpatialAnchors

Befolgen Sie dann die Anweisungen unter Ändern der Anzeigeoptionen für räumliche Wahrnehmung, um die folgenden Aufgaben auszuführen:Then follow the Changing the Spatial Awareness Display Option instructions to:

  1. Ändern des MRTK-Konfigurationsprofils in DefaultHoloLens2ConfigurationProfile.Change the MRTK configuration profile for to the DefaultHoloLens2ConfigurationProfile
  2. Ändern der Anzeigeoptionen für das Gittermodell für räumliche Wahrnehmung in Occlusion (Verdeckung).Change the spatial awareness mesh display options to Occlusion.

Installieren von integrierten Unity-PaketenInstalling inbuilt Unity packages

Wählen Sie im Unity-Menü Fenster > Package Manager (Paket-Manager) aus, um das Fenster „Package Manager“ zu öffnen, wählen Sie AR Foundation aus, und klicken Sie auf die Schaltfläche Install (Installieren), um das Paket zu installieren:In the Unity menu, select Window > Package Manager to open the Package Manager window, then select AR Foundation and click the Install button to install the package:

Unity-Paket-Manager mit ausgewählter AR Foundation

Hinweis

Sie installieren das AR Foundation-Paket, da es für das Azure Spatial Anchor SDK erforderlich ist, das Sie im nächsten Abschnitt importieren.You are installing the AR Foundation package because the Azure Spatial Anchors SDK requires it, which you will import in the next section.

Importieren der TutorialressourcenImporting the tutorial assets

Laden Sie die folgenden benutzerdefinierten Unity-Pakete herunter, und importieren Sie sie in der Reihenfolge, in der sie aufgelistet sind:Download and import the following Unity custom packages in the order they are listed:

Nach dem Importieren der Tutorialressourcen sollte Ihr Projektfenster ähnlich wie die folgende Abbildung aussehen:After you have imported the tutorial assets your Project window should look similar to this:

Unity-Fenster „Hierarchie“, „Szene“ und „Projekt“ nach dem Importieren der Tutorialressourcen

Hinweis

Wenn CS0618-Warnungen angezeigt werden, dass „WorldAnchor.SetNativeSpatialAnchorPtr(IntPtr)“ veraltet ist, können Sie diese Warnungen ignorieren.If you see any CS0618 warnings regarding 'WorldAnchor.SetNativeSpatialAnchorPtr(IntPtr)' is obsolete, you can ignore these warnings.

Tipp

Wenn Sie eine Auffrischung zum Importieren eines benutzerdefinierten Unity-Pakets benötigen, lesen Sie die Anweisungen unter Importieren des Mixed Reality-Toolkits.For a reminder on how to import a Unity custom package, you can refer to the Importing the Mixed Reality Toolkit instructions.

Vorbereiten der SzenePreparing the scene

In diesem Abschnitt bereiten Sie die Szene vor, indem Sie einige der Tutorial-Prefabs hinzufügen.In this section, you will prepare the scene by adding some of the tutorial prefabs.

Navigieren Sie im Projektfenster zum Ordner Assets > MRTK.Tutorials.AzureSpatialAnchors > Prefabs, klicken Sie auf die folgenden Prefabs, und ziehen Sie sie in das Hierarchiefenster, um sie Ihrer Szene hinzuzufügen:In the Project window, navigate to the Assets > MRTK.Tutorials.AzureSpatialAnchors > Prefabs folder, then click-and-drag the following prefabs into the Hierarchy window to add them to your scene:

  • ButtonParent-PrefabsButtonParent prefabs
  • DebugWindow-PrefabsDebugWindow prefabs
  • Instructions-PrefabsInstructions prefabs
  • ParentAnchor-PrefabsParentAnchor prefabs

Unity mit neu hinzugefügten, ausgewählten Prefabs

Tipp

Wenn Sie die großen Symbole in Ihrer Szene, beispielsweise die mit großen Rahmen umgebenen ‚T‘-Symbole, irritierend finden, können Sie diese ausblenden, indem Sie die Gizmos umschalten (in die Aus-Position), wie in der Abbildung oben dargestellt.If you find the large icons in your scene, for example, the large framed 'T' icons distracting, you can hide these by toggling the Gizmos to the off position, as shown in the image above.

Konfigurieren der Schaltflächen zum Betreiben der SzeneConfiguring the buttons to operate the scene

In diesem Abschnitt fügen Sie Skripts in die Szene ein, um eine Reihe von Schaltflächenereignissen zu erstellen, mit denen die Grundlagen des Verhaltens beider lokaler Anker und der Azure Spatial Anchors in einer Anwendung veranschaulicht werden.In this section, you will add scripts to the scene to create a series of button events that demonstrate the fundamentals of how both local anchors and Azure Spatial Anchors behave in an app.

Klappen Sie im Hierarchiefenster das ButtonParent-Objekt auf, und wählen Sie im Inspektorfenster das erste untergeordnete Objekt mit dem Namen StartAzureSession aus. Konfigurieren Sie dann das On Click () -Ereignis der Button Config Helper (Script) -Komponente wie folgt:In the Hierarchy window, expand the ButtonParent object and select the first child object named StartAzureSession, in the Inspector window, configure the Button Config Helper (Script) component's On Click () event as follows:

  • Weisen Sie das ParentAnchor-Objekt dem Feld None (Object) (Ohne (Objekt)) zu.Assign the ParentAnchor object to the None (Object) field
  • Wählen Sie in der Dropdownliste No Function (Keine Funktion) AnchorModuleScript > StartAzureSession () aus, um diese Funktion als die beim Auslösen des Ereignisses auszuführende Aktion festzulegen.From the No Function dropdown, select AnchorModuleScript > StartAzureSession () to set this function as the action to be executed when the event is triggered

Unity mit konfiguriertem OnClick-Ereignis für die StartAzureSession-Schaltfläche

Wählen Sie im Hierarchiefenster die nächste Schaltfläche mit dem Namen StopAzureSession aus, und konfigurieren Sie dann im Inspektorfenster das On Click () -Ereignis der Button Config Helper (Script) -Komponente wie folgt:In the Hierarchy window, select the next button named StopAzureSession, then in the Inspector window, configure the Button Config Helper (Script) component's On Click () event as follows:

  • Weisen Sie das ParentAnchor-Objekt dem Feld None (Object) (Ohne (Objekt)) zu.Assign the ParentAnchor object to the None (Object) field
  • Wählen Sie in der Dropdownliste No Function (Keine Funktion) AnchorModuleScript > StopAzureSession () aus, um diese Funktion als die beim Auslösen des Ereignisses auszuführende Aktion festzulegen.From the No Function dropdown, select AnchorModuleScript > StopAzureSession () to set this function as the action to be executed when the event is triggered

Unity mit konfiguriertem OnClick-Ereignis für die StopAzureSession-Schaltfläche

Wählen Sie im Hierarchiefenster die nächste Schaltfläche mit dem Namen CreateAzureAnchor aus, und konfigurieren Sie dann im Inspektorfenster das On Click () -Ereignis der Button Config Helper (Script) -Komponente wie folgt:In the Hierarchy window, select the next button named CreateAzureAnchor, then in the Inspector window, configure the Button Config Helper (Script) component's On Click () event as follows:

  • Weisen Sie das ParentAnchor-Objekt dem Feld None (Object) (Ohne (Objekt)) zu.Assign the ParentAnchor object to the None (Object) field
  • Wählen Sie in der Dropdownliste No Function (Keine Funktion) AnchorModuleScript > CreateAzureAnchor () aus, um diese Funktion als die beim Auslösen des Ereignisses auszuführende Aktion festzulegen.From the No Function dropdown, select AnchorModuleScript > CreateAzureAnchor () to set this function as the action to be executed when the event is triggered
  • Weisen Sie das ParentAnchor-Objekt dem leeren Feld None (Game Object) (Ohne (Spielobjekt)) zu, um es als Argument für die Funktion „CreateAzureAnchor ()“ festzulegenAssign the ParentAnchor object to the empty None (Game Object) field to make it the argument for the CreateAzureAnchor () function

Unity mit konfiguriertem OnClick-Ereignis für die CreateAzureAnchor-Schaltfläche

Wählen Sie im Hierarchiefenster die nächste Schaltfläche mit dem Namen RemoveLocalAnchor aus, und konfigurieren Sie dann im Inspektorfenster das On Click () -Ereignis der Button Config Helper (Script) -Komponente wie folgt:In the Hierarchy window, select the next button named RemoveLocalAnchor,then in the Inspector window, configure the Button Config Helper (Script) component's On Click () event as follows:

  • Weisen Sie das ParentAnchor-Objekt dem Feld None (Object) (Ohne (Objekt)) zu.Assign the ParentAnchor object to the None (Object) field
  • Wählen Sie in der Dropdownliste No Function (Keine Funktion) AnchorModuleScript > RemoveLocalAnchor () aus, um diese Funktion als die beim Auslösen des Ereignisses auszuführende Aktion festzulegen.From the No Function dropdown, select AnchorModuleScript > RemoveLocalAnchor () to set this function as the action to be executed when the event is triggered
  • Weisen Sie das ParentAnchor-Objekt dem leeren Feld None (Game Object) (Ohne (Spielobjekt)) zu, um es als Argument für die Funktion „RemoveLocalAnchor ()“ festzulegenAssign the ParentAnchor object to the empty None (Game Object) field to make it the argument for the RemoveLocalAnchor () function

Unity mit konfiguriertem OnClick-Ereignis für die RemoveLocalAnchor-Schaltfläche

Wählen Sie im Hierarchiefenster die nächste Schaltfläche mit dem Namen FindAzureAnchor aus, und konfigurieren Sie dann im Inspektorfenster das On Click () -Ereignis der Button Config Helper (Script) -Komponente wie folgt:In the Hierarchy window, select the next button named FindAzureAnchor,then in the Inspector window, configure the Button Config Helper (Script) component's On Click () event as follows:

  • Weisen Sie das ParentAnchor-Objekt dem Feld None (Object) (Ohne (Objekt)) zu.Assign the ParentAnchor object to the None (Object) field
  • Wählen Sie in der Dropdownliste No Function (Keine Funktion) AnchorModuleScript > FindAzureAnchor () aus, um diese Funktion als die beim Auslösen des Ereignisses auszuführende Aktion festzulegen.From the No Function dropdown, select AnchorModuleScript > FindAzureAnchor () to set this function as the action to be executed when the event is triggered

Unity mit konfiguriertem OnClick-Ereignis für die FindAzureAnchor-Schaltfläche

Wählen Sie im Hierarchiefenster die nächste Schaltfläche mit dem Namen DeleteAzureAnchor aus, und konfigurieren Sie dann im Inspektorfenster das On Click () -Ereignis der Button Config Helper (Script) -Komponente wie folgt:In the Hierarchy window, select the next button named DeleteAzureAnchor, then in the Inspector window, configure the Button Config Helper (Script) component's On Click () event as follows:

  • Weisen Sie das DeleteAzureAnchor-Objekt dem Feld None (Object) (Ohne (Objekt)) zu.Assign the DeleteAzureAnchor object to the None (Object) field
  • Wählen Sie in der Dropdownliste No Function (Keine Funktion) AnchorModuleScript > DeleteAzureAnchor () aus, um diese Funktion als die beim Auslösen des Ereignisses auszuführende Aktion festzulegen.From the No Function dropdown, select AnchorModuleScript > DeleteAzureAnchor () to set this function as the action to be executed when the event is triggered

Unity mit konfiguriertem OnClick-Ereignis für die DeleteAzureAnchor-Schaltfläche

Verbinden der Szene mit der Azure-RessourceConnecting the scene to the Azure resource

Wählen Sie im Hierarchiefenster das ParentAnchor-Objekt aus, und suchen Sie dann im Inspektorfenster die Komponente Spatial Anchor Manager (Script) .In the Hierarchy window, select the ParentAnchor object, then in the Inspector window, locate the Spatial Anchor Manager (Script) component. Konfigurieren Sie den Abschnitt Credentials (Anmeldeinformationen) mit den Anmeldeinformationen aus dem Azure Spatial Anchors-Konto, das Sie im Rahmen der Voraussetzungen für diese Tutorialreihe erstellt haben:Configure the Credentials section with the credentials from the Azure Spatial Anchors account created as part of the Prerequisites for this tutorial series:

  • Fügen Sie in das Feld Spatial Anchors Account ID die Konto-ID Ihres Azure Spatial Anchors-Kontos einIn the Spatial Anchors Account ID field, paste the Account ID from your Azure Spatial Anchors account
  • Fügen Sie in das Feld Spatial Anchors Account Key (Spatial Anchors-Kontoschlüssel) den primären oder sekundären Zugriffsschlüssel aus Ihrem Azure Spatial Anchors-Konto einIn the Spatial Anchors Account Key field, paste the primary or secondary Access Key from your Azure Spatial Anchors account

Unity mit konfiguriertem Spatial Anchor-Manager

Testen der grundlegenden Verhaltensweisen von Azure Spatial AnchorsTrying the basic behaviors of Azure Spatial Anchors

Azure Spatial Anchors können nicht in Unity ausgeführt werden, daher müssen Sie das Projekt erstellen und die App auf Ihrem Gerät bereitstellen, um die Azure Spatial Anchors-Funktionalität zu testen.Azure Spatial Anchors can not run in Unity, so to test the Azure Spatial Anchors functionality, you need to build the project and deploy the app to your device.

Tipp

Falls Sie eine Auffrischung zum Erstellen und Bereitstellen Ihres Unity-Projekts auf HoloLens 2 benötigen, lesen Sie die Anweisungen unter Erstellen Ihrer Anwendung für das HoloLens 2-Gerät.For a reminder on how to build and deploy your Unity project to HoloLens 2, you can refer to the [Building your application to your HoloLens 2]((mr-learning-base-02.md#building-your-application-to-your-hololens-2) instructions.

Wenn die App auf Ihrem Gerät ausgeführt wird, befolgen Sie die Anweisungen auf dem Bildschirm, die im Anweisungsbereich des Azure Spatial Anchor-Tutorials angezeigt werden:When the app runs on your device, follow the on-screen instructions displayed on the Azure Spatial Anchor Tutorial Instructions panel:

  1. Bewegen Sie den Würfel an einen anderen OrtMove the cube to a different location
  2. Starten Sie die Azure-SitzungStart Azure Session
  3. Erstellen Sie einen Azure-Anker (erstellt einen Anker an der Position des Würfels).Create Azure Anchor (creates an anchor at the location of the cube).
  4. Beenden Sie die Azure-SitzungStop Azure Session
  5. Entfernen Sie den lokalen Anker (ermöglicht es dem Benutzer, den Würfel zu bewegen)Remove Local Anchor (allows the user to move the cube)
  6. Bewegen Sie den Würfel an eine andere StelleMove the cube somewhere else
  7. Starten Sie die Azure-SitzungStart Azure Session
  8. Suchen Sie einen Azure Anchor (positioniert den Würfel am Ort aus Schritt 3)Find Azure Anchor (positions the cube at the location from step 3)
  9. Löschen Sie den Azure AnchorDelete Azure Anchor
  10. Beenden Sie die Azure-SitzungStop Azure session

Unity mit ausgewähltem Instructions-Objekt

Achtung

Azure Spatial Anchors verwendet das Internet zum Speichern und Laden der Ankerdaten, achten Sie also darauf, dass Ihr Gerät über eine Internetverbindung verfügt.Azure Spatial Anchors uses the internet to save and load the anchor data, so make sure your device is connected to the internet.

Verankern eines BenutzererlebnissesAnchoring an experience

In den vorherigen Abschnitten haben Sie die Grundlagen von Azure Spatial Anchors kennengelernt.In the previous sections, you learned the fundamentals of Azure Spatial Anchors. Wir haben einen Würfel verwendet, um das übergeordnete Spielobjekt mit dem angefügten Anker dazustellen und zu visualisieren.We used a cube to represent and visualize the parent game object with the attached anchor. In diesem Abschnitt erfahren Sie, wie Sie ein gesamtes Benutzererlebnis verankern, indem Sie es als untergeordnetes Objekt des ParentAnchor-Objekts platzieren.In this section, you will learn how to anchor an entire experience by placing it as a child of the ParentAnchor object.

Wählen Sie im Hierarchiefenster das ParentAnchor-Objekt aus, und konfigurieren Sie dann im Inspektorfenster die Transform-Komponenten (Transformieren) wie folgt:In the Hierarchy window, select the ParentAnchor object, then in the Inspector window, configure the Transform components as follows:

  • Ändern Sie die Scale X (X-Skalierung) in 1,1Change Scale X to 1.1
  • Ändern Sie die Scale Z (Z-Skalierung) in 1,1Change Scale Z to 1.1

Unity mit ausgewähltem, positioniertem und skaliertem ParentAnchor-Objekt

Navigieren Sie im Projektfenster zum Ordner Assets > MRTK.Tutorials.GettingStarted > Prefabs > Rover (Medienobjekte > MRTK.Tutorials.GettingStarted > Prefabs > Rover), klicken Sie dann auf das Prefab RoverExplorer_Complete, und ziehen Sie es auf das Hierarchiefenster, um es der Szene hinzuzufügen:In the Project window, navigate to the Assets > MRTK.Tutorials.GettingStarted > Prefabs > Rover folder, then click-and-drag the RoverExplorer_Complete prefab into the Hierarchy window to add it to the scene:

Unity mit neu hinzugefügtem, ausgewähltem RoverExplorer_Complete-Prefab

Ziehen Sie das noch im Hierarchiefenster ausgewählte neu hinzugefügte RoverModule_Complete-Objekt auf das ParentAnchor-Objekt, um es zu einem untergeordneten Objekt des ParentAnchor-Objekts zu machen:With the newly added RoverModule_Complete object still selected in the Hierarchy window, drag it onto the ParentAnchor object to make it a child of the ParentAnchor object:

Unity mit RoverExplorer_Complete-Objekt, das als untergeordnetes Element von ParentAnchor festgelegt ist

Wenn Sie das Projekt jetzt neu erstellen und die App auf Ihrem Gerät bereitstellen, können Sie jetzt die gesamte Rover Explorer-Erfahrung neu positionieren, indem Sie den in der Größe veränderten Würfel bewegen.If you now rebuild the project and deploy the app to your device, you can now reposition the entire Rover Explorer experience by moving the resized cube.

Tipp

Es gibt eine Vielzahl von Benutzererlebnisabläufen für die Neupositionierung von Erlebnissen, einschließlich der Verwendung eines Neupositionierungsobjekts (wie des Würfels, der in diesem Tutorial verwendet wird), der Verwendung einer Schaltfläche zum Umschalten eines Begrenzungsrahmens, der das Erlebnis umgibt, der Verwendung von Gizmos für Position und Drehung und mehr.A variety of user experience flows for repositioning experiences, including the use of a repositioning object (such as the cube used in this tutorial), the use of a button to toggle a bounding box that surrounds the experience, the use of position and rotation gizmos, and more.

Herzlichen Glückwunsch!Congratulations

In diesem Tutorial haben Sie die Grundlagen von Azure Spatial Anchors kennengelernt.In this tutorial, you learned the fundamentals of Azure Spatial Anchors. Dieses Tutorial hat Ihnen verschiedene Schaltflächen an die Hand gegeben, um die verschiedenen Schritte zu erkunden, die zum Starten und Beenden einer Azure-Spatial Anchors-Sitzung erforderlich sind.This tutorial provided you with several buttons to let you explore the various steps required to start and stop an Azure Spatial Anchors session. Ferner zum Erstellen, Hochladen und Herunterladen von Azure Spatial Anchors auf einem Einzelgerät.Also, to create, upload, and download Azure Spatial Anchors on a single device.

Im nächsten Tutorial erfahren Sie, wie Azure Anchor-IDs für den Abruf auf Ihrer HoloLens 2 gespeichert werden, auch nach einem Neustart der App, und wie Anchor-IDs zwischen mehreren Geräten übertragen werden, um räumliche Ausrichtung zu erzielen.In the next tutorial, you will learn how to save Azure anchor IDs to your HoloLens 2 for retrieval, even after the app is restarted, and how to transfer anchor IDs between multiple devices to achieve spatial alignment.