Esercizio - Aggiungere script di interazione manuale a un oggetto
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
Nella barra dei menu selezionare GameObject>3D Object >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.
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.
In Inspector cambiare i valori di Tranform/Position nei valori seguenti:
X = -0,2, Y = 1,6, Z = 0,5
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.
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)
Con il cubo ancora selezionato, nella finestra Inspector selezionare il pulsante Add Component e quindi cercare e selezionare lo 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.
Aggiornare il materiale del cubo
Ai fini delle prestazioni, è consigliabile usare materiali MRTK anziché i materiali Unity predefiniti.
- Con il cubo ancora selezionato, trovare la sezione "Materiali" nel componente Renderer mesh.
- Sostituire il materiale predefinito con il materiale MRTK_Standard_White, disponibile in Asset MRTK Standard>Materiali.
Aggiungere un secondo cubo
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)".
Fare clic con il pulsante destro del mouse sul cubo originale, selezionare Rename e quindi assegnare al cubo il nome "Near Cube".
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.
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.
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
Selezionare il pulsante Play. Quando la riproduzione del progetto viene avviata, la visualizzazione passa alla finestra Game.
Nota
Prima di eseguire la riproduzione, verificare che sia presente un set di profili valido in Impostazioni progetto>MRTK3.
Selezionare il pulsante con tre punti sopra l'angolo superiore destro della finestra Game e quindi selezionare Maximize.
Premere la barra spaziatrice per visualizzare la mano destra simulata nella visualizzazione.
Spostare la mano simulata più vicino al Near Cube, fino a toccare il lato o la parte inferiore del cubo.
Selezionare il pulsante sinistro del mouse, in modo che la mano "afferri" il cubo, quindi trascinare il cubo nella scena.
Per afferrare e spostare il Far Cube, verrà usato il puntatore lontano collegato alla mano simulata.
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.
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.
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
Sulla barra dei menu scegliere File>Impostazioni di compilazione.
Nella finestra di dialogo Impostazioni di compilazione fare clic sul pulsante Add Open Scenes per aggiungere la scena corrente all'elenco Scenes In Build.
Selezionare il pulsante Compila.
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.
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.
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:
Configurare Visual Studio per HoloLens selezionando la configurazione Master o Release, l'architettura ARM64:
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.
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.
- Se la compilazione e la distribuzione vengono eseguite tramite USB, seleziona Dispositivo.
Configurare la connessione remota: sulla barra dei menu selezionare Progetto > Proprietà.
Nella finestra Pagine delle proprietà del progetto selezionare Proprietà di configurazione > Debug.
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.
Nel campo Machine Name immettere l'indirizzo IP del dispositivo.
Impostare la Authentication Mode su Universal (Unencrypted protocol).
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.
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:
- In HoloLens passare a Impostazioni Aggiornamenti > e sicurezza > per gli sviluppatori.
- Selezionare Pair (Abbina). Il PIN verrà visualizzato in HoloLens.
- Immettere il PIN nella finestra di dialogo in Visual Studio.
- 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
Al termine della compilazione dell'app, nel menu Start di HoloLens trovare il riquadro dell'app specifica e quindi selezionarlo.
Dopo l'avvio dell'app, avvicinarsi al Near Cube, quindi afferrarlo e trascinarlo.
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.