Input 211 di HoloLens (prima generazione): movimento

Importante

Le esercitazioni di Realtà mista Academy sono state progettate con HoloLens (prima generazione), Unity 2017 e Realtà mista visori VR immersive. Pertanto, riteniamo importante lasciarle a disposizione degli sviluppatori a cui serve ancora materiale sussidiario per lo sviluppo di questi dispositivi. Queste esercitazioni non verranno aggiornate con i set di strumenti o le interazioni più recenti usati per HoloLens 2 e potrebbero non essere compatibili con le versioni più recenti di Unity. Rimarranno invariate per consentire di continuare a lavorare sui dispositivi supportati. Per HoloLens 2 è stata pubblicata una nuova serie di esercitazioni.

I movimenti trasformano l'intenzione dell'utente in azione. Grazie ai movimenti, gli utenti possono interagire con gli ologrammi. In questo corso si apprenderà come tenere traccia delle mani dell'utente, rispondere all'input dell'utente e inviare commenti e suggerimenti all'utente in base allo stato della mano e alla posizione.

In MR Basics 101 abbiamo usato un semplice gesto di tocco per interagire con gli ologrammi. A questo punto, si passerà oltre il movimento air-tap e si esamineranno nuovi concetti per:

  • Rilevare quando la mano dell'utente viene monitorata e fornire commenti e suggerimenti all'utente.
  • Usare un movimento di navigazione per ruotare gli ologrammi.
  • Fornire commenti e suggerimenti quando la mano dell'utente sta per uscire dalla visualizzazione.
  • Usare gli eventi di manipolazione per consentire agli utenti di spostare gli ologrammi con le mani.

In questo corso verrà rivisitato Esplora modelli del progetto Unity, creato in MR Input 210. Il nostro amico astronauta è tornato per aiutarci nell'esplorazione di questi nuovi concetti relativi ai movimenti.

Importante

I video incorporati in ognuno dei capitoli seguenti sono stati registrati usando una versione precedente di Unity e il toolkit Realtà mista. Anche se le istruzioni dettagliate sono accurate e aggiornate, è possibile visualizzare script e oggetti visivi nei video corrispondenti non aggiornati. I video rimangono inclusi per la posterità e perché i concetti trattati sono ancora applicabili.

Supporto di dispositivi

Corso HoloLens Visori VR immersive
Input MR 211: Movimento ✔️ ✔️

Prima di iniziare

Prerequisiti

File di progetto

  • Scaricare i file richiesti dal progetto. Richiede Unity 2017.2 o versione successiva.
  • Annullare l'archiviazione dei file nel desktop o in un altro percorso facile da raggiungere.

Nota

Se si vuole esaminare il codice sorgente prima del download, è disponibile in GitHub.

Errata e note

  • L'opzione "Abilita Just My Code" deve essere disabilitata (deselezionata) in Visual Studio in Strumenti-Opzioni-Debug>> per raggiungere i punti di interruzione nel codice.

Capitolo 0 - Configurazione di Unity

Istruzioni

  1. Riavviare Unity.
  2. Selezionare Open (Apri).
  3. Passare alla cartella Movimento annullata in precedenza.
  4. Trovare e selezionare la cartella Avvio/di Esplora modelli .
  5. Fare clic sul pulsante Seleziona cartella .
  6. Nel pannello Progetto espandere la cartella Scene .
  7. Fare doppio clic su ModelExplorer scene per caricarlo in Unity.

Compilazione

  1. In Unity selezionare Impostazioni compilazione file>.
  2. Se Scenes/ModelExplorer non è elencato in Scene in compilazione, fare clic su Aggiungi scene aperte per aggiungere la scena.
  3. Se si sta sviluppando in modo specifico per HoloLens, impostare Dispositivo di destinazione su HoloLens. In caso contrario, lasciarlo su Qualsiasi dispositivo.
  4. Assicurarsi che Il tipo di compilazione sia impostato su D3D e SDK sia impostato su Più recente installato (che deve essere SDK 16299 o versione successiva).
  5. Fare clic su Compila.
  6. Creare una nuova cartella denominata "App".
  7. Fare clic sulla cartella App .
  8. Premere Seleziona cartella e Unity inizierà a compilare il progetto per Visual Studio.

Al termine di Unity, verrà visualizzata una finestra di Esplora file.

  1. Aprire la cartella App .
  2. Aprire la soluzione ModelExplorer di Visual Studio.

Se si esegue la distribuzione in HoloLens:

  1. Usando la barra degli strumenti superiore in Visual Studio, modificare la destinazione da Debug a Rilascio e da ARM a x86.
  2. Fare clic sulla freccia a discesa accanto al pulsante Computer locale e selezionare Computer remoto.
  3. Immettere l'indirizzo IP del dispositivo HoloLens e impostare Modalità di autenticazione su Universale (protocollo non crittografato). Fare clic su Seleziona. Se non si conosce l'indirizzo IP del dispositivo, cercare Impostazioni > Rete & Opzioni avanzate Internet>.
  4. Nella barra dei menu in alto fare clic su Debug -> Avvia senza eseguire debug o premere CTRL+F5. Se questa è la prima volta che si esegue la distribuzione nel dispositivo, sarà necessario associarla a Visual Studio.
  5. Quando l'app è stata distribuita, ignorare fitbox con un movimento di selezione.

Se si esegue la distribuzione in un visore VR immersive:

  1. Usando la barra degli strumenti superiore in Visual Studio, modificare la destinazione da Debug a Rilascio e da ARM a x64.
  2. Assicurarsi che la destinazione di distribuzione sia impostata su Computer locale.
  3. Nella barra dei menu in alto fare clic su Debug -> Avvia senza eseguire debug o premere CTRL+F5.
  4. Quando l'app è stata distribuita, ignorare fitbox trascinando il trigger su un controller di movimento.

Nota

È possibile notare alcuni errori rossi nel pannello Errori di Visual Studio. È sicuro ignorarli. Passare al pannello Output per visualizzare lo stato di avanzamento effettivo della compilazione. Gli errori nel pannello Output richiederanno di apportare una correzione (la maggior parte delle volte sono causate da un errore in uno script).

Capitolo 1 - Feedback rilevato a mano

Obiettivi

  • Sottoscrivere gli eventi di rilevamento della mano.
  • Usare il feedback del cursore per mostrare agli utenti quando viene rilevata una mano.

Nota

Su HoloLens 2 , le mani hanno rilevato incendi ogni volta che le mani sono visibili (non solo quando un dito punta su).

Istruzioni

  • Nel pannello Hierarchy (Gerarchia ) espandere l'oggetto InputManager .
  • Cercare e selezionare l'oggetto GesturesInput .

Lo script InteractionInputSource.cs esegue questi passaggi:

  1. Sottoscrive gli eventi InteractionSourceDetected e InteractionSourceLost.
  2. Imposta lo stato HandDetected.
  3. Annulla la sottoscrizione dagli eventi InteractionSourceDetected e InteractionSourceLost.

Verrà quindi aggiornato il cursore da MR Input 210 in uno che mostra commenti e suggerimenti a seconda delle azioni dell'utente.

  1. Nel pannello Gerarchia selezionare l'oggetto Cursore ed eliminarlo.
  2. Nel pannello Progetto cercare CursorWithFeedback e trascinarlo nel pannello Gerarchia .
  3. Fare clic su InputManager nel pannello Gerarchia, quindi trascinare l'oggetto CursorWithFeedback dalla gerarchianel campo Cursore SimpleSinglePointerSelector di InputManager, nella parte inferiore del controllo.
  4. Fare clic su CursorWithFeedback nella gerarchia.
  5. Nel pannello Inspector espandere Cursor State Data (Dati stato cursore ) nello script Cursore oggetto .

I dati sullo stato del cursore funzionano come segue:

  • Qualsiasi stato Di osservazione indica che non viene rilevata alcuna mano e l'utente sta semplicemente guardando intorno.
  • Qualsiasi stato Di interazione significa che viene rilevato un controller o una mano.
  • Qualsiasi stato del puntatore del mouse indica che l'utente sta esaminando un ologramma.

Compilazione e distribuzione

  • In Unity usare Impostazioni di compilazione file > per ricompilare l'applicazione.
  • Aprire la cartella App .
  • Se non è già aperto, aprire la soluzione ModelExplorer Visual Studio.
    • Se il progetto è già stato compilato/distribuito in Visual Studio durante la configurazione, è possibile aprire l'istanza di VS e fare clic su "Ricarica tutto" quando richiesto.
  • In Visual Studio fare clic su Debug -> Avvia senza eseguire il debug o premere CTRL + F5.
  • Dopo la distribuzione dell'applicazione in HoloLens, ignorare la casella di montaggio usando il movimento di tocco aria.
  • Spostare la mano in vista e puntare il dito dell'indice al cielo per iniziare a tenere traccia della mano.
  • Spostare la mano sinistra, destra, su e giù.
  • Guarda come cambia il cursore quando la mano viene rilevata e quindi persa dalla visualizzazione.
  • Se si è in un visore visore immersivo, è necessario connettersi e disconnettere il controller. Questo feedback diventa meno interessante in un dispositivo immersivo, poiché un controller connesso sarà sempre "disponibile".

Capitolo 2 - Navigazione

Obiettivi

  • Usare gli eventi di movimento di navigazione per ruotare l'astronauta.

Istruzioni

Per usare i movimenti di spostamento nell'app, verrà modificato GestureAction.cs per ruotare gli oggetti quando si verifica il movimento di spostamento. Inoltre, si aggiungeranno commenti e suggerimenti al cursore da visualizzare quando è disponibile la navigazione.

  1. Nel pannello Gerarchia espandere CursorWithFeedback.
  2. Nella cartella Holograms trovare l'asset ScrollFeedback .
  3. Trascinare e rilasciare il prefab ScrollFeedback nel cursoreWithFeedback GameObject nella gerarchia.
  4. Fare clic su CursorWithFeedback.
  5. Nel pannello Controllo fare clic sul pulsante Aggiungi componente .
  6. Nel menu digitare nella casella di ricerca CursorFeedback. Selezionare il risultato della ricerca.
  7. Trascinare e rilasciare l'oggetto ScrollFeedback dalla gerarchia nella proprietà Scroll Detected Game Object nel componente Feedback cursore nel controllo.
  8. Nel pannello Gerarchia selezionare l'oggetto AstroMan .
  9. Nel pannello Controllo fare clic sul pulsante Aggiungi componente .
  10. Nel menu digitare nella casella di ricerca Azione movimento. Selezionare il risultato della ricerca.

Aprire quindi GestureAction.cs in Visual Studio. Nell'esercizio di codifica 2.c modificare lo script per eseguire le operazioni seguenti:

  1. Ruotare l'oggetto AstroMan ogni volta che viene eseguito un movimento di spostamento.
  2. Calcolare la rotazioneFactor per controllare la quantità di rotazione applicata all'oggetto.
  3. Ruotare l'oggetto intorno all'asse y quando l'utente sposta la mano sinistra o destra.

Completare gli esercizi di codifica 2.c nello script o sostituire il codice con la soluzione completata di seguito:

using HoloToolkit.Unity.InputModule;
using UnityEngine;

/// <summary>
/// GestureAction performs custom actions based on
/// which gesture is being performed.
/// </summary>
public class GestureAction : MonoBehaviour, INavigationHandler, IManipulationHandler, ISpeechHandler
{
    [Tooltip("Rotation max speed controls amount of rotation.")]
    [SerializeField]
    private float RotationSensitivity = 10.0f;

    private bool isNavigationEnabled = true;
    public bool IsNavigationEnabled
    {
        get { return isNavigationEnabled; }
        set { isNavigationEnabled = value; }
    }

    private Vector3 manipulationOriginalPosition = Vector3.zero;

    void INavigationHandler.OnNavigationStarted(NavigationEventData eventData)
    {
        InputManager.Instance.PushModalInputHandler(gameObject);
    }

    void INavigationHandler.OnNavigationUpdated(NavigationEventData eventData)
    {
        if (isNavigationEnabled)
        {
            /* TODO: DEVELOPER CODING EXERCISE 2.c */

            // 2.c: Calculate a float rotationFactor based on eventData's NormalizedOffset.x multiplied by RotationSensitivity.
            // This will help control the amount of rotation.
            float rotationFactor = eventData.NormalizedOffset.x * RotationSensitivity;

            // 2.c: transform.Rotate around the Y axis using rotationFactor.
            transform.Rotate(new Vector3(0, -1 * rotationFactor, 0));
        }
    }

    void INavigationHandler.OnNavigationCompleted(NavigationEventData eventData)
    {
        InputManager.Instance.PopModalInputHandler();
    }

    void INavigationHandler.OnNavigationCanceled(NavigationEventData eventData)
    {
        InputManager.Instance.PopModalInputHandler();
    }

    void IManipulationHandler.OnManipulationStarted(ManipulationEventData eventData)
    {
        if (!isNavigationEnabled)
        {
            InputManager.Instance.PushModalInputHandler(gameObject);

            manipulationOriginalPosition = transform.position;
        }
    }

    void IManipulationHandler.OnManipulationUpdated(ManipulationEventData eventData)
    {
        if (!isNavigationEnabled)
        {
            /* TODO: DEVELOPER CODING EXERCISE 4.a */

            // 4.a: Make this transform's position be the manipulationOriginalPosition + eventData.CumulativeDelta
        }
    }

    void IManipulationHandler.OnManipulationCompleted(ManipulationEventData eventData)
    {
        InputManager.Instance.PopModalInputHandler();
    }

    void IManipulationHandler.OnManipulationCanceled(ManipulationEventData eventData)
    {
        InputManager.Instance.PopModalInputHandler();
    }

    void ISpeechHandler.OnSpeechKeywordRecognized(SpeechEventData eventData)
    {
        if (eventData.RecognizedText.Equals("Move Astronaut"))
        {
            isNavigationEnabled = false;
        }
        else if (eventData.RecognizedText.Equals("Rotate Astronaut"))
        {
            isNavigationEnabled = true;
        }
        else
        {
            return;
        }

        eventData.Use();
    }
}

Si noterà che gli altri eventi di spostamento sono già compilati con alcune informazioni. Il GameObject viene eseguito nello stack modale modale di InputSystem del Toolkit, quindi l'utente non deve mantenere lo stato attivo sull'astronauta dopo aver iniziato la rotazione. In modo corrispondente, si popa il GameObject fuori dallo stack una volta completato il movimento.

Compilazione e distribuzione

  1. Ricompilare l'applicazione in Unity e quindi compilare e distribuire da Visual Studio per eseguirlo in HoloLens.
  2. Guarda l'astronauta, due frecce dovrebbero apparire su un lato del cursore. Questo nuovo oggetto visivo indica che l'astronauta può essere ruotato.
  3. Posizionare la mano nella posizione pronta (dito indice puntato verso il cielo) in modo che HoloLens inizierà a tenere traccia della mano.
  4. Per ruotare l'astronauta, abbassare il dito dell'indice in una posizione di pizzicamento e quindi spostare la mano sinistra o destra per attivare il movimento NavigationX.

Capitolo 3 - Linee guida per le mani

Obiettivi

  • Usare il punteggio delle indicazioni della mano per prevedere quando il rilevamento delle mani si perderà.
  • Fornire commenti e suggerimenti sul cursore da visualizzare quando la mano dell'utente si avvicina al bordo della fotocamera della visualizzazione.

Istruzioni

  1. Nel pannello Gerarchia selezionare l'oggetto CursorWithFeedback .
  2. Nel pannello Controllo fare clic sul pulsante Aggiungi componente .
  3. Nel menu digitare nella casella di ricerca Linee guida. Selezionare il risultato della ricerca.
  4. Nella cartella Holograms del pannelloProgetto individuare l'asset HandGuidanceFeedback.
  5. Trascinare e rilasciare l'asset HandGuidanceFeedback nella proprietà Indicatore guida mano nel pannello Inspector .

Compilazione e distribuzione

  • Ricompilare l'applicazione in Unity e quindi compilare e distribuire da Visual Studio per sperimentare l'app in HoloLens.
  • Porta la mano nella visualizzazione e alza il dito dell'indice per essere tracciato.
  • Iniziare a ruotare l'astronauta con il movimento di navigazione (pizzicare il dito dell'indice e il pollice insieme).
  • Sposta la mano a sinistra, destra, su e giù.
  • Mentre la mano si avvicina al bordo del fotogramma di movimento, verrà visualizzata una freccia accanto al cursore per avvisare che il rilevamento delle mani verrà perso. La freccia indica quale direzione spostare la mano per impedire la perdita del rilevamento.

Capitolo 4 - Manipolazione

Obiettivi

  • Usare gli eventi di manipolazione per spostare l'astronauta con le mani.
  • Fornire commenti e suggerimenti sul cursore per informare l'utente quando è possibile usare La manipolazione.

Istruzioni

GestureManager.cs e AstronautManager.cs consentirà di eseguire le operazioni seguenti:

  1. Usare la parola chiave vocale "Move Astronaut" per abilitare i movimenti di manipolazione e "Ruota astronauta" per disabilitarli.
  2. Passare alla risposta al riconoscimento dei movimenti di manipolazione.

A questo punto, procedere con l'esercitazione.

  1. Nel pannello Gerarchia creare un nuovo GameObject vuoto. Denominarlo "AstronautManager".
  2. Nel pannello Controllo fare clic sul pulsante Aggiungi componente .
  3. Nel menu digitare nella casella di ricerca Astronaut Manager. Selezionare il risultato della ricerca.
  4. Nel pannello Controllo fare clic sul pulsante Aggiungi componente .
  5. Nel menu digitare nella casella di ricerca Origine input voce. Selezionare il risultato della ricerca.

Verranno ora aggiunti i comandi vocali necessari per controllare lo stato di interazione dell'astronauta.

  1. Espandere la sezione Parole chiave nel controllo.
  2. Fare clic sul + lato destro per aggiungere una nuova parola chiave.
  3. Digitare la parola chiave come Sposta astronauta. Se desiderato, è possibile aggiungere un tasto di scelta rapida.
  4. Fare clic sul + lato destro per aggiungere una nuova parola chiave.
  5. Digitare la parola chiave come Ruota astronauta. Se desiderato, è possibile aggiungere un tasto di scelta rapida.
  6. Il codice del gestore corrispondente è disponibile nel gestore GestureAction.cs, nel gestore ISpeechHandler.OnSpeechKeywordRecognized .

Come configurare l'origine input vocale per il capitolo 4

Verrà quindi configurato il feedback sulla manipolazione sul cursore.

  1. Nella cartella Holograms del pannelloProgetto individuare l'asset PathingFeedback.
  2. Trascinare e rilasciare il prefab PathingFeedback nell'oggetto CursorWithFeedback nella gerarchia.
  3. Nel pannello Gerarchia fare clic su CursorWithFeedback.
  4. Trascinare e rilasciare l'oggetto PathingFeedback dalla gerarchia nella proprietà Pathing Detected Game Object nel componente Feedback cursore nel controllo.

Ora è necessario aggiungere codice a GestureAction.cs per abilitare quanto segue:

  1. Aggiungere codice alla funzione IManipulationHandler.OnManipulationUpdated , che sposta l'astronauta quando viene rilevato un movimento di manipolazione .
  2. Calcolare il vettore di movimento per determinare dove deve essere spostato l'astronauta in base alla posizione della mano.
  3. Spostare l'astronauta nella nuova posizione.

Completare l'esercizio di codifica 4.a in GestureAction.cs oppure usare la soluzione completata di seguito:

using HoloToolkit.Unity.InputModule;
using UnityEngine;

/// <summary>
/// GestureAction performs custom actions based on
/// which gesture is being performed.
/// </summary>
public class GestureAction : MonoBehaviour, INavigationHandler, IManipulationHandler, ISpeechHandler
{
    [Tooltip("Rotation max speed controls amount of rotation.")]
    [SerializeField]
    private float RotationSensitivity = 10.0f;

    private bool isNavigationEnabled = true;
    public bool IsNavigationEnabled
    {
        get { return isNavigationEnabled; }
        set { isNavigationEnabled = value; }
    }

    private Vector3 manipulationOriginalPosition = Vector3.zero;

    void INavigationHandler.OnNavigationStarted(NavigationEventData eventData)
    {
        InputManager.Instance.PushModalInputHandler(gameObject);
    }

    void INavigationHandler.OnNavigationUpdated(NavigationEventData eventData)
    {
        if (isNavigationEnabled)
        {
            /* TODO: DEVELOPER CODING EXERCISE 2.c */

            // 2.c: Calculate a float rotationFactor based on eventData's NormalizedOffset.x multiplied by RotationSensitivity.
            // This will help control the amount of rotation.
            float rotationFactor = eventData.NormalizedOffset.x * RotationSensitivity;

            // 2.c: transform.Rotate around the Y axis using rotationFactor.
            transform.Rotate(new Vector3(0, -1 * rotationFactor, 0));
        }
    }

    void INavigationHandler.OnNavigationCompleted(NavigationEventData eventData)
    {
        InputManager.Instance.PopModalInputHandler();
    }

    void INavigationHandler.OnNavigationCanceled(NavigationEventData eventData)
    {
        InputManager.Instance.PopModalInputHandler();
    }

    void IManipulationHandler.OnManipulationStarted(ManipulationEventData eventData)
    {
        if (!isNavigationEnabled)
        {
            InputManager.Instance.PushModalInputHandler(gameObject);

            manipulationOriginalPosition = transform.position;
        }
    }

    void IManipulationHandler.OnManipulationUpdated(ManipulationEventData eventData)
    {
        if (!isNavigationEnabled)
        {
            /* TODO: DEVELOPER CODING EXERCISE 4.a */

            // 4.a: Make this transform's position be the manipulationOriginalPosition + eventData.CumulativeDelta
            transform.position = manipulationOriginalPosition + eventData.CumulativeDelta;
        }
    }

    void IManipulationHandler.OnManipulationCompleted(ManipulationEventData eventData)
    {
        InputManager.Instance.PopModalInputHandler();
    }

    void IManipulationHandler.OnManipulationCanceled(ManipulationEventData eventData)
    {
        InputManager.Instance.PopModalInputHandler();
    }

    void ISpeechHandler.OnSpeechKeywordRecognized(SpeechEventData eventData)
    {
        if (eventData.RecognizedText.Equals("Move Astronaut"))
        {
            isNavigationEnabled = false;
        }
        else if (eventData.RecognizedText.Equals("Rotate Astronaut"))
        {
            isNavigationEnabled = true;
        }
        else
        {
            return;
        }

        eventData.Use();
    }
}

Compilazione e distribuzione

  • Ricompilare in Unity e quindi compilare e distribuire da Visual Studio per eseguire l'app in HoloLens.
  • Sposta la mano davanti a HoloLens e alza il dito dell'indice in modo che possa essere tracciata.
  • Concentrarsi sul cursore sull'astronauta.
  • Dire "Sposta astronauta" per spostare l'astronauta con un gesto di manipolazione.
  • Quattro frecce devono essere visualizzate intorno al cursore per indicare che il programma risponderà ora agli eventi Di manipolazione.
  • Abbassare il dito dell'indice fino al pollice e tenerli insieme.
  • Mentre si sposta la mano intorno, l'astronauta si muoverà troppo (questa è Manipolazione).
  • Alza il dito dell'indice per smettere di manipolare l'astronauta.
  • Nota: se non si dice "Sposta astronauta" prima di spostare la mano, il movimento di navigazione verrà invece usato.
  • Dire "Ruota astronauta" per tornare allo stato ruotabile.

Capitolo 5 - Espansione del modello

Obiettivi

  • Espandere il modello Astronaut in più pezzi più piccoli con cui l'utente può interagire.
  • Spostare ogni pezzo singolarmente usando i movimenti di spostamento e manipolazione.

Istruzioni

In questa sezione verranno eseguite le attività seguenti:

  1. Aggiungere una nuova parola chiave "Espandi modello" per espandere il modello astronauta.
  2. Aggiungere una nuova parola chiave "Reimposta modello" per restituire il modello al formato originale.

Questa operazione verrà eseguita aggiungendo due parole chiave all'origine input vocale dal capitolo precedente. Verrà inoltre illustrato un altro modo per gestire gli eventi di riconoscimento.

  1. Fare clic di nuovo su AstronautManager nel controllo e espandere la sezione Parole chiave nel controllo.
  2. Fare clic sul + lato destro per aggiungere una nuova parola chiave.
  3. Digitare la parola chiave come modello di espansione. Se desiderato, è possibile aggiungere un tasto di scelta rapida.
  4. Fare clic sul + lato destro per aggiungere una nuova parola chiave.
  5. Digitare la parola chiave come modello di reimpostazione. Se desiderato, è possibile aggiungere un tasto di scelta rapida.
  6. Nel pannello Controllo fare clic sul pulsante Aggiungi componente .
  7. Nel menu digitare nella casella di ricerca Gestore input voce. Selezionare il risultato della ricerca.
  8. Check Is Global Listener, poiché vogliamo che questi comandi funzionino indipendentemente dal GameObject che stiamo concentrando.
  9. Fare clic sul + pulsante e selezionare Espandi modello nell'elenco a discesa Parola chiave.
  10. Fare clic sull'oggetto + in Risposta e trascinare AstronautManager dal campo Gerarchia nel campo None (Oggetto).
  11. Fare quindi clic sull'elenco a discesa Nessuna funzione , selezionare AstronautManager, quindi ExpandModelCommand.
  12. Fare clic sul pulsante Gestore input vocale e selezionare Reimposta modello nell'elenco + a discesa Parola chiave.
  13. Fare clic sull'oggetto + in Risposta e trascinare AstronautManager dal campo Gerarchia nel campo None (Oggetto).
  14. Fare quindi clic sull'elenco a discesa Nessuna funzione , selezionare AstronautManager, quindi ResetModelCommand.

Come configurare l'origine di input vocale e il gestore per il capitolo 5

Compilazione e distribuzione

  • Prova Compilare e distribuire l'app in HoloLens.
  • Si supponga di espandere modello per visualizzare il modello astronauta espanso.
  • Usare Navigation per ruotare singoli pezzi dell'abito astronauta.
  • Dire Sposta astronauta e quindi usare Manipolazione per spostare singoli pezzi dell'abito astronauta.
  • Dire Ruota astronauta per ruotare di nuovo i pezzi.
  • Dire Reimposta modello per restituire l'astronauta alla sua forma originale.

La fine

Congratulazioni! L'input MR 211 è stato completato.

  • È possibile rilevare e rispondere agli eventi di rilevamento delle mani, navigazione e manipolazione.
  • Si capisce la differenza tra i movimenti di spostamento e manipolazione.
  • Si sa come modificare il cursore per fornire feedback visivi per quando viene rilevata una mano, quando una mano sta per essere persa e per quando un oggetto supporta interazioni diverse (navigazione e manipolazione).