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 dei comandi di menu per l'aggiunta del cubo.

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

  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 del componente di trasformazione del cubo dopo gli aggiornamenti.

    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 f

    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 due 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 dell'aggiunta dello script Object Manipulator.

    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 dello script Constraint Manager aggiunto al cubo.

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 Materials nel componente Mesh Renderer.
  2. Sostituire il materiale predefinito con il materiale MRTK_Standard_White, disponibile in Asset MRTK Standard>Materiali. È possibile trascinare e rilasciare il materiale dal riquadro Project alla sezione Materials.

Aggiungere un secondo cubo

  1. In Hierarchy, fare clic con il pulsante destro del mouse sul cubo e 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 assegnare al cubo il nome Near Cube.

  3. Fare clic con il pulsante destro del mouse sul cubo duplicato, selezionare Rename e 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 della visualizzazione Main Camera nella finestra Scene.

    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 Clear Flags della fotocamera su Skybox, se non è stato eseguito 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 della finestra Game dopo aver attivato la modalità di riproduzione.

    Nota

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

  2. Selezionare il pulsante con tre punti nell'angolo superiore destro della finestra Game e scegliere Maximize.

    Screenshot del comando Maximize per la finestra Game.

  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 della simulazione della mano destra che tocca il cubo Near Cube.

  5. Premere il pulsante sinistro del mouse (in questo modo la mano afferra il cubo) e trascinare il cubo intorno alla scena.

    Screenshot dello spostamento del cubo.

    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 del puntatore da lontano della mano simulata.

  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 del puntatore da lontano che tocca il cubo.

  8. Premere il pulsante sinistro del mouse, in modo che la mano si chiuda in quello che viene definito il movimento di avvicinamento delle dita e 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 movimento di avvicinamento delle dita, premere il pulsante sinistro del mouse.
  • Per ruotare la mano, premere e tenere premuti la barra spaziatrice + il tasto CTRL (mano destra) o il tasto MAIUSC a sinistrail 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. Ridurre al minimo la finestra Riproduci selezionando il pulsante a tre punti, quindi deselezionando Maximize.

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

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

  4. Selezionare il pulsante Compila.

  5. 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 del percorso in cui salvare la compilazione.

    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. È possibile acquistare i dispositivi all'indirizzo HoloLens.com.

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

    Screenshot di Esplora file con la cartella builds visualizzata.

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

    Screenshot della finestra di Visual Studio con le opzioni di compilazione per il progetto.

    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. In Esplora soluzioni fare clic con il pulsante destro del mouse su [nome del progetto](Universal Windows) e selezionare Imposta come progetto di avvio.

    Importante

    Prima di compilare il dispositivo, questo deve trovarsi in modalità sviluppatore ed essere associato al computer di sviluppo, vedere Abilitazione della modalità sviluppatore.

  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 della finestra di Visual Studio con Computer remoto come destinazione.

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

    Screenshot della finestra di Visual Studio con Dispositivo come destinazione.

  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 Settings > Updates & Security > For developers. L'indirizzo IP viene elencato verso la parte inferiore della finestra, sotto Ethernet.

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

    Screenshot della finestra di dialogo Connessione remota in Visual Studio.

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

  9. Connettere HoloLens al computer, quindi eseguire una delle operazioni seguenti 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 di Visual Studio con la voce di menu Avvia senza eseguire il debug visualizzata.

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 Settings > Updates & Security > For developers.
  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, 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, quindi 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.