Esercizio - Aggiungere script di interazione manuale a un oggetto

Completato

Lo script ObjectManipulator supporta la modalità di manipolazione diretta del modello di input "mani e controller del movimento". Quando lo script è collegato a un oggetto, l'utente può spostare, ridimensionare o ruotare l'oggetto con le mani. In questo esercizio si creeranno due cubi, si collegheranno gli script necessari ai cubi e quindi si sposteranno i cubi.

Aggiungere e modificare il primo cubo

  1. Nella barra dei menu selezionare GameObject>3D Object >Cube.

    Screenshot of menu commands for adding the cube.

    La dimensione predefinita del cubo è di un metro quadrato, ovvero troppo grande per le finalità specifiche. Le dimensioni verranno ridotte fino a 20x20x20 cm.

  2. Selezionare il cubo e quindi in Inspector modificare i valori di Tranform/Scale del cubo nei valori seguenti:

    X = 0,2, Y = 0,2, Z = 0,2

    Il cubo è stato inserito nella scena nella posizione predefinita (0,0,0). Il cubo si trova quindi nella stessa posizione del visore VR dell'utente e l'utente potrà visualizzare il cubo solo quando si sposta indietro. I valori della posizione del cubo verranno modificati, in modo che si trovi in una posizione migliore per la visualizzazione.

  3. In Inspector cambiare i valori di Tranform/Position nei valori seguenti:

    X = -0,2, Y = 1,6, Z = 0,5

    Screenshot of the cube's transform component after updates.

    Si vuole che tre lati del cubo siano visibili, quindi verrà modificata anche la rotazione del cubo.

    Nota

    L'altezza del cubo è impostata su 1,6 in modo che corrisponda all'altezza dell'offset della fotocamera in MRTK XR Rig, posizionandolo approssimativamente a livello di occhio.

  4. In Inspector cambiare i valori di Tranform/Position nei valori seguenti:

    X = 9, Y = 14, Z = 0

    Suggerimento

    Per fare zoom avanti sul cubo, selezionarlo, assicurarsi che il cursore sia posizionato sulla finestra Scene e quindi premere il tasto F. È possibile adottare questo approccio per fare zoom avanti su qualsiasi oggetto.

Aggiungere gli script al cubo

Affinché un oggetto sia "afferrabile" con le mani tracciate, deve essere collegato a tre componenti:

  • Un componente Collider (non è necessario alcuni intervento, poiché il cubo di Unity è già collegato per impostazione predefinita a un Box Collider)
  • Componente Object Manipulator (Script) (Manipolatore oggetti - script)
  1. Con il cubo ancora selezionato, nella finestra Inspector selezionare il pulsante Add Component e quindi cercare e selezionare lo script Object Manipulator.

    Screenshot of adding the Object Manipulator script.

    Lo script ObjectManipulator consente di spostare, ridimensionare e ruotare un oggetto usando una o due mani. Quando si aggiunge lo script Object Manipulator, viene aggiunto automaticamente anche lo script Constraint Manager perché lo script Object Manipulator dipende da tale script.

    Screenshot of the Constraint Manager script added to the cube.

Aggiornare il materiale del cubo

Ai fini delle prestazioni, è consigliabile usare materiali MRTK anziché i materiali Unity predefiniti.

  1. Con il cubo ancora selezionato, trovare la sezione "Materiali" nel componente Renderer mesh.
  2. Sostituire il materiale predefinito con il materiale MRTK_Standard_White, disponibile in Asset MRTK Standard>Materiali.

Aggiungere un secondo cubo

  1. In Hierarchy fare clic con il pulsante destro del mouse sul cubo, quindi scegliere Duplicate. Il cubo duplicato viene visualizzato con il nome "Cube (1)".

  2. Fare clic con il pulsante destro del mouse sul cubo originale, selezionare Rename e quindi assegnare al cubo il nome "Near Cube".

  3. Fare clic con il pulsante destro del mouse sul cubo duplicato, selezionare Rename e quindi assegnare al cubo il nome "Far Cube".

    Al momento sembra che sia presente solo un cubo nella visualizzazione Scene. Ciò dipende dal fatto che Near Cube e Far Cube si trovano nella stessa esatta posizione. È ora possibile cambiare la posizione e la rotazione di Far Cube.

  4. Con Far Cube ancora selezionato, modificare i rispettivi valori nel componente Transform nei valori seguenti:

    Posizione: X = 0,6, Y = 1,6, Z = 1,1

    Rotation: X = 27, Y = 0, Z = 0

    La fotocamera dovrebbe ora vedere Near Cube a sinistra e Far Cube un po' distante sulla destra. Per confermarlo, in Gerarchia selezionare Fotocamera principale (in MRTK XR Rig>Offset fotocamera) e quindi esaminare la finestra Fotocamera principale nella finestra Scena.

    Screenshot of the Main Camera view in the Scene window.

    Suggerimento

    Se si vuole che la visualizzazione nella finestra Scene abbia un aspetto più simile a quanto visualizzato dalla fotocamera, scorrere nella finestra Scene. Potrebbe essere necessario impostare i flag di cancellazione della fotocamera su Skybox se non lo sono per impostazione predefinita.

Afferrare e spostare i cubi in modalità Play

  1. Selezionare il pulsante Play. Quando la riproduzione del progetto viene avviata, la visualizzazione passa alla finestra Game.

    Screenshot of the Game window after entering Play mode.

    Nota

    Prima di eseguire la riproduzione, verificare che sia presente un set di profili valido in Impostazioni progetto>MRTK3.

  2. Selezionare il pulsante con tre punti sopra l'angolo superiore destro della finestra Game e quindi selezionare Maximize.

    Screenshot of Maximize command for the Game window.

  3. Premere la barra spaziatrice per visualizzare la mano destra simulata nella visualizzazione.

  4. Spostare la mano simulata più vicino al Near Cube, fino a toccare il lato o la parte inferiore del cubo.

    Screenshot of the simulated right hand touching the Near Cube.

  5. Selezionare il pulsante sinistro del mouse, in modo che la mano "afferri" il cubo, quindi trascinare il cubo nella scena.

    Screenshot of Move the cube.

    Per afferrare e spostare il Far Cube, verrà usato il puntatore lontano collegato alla mano simulata.

  6. Se è necessario, premere di nuovo la barra spaziatrice per visualizzare la mano destra simulata. Si noti il puntatore lontano che si estende dall'estremità dell'indice della mano.

    Screenshot of simulated hand's far pointer.

  7. Spostare la mano più vicina al Far Cube, fino a visualizzare la punta del puntatore sul cubo. Potrebbe essere necessario spostare un po' di volte la mano con un movimento circolare per visualizzare la punta del puntatore sul cubo.

    Screenshot of the far pointer touching the cube.

  8. Selezionare il pulsante sinistro del mouse, in modo che la mano si chiuda in quello che viene definito "gesto di avvicinamento delle dita", e quindi trascinare il cubo nella scena.

Simulazione dell'input nell'editor di Unity

È possibile testare il comportamento dell'oggetto olografico con le funzionalità di simulazione di input disponibile nell'editor di Unity.

Modificare la visualizzazione nella scena

  • Per spostare la fotocamera in avanti/a sinistra/indietro/a destra, premere i tasti W/A/S/D.
  • Per spostare in verticale la fotocamera, premere i tasti Q ed E.
  • Per ruotare la fotocamera, premere il pulsante destro del mouse e quindi trascinare.

Simulare l'input con mani

  • Per abilitare la mano destra simulata, premere e tenere premuta la barra spaziatrice. Per rimuovere la mano, rilasciare la barra spaziatrice.
  • Per abilitare la mano sinistra simulata, premere e tenere premuto il tasto MAIUSC a sinistra. Per rimuovere la mano, rilasciare il tasto.
  • Per spostare una delle mani nella scena, spostare il mouse.
  • Per spostare avanti o indietro la mano, ruotare la rotellina del mouse.
  • Per simulare il gesto di avvicinamento delle dita, selezionare il pulsante sinistro del mouse.
  • Per ruotare la mano, premere e tenere premuti la barra spaziatrice e il tasto CTRL (mano destra) o il tasto MAIUSC a sinistra e il tasto CTRL (mano sinistra), quindi spostare il mouse.

Mani persistenti

  • Per abilitare una mano e mantenerla sullo schermo senza continuare a tenere premuto un tasto, premere T (mano sinistra) o Y (mano destra). Per rimuovere le mani, premere di nuovo tali tasti.

Compilare l'applicazione in Unity

  1. Sulla barra dei menu scegliere File>Impostazioni di compilazione.

  2. Nella finestra di dialogo Impostazioni di compilazione fare clic sul pulsante Add Open Scenes per aggiungere la scena corrente all'elenco Scenes In Build.

  3. Selezionare il pulsante Compila.

  4. Nella finestra Build Universal Windows Platform passare alla cartella in cui si vuole archiviare la build o creare una nuova cartella e passare a tale cartella, quindi selezionare il pulsante Select Folder per avviare il processo di compilazione.

    Screenshot of the location to save your build.

    Verrà visualizzata una barra di avanzamento per segnalare lo stato della compilazione.

(Facoltativo) Compilare e distribuire l'applicazione

Nota

La compilazione e il test in HoloLens 2 non sono obbligatori. In alternativa, è possibile eseguire test in HoloLens 2 Emulator se non è disponibile alcun dispositivo. I dispositivi possono essere acquistati su HoloLens.com.

  1. Dopo il completamento del processo di compilazione, verrà aperto Esplora file e verrà visualizzata la cartella di compilazione. Passare all'interno della cartella e quindi fare doppio clic sul file della soluzione per aprirlo in Visual Studio:

    Screenshot of File Explorer with the builds folder displayed.

  2. Configurare Visual Studio per HoloLens selezionando la configurazione Master o Release, l'architettura ARM64:

    Screenshot of Visual Studio window with the build options for the project.

    Suggerimento

    Se esegui la distribuzione in HoloLens (1a generazione), seleziona l'architettura x86.

    Nota

    Se non viene visualizzata l'opzione "Dispositivo" come destinazione in Visual Studio, potrebbe essere necessario modificare il progetto di avvio per la soluzione passando dal progetto IL2CPP al progetto UWP. A questo scopo, in Esplora soluzioni fare clic con il pulsante destro del mouse su [nome del progetto](Universal Windows) e quindi selezionare Imposta come progetto di avvio.

    Importante

    Prima della compilazione nel dispositivo, quest'ultimo deve essere in modalità sviluppatore e associato al computer di sviluppo. Vedere la sezione intitolata "Abilitazione della modalità Sviluppatore" in questa pagina.

  3. Selezionare l’elenco a discesa per la destinazione della distribuzione e quindi eseguire una di queste operazioni:

    • Se la compilazione e la distribuzione vengono eseguite tramite Wi-Fi, selezionare Computer remoto.

    Screenshot of Visual Studio window with Remote Machine as the target.

    • Se la compilazione e la distribuzione vengono eseguite tramite USB, seleziona Dispositivo.

    Screenshot of Visual Studio window with Device as the target.

  4. Configurare la connessione remota: sulla barra dei menu selezionare Progetto > Proprietà.

  5. Nella finestra Pagine delle proprietà del progetto selezionare Proprietà di configurazione > Debug.

  6. Selezionare l’elenco a discesa Debugger da avviare e quindi selezionare Computer remoto se questa opzione non è già selezionata.

    Importante

    È consigliabile immettere manualmente l'indirizzo IP invece di dipendere dalla funzionalità "A rilevamento automatico". Per trovare l'indirizzo IP, in HoloLens passare a Impostazioni Aggiornamenti > e sicurezza > per gli sviluppatori. L'indirizzo IP viene elencato verso la parte inferiore della finestra, sotto Ethernet.

  7. Nel campo Machine Name immettere l'indirizzo IP del dispositivo.

    Remote connection dialog in Visual Studio

  8. Impostare la Authentication Mode su Universal (Unencrypted protocol).

  9. Connettere HoloLens al computer e quindi eseguire una di queste operazioni in Visual Studio:

    • Per eseguire la distribuzione in HoloLens e avviare automaticamente l'app senza il debugger di Visual Studio collegato, selezionare Debug>Avvia senza eseguire debug.
    • Per eseguire la distribuzione in HoloLens senza che l'app venga avviata automaticamente, selezionare Compila>Deploy Solution.

    Screenshot of Visual Studio with the Start Without Debugging menu item displayed.

Associazione del dispositivo

La prima volta che viene distribuita un'app in HoloLens dal PC, verrà chiesto di specificare un PIN. Per creare un PIN:

  1. In HoloLens passare a Impostazioni Aggiornamenti > e sicurezza > per gli sviluppatori.
  2. Selezionare Pair (Abbina). Il PIN verrà visualizzato in HoloLens.
  3. Immettere il PIN nella finestra di dialogo in Visual Studio.
  4. Al termine dell'abbinamento, in HoloLens selezionare Done.

Il PC è ora associato a HoloLens ed è possibile distribuire le app automaticamente. Ripetere questi passaggi per tutti i PC usati per distribuire app in HoloLens.

Esecuzione dell'app in HoloLens

  1. Al termine della compilazione dell'app, nel menu Start di HoloLens trovare il riquadro dell'app specifica e quindi selezionarlo.

  2. Dopo l'avvio dell'app, avvicinarsi al Near Cube, quindi afferrarlo e trascinarlo.

  3. Usare il puntatore lontano per afferrare il Far Cube e trascinarlo.

    Suggerimento

    HoloLens offre maggiore flessibilità rispetto al test dell'app in Unity. È possibile spostarsi fisicamente e usare il puntatore lontano sul Near Cube o avvicinarsi e afferrare il Far Cube con la mano!

Suggerimenti

  • Puoi anche eseguire la distribuzione nell'emulatore HoloLens o creare un Pacchetto applicazione per il sideload.

  • È possibile che si noti il profiler di diagnostica nell'app. È possibile attivarlo o disattivarlo usando il comando vocale "Toggle Diagnostics". È consigliabile mantenere visualizzato il profiler per la maggior parte del tempo durante lo sviluppo, in modo da comprendere l'impatto potenziale delle modifiche all'app sulle prestazioni. È ad esempio possibile monitorare l'app per assicurarsi che la frequenza dei fotogrammi sia almeno 60 FPS.