2. Introduzione ad Ancoraggi nello spazio di Azure2. Getting started with Azure Spatial Anchors

In questa esercitazione esaminerai i diversi passaggi necessari per avviare e arrestare una sessione di ancoraggi nello spazio di Azure e per creare, caricare e scaricare in un singolo dispositivo gli ancoraggi nello spazio di Azure.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.

ObiettiviObjectives

  • Scopri le nozioni fondamentali sullo sviluppo con Ancoraggi nello spazio di Azure per HoloLens 2Learn the fundamentals of developing with Azure Spatial Anchors for HoloLens 2
  • Apprendi come creare ancoraggi nello spazio e recuperarli da AzureLearn how to create spatial anchors and fetch them from Azure

Creazione e preparazione del progetto UnityCreating and preparing the Unity project

In questa sezione creerai un nuovo progetto Unity per prepararti allo sviluppo con MRTK.In this section, you will create a new Unity project and get it ready for MRTK development.

Seguire prima l'esercitazione Inizializzazione del progetto e distribuzione della prima applicazione, escluse le istruzioni della sezione Compilare l'applicazione nel dispositivo. L'esercitazione include i passaggi seguenti: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. Creazione del progetto Unity e assegnazione di un nome appropriato, ad esempio MRTK TutorialsCreating the Unity project and give it a suitable name, for example, MRTK Tutorials
  2. Passaggio a un'altra piattaforma di compilazioneSwitching the build platform
  3. Importazione delle risorse essenziali TextMeshProImporting the TextMeshPro Essential Resources
  4. Importazione di Mixed Reality ToolkitImporting the Mixed Reality Toolkit
  5. Configurazione del progetto UnityConfiguring the Unity project
  6. Creazione e configurazione della scena e assegnazione di un nome appropriato, ad esempio AzureSpatialAnchorsCreating and configuring the scene and give the scene a suitable name, for example, AzureSpatialAnchors

Segui quindi le istruzioni riportate in Modifica delle opzioni di visualizzazione di consapevolezza spaziale per:Then follow the Changing the Spatial Awareness Display Option instructions to:

  1. Impostare MRTK configuration profile (Profilo di configurazione di MRTK) su DefaultHoloLens2ConfigurationProfileChange the MRTK configuration profile for to the DefaultHoloLens2ConfigurationProfile
  2. Modificare le opzioni di visualizzazione mesh di consapevolezza spaziale impostando Occlusion (Occlusione).Change the spatial awareness mesh display options to Occlusion.

Installazione di pacchetti di Unity incorporatiInstalling inbuilt Unity packages

Scegliere Window > Package Manager (Finestra > Gestione pacchetti) dal menu Unity per aprire la finestra Package Manager(Gestione pacchetti) e quindi selezionare AR Foundation e fare clic sul pulsante Install (Installa) per installare il pacchetto: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:

Package Manager di Unity con AR Foundation selezionato

Nota

Stai installando il pacchetto AR Foundation perché è richiesto da Azure Spatial Anchors SDK, che verrà importato nella sezione successiva.You are installing the AR Foundation package because the Azure Spatial Anchors SDK requires it, which you will import in the next section.

Importazione degli asset dell'esercitazioneImporting the tutorial assets

Scarica e importa i pacchetti personalizzati di Unity seguenti, nell'ordine in cui sono elencati:Download and import the following Unity custom packages in the order they are listed:

Dopo l'importazione degli asset dell'esercitazione, la finestra Project (Progetto) avrà un aspetto simile al seguente:After you have imported the tutorial assets your Project window should look similar to this:

Finestre Hierarchy, Scene e Project di Unity dopo l'importazione degli asset dell'esercitazione

Nota

Se vengono visualizzati avvisi CS0618 che indicano che 'WorldAnchor.SetNativeSpatialAnchorPtr(IntPtr)' è obsoleto, è possibile ignorare questi avvisi.If you see any CS0618 warnings regarding 'WorldAnchor.SetNativeSpatialAnchorPtr(IntPtr)' is obsolete, you can ignore these warnings.

Suggerimento

Per rivedere la procedura di importazione di un pacchetto personalizzato di Unity, puoi fare riferimento alle istruzioni contenute in Importazione di Mixed Reality Toolkit.For a reminder on how to import a Unity custom package, you can refer to the Importing the Mixed Reality Toolkit instructions.

Preparazione della scenaPreparing the scene

In questa sezione preparerai la scena aggiungendo alcuni dei prefab dell'esercitazione.In this section, you will prepare the scene by adding some of the tutorial prefabs.

Nella finestra Project (Progetto) passa ad Assets (Asset) > MRTK.Tutorials.AzureSpeechServices > Prefabs (Prefab) e quindi fai clic e trascina i prefab seguenti sulla finestra Hierarchy (Gerarchia) per aggiungerli alla scena: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:

  • Prefab ButtonParentButtonParent prefabs
  • Prefab DebugWindowDebugWindow prefabs
  • Prefab InstructionsInstructions prefabs
  • Prefab ParentAnchorParentAnchor prefabs

Unity con i prefab appena aggiunti selezionati

Suggerimento

Se trovi che le icone grandi nella scena, come quelle a forma di "T", siano motivo di distrazione, puoi nasconderle disattivando il menu Gizmos, come mostrato nell'immagine precedente.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.

Configurazione dei pulsanti per il funzionamento della scenaConfiguring the buttons to operate the scene

In questa sezione aggiungerai script alla scena per creare una serie di eventi Button che illustrano le nozioni fondamentali sul comportamento degli ancoraggi locali e degli ancoraggi nello spazio di Azure in un'app.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.

Nella finestra Hierarchy (Gerarchia) espandi l'oggetto ButtonParent e seleziona il primo oggetto figlio denominato StartAzureSession. Nella finestra Inspector (Controllo) configura l'evento On Click () (Al clic) del componente Button Config Helper (Script) (Helper configurazione pulsanti - script) come indicato di seguito: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:

  • Assegna l'oggetto ParentAnchor al campo None (Object) (Nessuno - Oggetto)Assign the ParentAnchor object to the None (Object) field
  • Dall'elenco a discesa No Function (Nessuna funzione) seleziona AnchorModuleScript > StartAzureSession () per impostare questa funzione come l'azione da eseguire quando viene attivato l'eventoFrom the No Function dropdown, select AnchorModuleScript > StartAzureSession () to set this function as the action to be executed when the event is triggered

Unity con l'evento OnClick del pulsante StartAzureSession configurato

Nella finestra Hierarchy (Gerarchia) seleziona il pulsante successivo denominato StopAzureSession e quindi nella finestra Inspector (Controllo) configura l'evento On Click () (Al clic) del componente Button Config Helper (Script) (Helper configurazione pulsanti - script) come indicato di seguito: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:

  • Assegna l'oggetto ParentAnchor al campo None (Object) (Nessuno - Oggetto)Assign the ParentAnchor object to the None (Object) field
  • Dall'elenco a discesa No Function (Nessuna funzione) seleziona AnchorModuleScript > StopAzureSession () per impostare questa funzione come l'azione da eseguire quando viene attivato l'eventoFrom the No Function dropdown, select AnchorModuleScript > StopAzureSession () to set this function as the action to be executed when the event is triggered

Unity con l'evento OnClick del pulsante StopAzureSession configurato

Nella finestra Hierarchy (Gerarchia) seleziona il pulsante successivo denominato CreateAzureAnchor e quindi nella finestra Inspector (Controllo) configura l'evento On Click () (Al clic) del componente Button Config Helper (Script) (Helper configurazione pulsanti - script) come indicato di seguito: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:

  • Assegna l'oggetto ParentAnchor al campo None (Object) (Nessuno - Oggetto)Assign the ParentAnchor object to the None (Object) field
  • Dall'elenco a discesa No Function (Nessuna funzione) seleziona AnchorModuleScript > CreateAzureAnchor () per impostare questa funzione come l'azione da eseguire quando viene attivato l'eventoFrom the No Function dropdown, select AnchorModuleScript > CreateAzureAnchor () to set this function as the action to be executed when the event is triggered
  • Assegna l'oggetto ParentAnchor al campo None (Game Object) (Nessuno - Oggetto gioco) vuoto per impostarlo come argomento della funzione CreateAzureAnchor ()Assign the ParentAnchor object to the empty None (Game Object) field to make it the argument for the CreateAzureAnchor () function

Unity con l'evento OnClick del pulsante CreateAzureAnchor configurato

Nella finestra Hierarchy (Gerarchia) seleziona il pulsante successivo denominato RemoveLocalAnchor e quindi nella finestra Inspector (Controllo) configura l'evento On Click () (Al clic) del componente Button Config Helper (Script) (Helper configurazione pulsanti - script) come indicato di seguito: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:

  • Assegna l'oggetto ParentAnchor al campo None (Object) (Nessuno - Oggetto)Assign the ParentAnchor object to the None (Object) field
  • Dall'elenco a discesa No Function (Nessuna funzione) seleziona AnchorModuleScript > RemoveLocalAnchor () per impostare questa funzione come l'azione da eseguire quando viene attivato l'eventoFrom the No Function dropdown, select AnchorModuleScript > RemoveLocalAnchor () to set this function as the action to be executed when the event is triggered
  • Assegna l'oggetto ParentAnchor al campo vuoto None (Game Object) (Nessuno - Oggetto gioco) per impostarlo come argomento della funzione RemoveLocalAnchor ()Assign the ParentAnchor object to the empty None (Game Object) field to make it the argument for the RemoveLocalAnchor () function

Unity con l'evento OnClick del pulsante RemoveLocalAnchor configurato

Nella finestra Hierarchy (Gerarchia) seleziona il pulsante successivo denominato FindAzureAnchor e quindi nella finestra Inspector (Controllo) configura l'evento On Click () (Al clic) del componente Button Config Helper (Script) (Helper configurazione pulsanti - script) come indicato di seguito: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:

  • Assegna l'oggetto ParentAnchor al campo None (Object) (Nessuno - Oggetto)Assign the ParentAnchor object to the None (Object) field
  • Dall'elenco a discesa No Function (Nessuna funzione) seleziona AnchorModuleScript > FindAzureAnchor () per impostare questa funzione come l'azione da eseguire quando viene attivato l'eventoFrom the No Function dropdown, select AnchorModuleScript > FindAzureAnchor () to set this function as the action to be executed when the event is triggered

Unity con l'evento OnClick del pulsante FindAzureAnchor configurato

Nella finestra Hierarchy (Gerarchia) seleziona il pulsante successivo denominato DeleteAzureAnchor e quindi nella finestra Inspector (Controllo) configura l'evento On Click () (Al clic) del componente Button Config Helper (Script) (Helper configurazione pulsanti - script) come indicato di seguito: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:

  • Assegnare l'oggetto DeleteAzureAnchor al campo None (Object) (Nessuno - Oggetto)Assign the DeleteAzureAnchor object to the None (Object) field
  • Dall'elenco a discesa No Function (Nessuna funzione) seleziona AnchorModuleScript > DeleteAzureAnchor () per impostare questa funzione come l'azione da eseguire quando viene attivato l'eventoFrom the No Function dropdown, select AnchorModuleScript > DeleteAzureAnchor () to set this function as the action to be executed when the event is triggered

Unity con l'evento OnClick del pulsante DeleteAzureAnchor configurato

Connessione della scena alla risorsa di AzureConnecting the scene to the Azure resource

Nella finestra Hierarchy (Gerarchia) seleziona l'oggetto ParentAnchor e quindi nella finestra Inspector (Controllo) individua il componente Spatial Anchor Manager (Script) (Gestione ancoraggi nello spazio - script).In the Hierarchy window, select the ParentAnchor object, then in the Inspector window, locate the Spatial Anchor Manager (Script) component. Configura la sezione Credentials (Credenziali) con le credenziali dell'account di ancoraggi nello spazio di Azure creato in fase di definizione dei Prerequisiti per questa serie di esercitazioni:Configure the Credentials section with the credentials from the Azure Spatial Anchors account created as part of the Prerequisites for this tutorial series:

  • Nel campo Spatial Anchors Account ID (ID account Ancoraggi nello spazio) incolla il valore di Account ID (ID account) del tuo account di Ancoraggi nello spazio di AzureIn the Spatial Anchors Account ID field, paste the Account ID from your Azure Spatial Anchors account
  • Nel campo Spatial Anchors Account Key (Chiave account Ancoraggi nello spazio) incolla il valore di Access Key (Chiave di accesso) primario o secondario del tuo account di Ancoraggi nello spazio di AzureIn the Spatial Anchors Account Key field, paste the primary or secondary Access Key from your Azure Spatial Anchors account

Unity con Spatial Anchor Manager configurato

Test dei comportamenti di base di Ancoraggi nello spazio di AzureTrying the basic behaviors of Azure Spatial Anchors

Poiché non è possibile eseguire ancoraggi nello spazio di Azure in Unity, per testare la funzionalità di questo servizio devi compilare il progetto e distribuire l'app nel tuo dispositivo.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.

Suggerimento

Per rivedere la procedura di compilazione e distribuzione di un progetto Unity in HoloLens 2, fare riferimento alle istruzioni riportate in [Compilazione dell'applicazione nel dispositivo HoloLens 2]((mr-learning-base-02.md#building-your-application-to-your-hololens-2).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.

Quando l'app è in esecuzione nel dispositivo, segui le istruzioni visualizzate nel pannello Azure Spatial Anchor Tutorial Instructions (Istruzioni per l'esercitazione su ancoraggi nello spazio di Azure):When the app runs on your device, follow the on-screen instructions displayed on the Azure Spatial Anchor Tutorial Instructions panel:

  1. Sposta il cubo in un'altra posizioneMove the cube to a different location
  2. Avvia la sessione di AzureStart Azure Session
  3. Crea l'ancoraggio di Azure (viene creato un ancoraggio nella posizione del cubo)Create Azure Anchor (creates an anchor at the location of the cube).
  4. Arresta la sessione di AzureStop Azure Session
  5. Rimuovi l'ancoraggio locale (consente all'utente di spostare il cubo)Remove Local Anchor (allows the user to move the cube)
  6. Sposta il cubo altroveMove the cube somewhere else
  7. Avvia la sessione di AzureStart Azure Session
  8. Trova l'ancoraggio di Azure (il cubo viene collocato nella posizione del passaggio 3)Find Azure Anchor (positions the cube at the location from step 3)
  9. Elimina l'ancoraggio di AzureDelete Azure Anchor
  10. Arresta la sessione di AzureStop Azure session

Unity con l'oggetto Instructions selezionato

Attenzione

Poiché per gli ancoraggi nello spazio di Azure viene usato Internet per salvare e caricare i dati di ancoraggio, assicurati che il dispositivo sia connesso a Internet.Azure Spatial Anchors uses the internet to save and load the anchor data, so make sure your device is connected to the internet.

Ancoraggio di un'esperienzaAnchoring an experience

Nelle sezioni precedenti hai appreso le nozioni fondamentali di Ancoraggi nello spazio di Azure.In the previous sections, you learned the fundamentals of Azure Spatial Anchors. È stato usato un cubo per rappresentare e visualizzare l'oggetto gioco padre con l'ancoraggio collegato.We used a cube to represent and visualize the parent game object with the attached anchor. In questa sezione apprenderai come ancorare un'intera esperienza inserendola come figlio dell'oggetto ParentAnchor.In this section, you will learn how to anchor an entire experience by placing it as a child of the ParentAnchor object.

Nella finestra Hierarchy (Gerarchia) seleziona l'oggetto ParentAnchor e quindi nella finestra Inspector (Controllo) configura i componenti Transform (Trasformazione) come segue:In the Hierarchy window, select the ParentAnchor object, then in the Inspector window, configure the Transform components as follows:

  • Imposta Scale X (Scala X) su 1,1Change Scale X to 1.1
  • Imposta Scale Z (Scala Z) su 1,1Change Scale Z to 1.1

Unity con l'oggetto ParentAnchor selezionato, posizionato e ridimensionato

Nella finestra Project (Progetto) passa alla cartella Assets (Asset) > MRTK.Tutorials.GettingStarted > Prefabs (Prefab) > Rover e quindi fai clic e trascina il prefab RoverExplorer_Complete sulla finestra Hierarchy (Gerarchia) per aggiungerlo alla scena: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 con il prefab RoverExplorer_Complete appena aggiunto selezionato

Con l'oggetto RoverModule_Complete appena aggiunto ancora selezionato nella finestra Hierarchy (Gerarchia), trascinalo sull'oggetto ParentAnchor per configurarlo come figlio dell'oggetto ParentAnchor: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 con l'oggetto RoverExplorer_Complete impostato come elemento figlio di ParentAnchor

Se ora ricompili il progetto e distribuisci l'app nel dispositivo, puoi riposizionare l'intera esperienza Rover Explorer (Esplora rover) spostando il cubo ridimensionato.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.

Suggerimento

Sono disponibili diversi flussi di esperienza utente per il riposizionamento, tra cui l'uso di un oggetto di riposizionamento (come il cubo usato in questa esercitazione), l'uso di un pulsante per attivare e disattivare un cubo di delimitazione intorno all'esperienza, l'uso di gizmo di posizione e rotazione e altro ancora.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.

Lezione completataCongratulations

In questa esercitazione hai appreso le nozioni fondamentali di Ancoraggi nello spazio di Azure.In this tutorial, you learned the fundamentals of Azure Spatial Anchors. In questa esercitazione hai usato diversi pulsanti per esaminare i vari passaggi da seguire per avviare e arrestare una sessione di ancoraggi nello spazio di AzureThis tutorial provided you with several buttons to let you explore the various steps required to start and stop an Azure Spatial Anchors session. e per creare, caricare e scaricare gli ancoraggi nello spazio di Azure in un singolo dispositivo.Also, to create, upload, and download Azure Spatial Anchors on a single device.

Nell'esercitazione successiva apprenderai come salvare gli ID di ancoraggio di Azure in HoloLens 2 per il recupero, anche dopo il riavvio dell'app, e come trasferire gli ID di ancoraggio tra più dispositivi per ottenere l'allineamento nello spazio.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.