HoloLens (1. Generation) Eingabe 211: Geste

Wichtig

Die Mixed Reality Academy-Lernprogramme wurden mit HoloLens (1. Generation), Unity 2017 und Mixed Reality immersiven Headsets entworfen. Daher halten wir es für wichtig, diese Tutorials für Entwickler verfügbar zu halten, die noch nach Anleitung beim Entwickeln für diese Geräte suchen. Diese Lernprogramme werden nicht mit den neuesten Toolsets oder Interaktionen aktualisiert, die für HoloLens 2 verwendet werden und möglicherweise nicht mit neueren Versionen von Unity kompatibel sind. Sie werden gewartet, um weiterhin auf den unterstützten Geräten zu funktionieren. Es wurde eine neue Reihe von Tutorials für HoloLens 2 veröffentlicht.

Gesten verwandeln die Absicht des Benutzers in Aktion. Mithilfe von Gesten können Benutzer mit Hologrammen interagieren. In diesem Kurs erfahren wir, wie Sie die Hände des Benutzers nachverfolgen, auf Benutzereingaben reagieren und dem Benutzer Feedback geben, basierend auf dem Handzustand und der Position.

In MR Basics 101 haben wir eine einfache Luftkippbewegung verwendet, um mit unseren Hologrammen zu interagieren. Jetzt werden wir über die Luft tippen-Geste hinausgehen und neue Konzepte erkunden, um:

  • Erkennen Sie, wann die Hand des Benutzers nachverfolgt wird, und geben Sie dem Benutzer Feedback.
  • Verwenden Sie eine Navigationsgeste, um unsere Hologramme zu drehen.
  • Geben Sie Feedback an, wenn die Hand des Benutzers nicht mehr angezeigt wird.
  • Verwenden Sie Manipulationsereignisse, damit Benutzer Hologramme mit ihren Händen verschieben können.

In diesem Kurs überprüfen wir den Unity-Projektmodell-Explorer, den wir in MR Input 210 erstellt haben. Unser Astronautenfreund ist zurück, um uns bei der Erkundung dieser neuen Gestikkonzepte zu unterstützen.

Wichtig

Die in den folgenden Kapiteln eingebetteten Videos wurden mit einer älteren Version von Unity und dem Mixed Reality Toolkit aufgezeichnet. Während die schrittweisen Anweisungen genau und aktuell sind, werden möglicherweise Skripts und Visuelle in den entsprechenden Videos angezeigt, die veraltet sind. Die Videos bleiben für die Posterität enthalten, und da die behandelten Konzepte weiterhin gelten.

Geräteunterstützung

Kurs HoloLens Immersive Headsets
MR-Eingabe 211: Geste ✔️ ✔️

Vorbereitung

Voraussetzungen

Projektdateien

  • Laden Sie die dateien herunter, die für das Projekt erforderlich sind. Erfordert Unity 2017.2 oder höher.
  • Heben Sie die Archivierung der Dateien auf Ihrem Desktop oder einem anderen leicht zu erreichenden Speicherort auf.

Hinweis

Wenn Sie den Quellcode vor dem Herunterladen durchsehen möchten, ist er auf GitHub verfügbar.

Errata und Notizen

  • "Just My Code aktivieren" muss in Visual Studio unter Tools-Options-Debugging>> deaktiviert werden, um Haltepunkte in Ihrem Code zu treffen.

Kapitel 0 – Unity Setup

Anweisungen

  1. Starten Sie Unity.
  2. Klicken Sie auf Öffnen.
  3. Navigieren Sie zum Gestenordner , den Sie zuvor nicht archiviert haben.
  4. Suchen und auswählen Sie den Ordner "StartingModel/Explorer".
  5. Klicken Sie auf die Schaltfläche "Ordner auswählen ".
  6. Erweitern Sie im bereich Project den Ordner "Szenen".
  7. Doppelklicken Sie auf "ModelExplorer "-Szene, um sie in Unity zu laden.

Erstellen

  1. Wählen Sie in Unity Einstellungen "Datei > erstellen" aus.
  2. Wenn "Szenen/ModelExplorer " nicht in "Szenen im Build" aufgeführt ist, klicken Sie auf " Szenen hinzufügen", um die Szene hinzuzufügen.
  3. Wenn Sie speziell für HoloLens entwickeln, legen Sie das Zielgerätauf HoloLens fest. Lassen Sie es andernfalls auf jedem Gerät.
  4. Stellen Sie sicher, dass der Buildtyp auf D3D festgelegt ist und das SDK auf "Neueste Installation " festgelegt ist (das sollte sdk 16299 oder neuer sein).
  5. Klicken Sie auf Erstellen.
  6. Erstellen Sie einen neuen Ordner namens "App".
  7. Klicken Sie einfach auf den App-Ordner .
  8. Drücken Sie "Ordner auswählen", und Unity beginnt mit dem Erstellen des Projekts für Visual Studio.

Wenn Unity abgeschlossen ist, wird ein Explorer Fenster angezeigt.

  1. Öffnen Sie den App-Ordner .
  2. Öffnen Sie die ModelExplorer Visual Studio Lösung.

Wenn sie für HoloLens bereitgestellt werden:

  1. Ändern Sie mithilfe der oberen Symbolleiste in Visual Studio das Ziel von Debug in Release und von ARM in x86.
  2. Klicken Sie auf den Dropdownpfeil neben der Schaltfläche "Lokaler Computer", und wählen Sie "Remotecomputer" aus.
  3. Geben Sie Ihre HoloLens Geräte-IP-Adresse ein, und legen Sie den Authentifizierungsmodus auf universelles (unverschlüsseltes Protokoll) fest. Klicken Sie auf Auswählen. Wenn Sie Ihre Geräte-IP-Adresse nicht kennen, suchen Sie in Einstellungen > Erweiterten Netzwerk-Internetoptionen &>.
  4. Klicken Sie in der oberen Menüleiste auf "Debuggen" –> Ohne Debuggen starten oder STRG+F5 drücken. Wenn dies beim ersten Bereitstellen auf Ihrem Gerät der Fall ist, müssen Sie es mit Visual Studio koppeln.
  5. Wenn die App bereitgestellt wurde, schließen Sie den Posteingang mit einer Auswahlbewegung.

Wenn Sie ein immersives Headset bereitstellen:

  1. Ändern Sie mithilfe der oberen Symbolleiste in Visual Studio das Ziel von Debug in Release und von ARM in x64.
  2. Stellen Sie sicher, dass das Bereitstellungsziel auf lokalen Computer festgelegt ist.
  3. Klicken Sie in der oberen Menüleiste auf "Debuggen" –> Ohne Debuggen starten oder STRG+F5 drücken.
  4. Wenn die App bereitgestellt wurde, schließen Sie den Posteingang , indem Sie den Trigger auf einem Bewegungscontroller ziehen.

Hinweis

Möglicherweise werden im Bereich "Visual Studio Fehler" einige rote Fehler angezeigt. Es ist sicher, sie zu ignorieren. Wechseln Sie zum Ausgabebereich, um den tatsächlichen Buildfortschritt anzuzeigen. Fehler im Ausgabebereich erfordern, dass Sie eine Behebung vornehmen (meistens werden sie durch einen Fehler in einem Skript verursacht).

Kapitel 1 – Hand erkanntes Feedback

Ziele

  • Abonnieren sie Handverfolgungsereignisse.
  • Verwenden Sie Cursorfeedback, um Benutzern anzuzeigen, wenn eine Hand nachverfolgt wird.

Hinweis

Auf HoloLens 2 erkannten Hände Feuer, wenn Hände sichtbar sind (nicht nur, wenn ein Finger nach oben zeigt).

Anweisungen

  • Erweitern Sie im Hierarchiebereich das InputManager-Objekt .
  • Suchen Sie nach dem GestenInput-Objekt , und wählen Sie es aus.

Das Script InteractionInputSource.cs führt die folgenden Schritte aus:

  1. Abonniert die Ereignisse InteractionSourceDetected and InteractionSourceLost.
  2. Legt den HandDetected-Zustand fest.
  3. Abmelden von Den Ereignissen "InteractionSourceDetected" und "InteractionSourceLost".

Als Nächstes aktualisieren wir den Cursor von MR Input 210 in eine, die Feedback abhängig von den Aktionen des Benutzers anzeigt.

  1. Wählen Sie im Hierarchiebereich das Cursorobjekt aus, und löschen Sie sie.
  2. Suchen Sie im Project bereich nach CursorWithFeedback, und ziehen Sie sie in das Hierarchiebereich.
  3. Klicken Sie im Hierarchiebereich auf "InputManager", und ziehen Sie dann das CursorWithFeedback-Objekt aus der Hierarchie in das Cursorfeld desInputManagers"SimpleSinglePointerSelector" unten im Inspektor.
  4. Klicken Sie auf den CursorWithFeedback in der Hierarchie.
  5. Erweitern Sie im InspektorbereichCursorstatusdaten im Objektcursorskript .

Die Cursorstatusdaten funktionieren wie folgt:

  • Jeder Beobachtungszustand bedeutet, dass keine Hand erkannt wird, und der Benutzer sieht einfach um.
  • Jeder Interaktionszustand bedeutet, dass ein Hand- oder Controller erkannt wird.
  • Jeder Hover-Zustand bedeutet, dass der Benutzer ein Hologramm betrachtet.

Erstellen und Bereitstellen

  • Verwenden Sie in Unity file > Build Einstellungen, um die Anwendung neu zu erstellen.
  • Öffnen Sie den App-Ordner .
  • Wenn sie noch nicht geöffnet ist, öffnen Sie die ModelExplorer-Visual Studio Lösung.
    • (Wenn Sie dieses Projekt bereits in Visual Studio während der Einrichtung erstellt/bereitgestellt haben, können Sie diese Instanz von VS öffnen und dann auf 'Alle laden' klicken, wenn Sie aufgefordert werden).
  • Klicken Sie in Visual Studio auf Debuggen –> Debuggen starten oder STRG+F5 drücken.
  • Nachdem die Anwendung für die HoloLens bereitgestellt wurde, schließen Sie den Posteingang mithilfe der Lufteingabegeste ab.
  • Bewegen Sie Ihre Hand in die Ansicht, und zeigen Sie den Indexfinger auf den Himmel, um die Handverfolgung zu starten.
  • Bewegen Sie Ihre Hand nach links, rechts, nach oben und unten.
  • Schauen Sie sich an, wie sich der Cursor ändert, wenn Ihre Hand erkannt und dann aus der Ansicht verloren geht.
  • Wenn Sie sich auf einem immersiven Headset befinden, müssen Sie Ihren Controller verbinden und trennen. Dieses Feedback wird weniger interessant auf einem immersiven Gerät, da ein verbundener Controller immer "verfügbar" ist.

Kapitel 2 – Navigation

Ziele

  • Verwenden Sie Navigationsgestenereignisse, um den Astronauten zu drehen.

Anweisungen

Um Navigationsgesten in unserer App zu verwenden, werden wir Gesten bearbeiten, um Objekte zu drehen, wenn die Navigationsgeste auftritt. Darüber hinaus fügen wir dem Cursor Feedback hinzu, um anzuzeigen, wenn die Navigation verfügbar ist.

  1. Erweitern Sie im HierarchiebereichCursorWithFeedback.
  2. Suchen Sie im Ordner Hologramme das ScrollFeedback-Objekt.
  3. Ziehen Sie das ScrollFeedback-Prefab auf das CursorWithFeedback GameObject in der Hierarchie.
  4. Klicken Sie auf CursorWithFeedback.
  5. Klicken Sie im Inspektorbereich auf die Schaltfläche "Komponente hinzufügen ".
  6. Geben Sie im Menü das Suchfeld CursorFeedback ein. Wählen Sie das Suchergebnisse aus.
  7. Ziehen Sie das ScrollFeedback-Objekt aus der Hierarchie auf die Scroll Detected Game Object-Eigenschaft in der Cursorfeedback-Komponente im Inspektor.
  8. Wählen Sie im Hierarchiebereich das AstroMan-Objekt aus.
  9. Klicken Sie im Inspektorbereich auf die Schaltfläche "Komponente hinzufügen ".
  10. Geben Sie im Menü die Gestenaktion im Suchfeld ein. Wählen Sie das Suchergebnisse aus.

Öffnen Sie als Nächstes gestaction.cs in Visual Studio. Bearbeiten Sie in der Codierungsübung 2.c das Skript, um folgendes auszuführen:

  1. Drehen Sie das AstroMan-Objekt , wenn eine Navigationsgeste ausgeführt wird.
  2. Berechnen Sie den Drehfaktor , um die auf das Objekt angewendete Drehung zu steuern.
  3. Drehen Sie das Objekt um die y-Achse, wenn der Benutzer seine Hand links oder rechts bewegt.

Vollständige Codierungsübungen 2.c im Skript oder ersetzen Sie den Code durch die folgende Lösung:

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();
    }
}

Sie werden feststellen, dass die anderen Navigationsereignisse bereits mit einigen Informationen gefüllt sind. Wir pushen das GameObject auf den Modalstapel des Toolkits, sodass der Benutzer den Fokus auf den Astronauten nicht beibehalten muss, sobald die Drehung begonnen hat. Entsprechend füllen wir das GameObject aus dem Stapel, sobald die Geste abgeschlossen ist.

Erstellen und Bereitstellen

  1. Erstellen Sie die Anwendung in Unity neu, und erstellen Sie sie dann aus Visual Studio, um sie im HoloLens auszuführen.
  2. Sehen Sie sich den Astronauten an, zwei Pfeile sollten auf einer seite des Cursors angezeigt werden. Dieses neue Visuelle gibt an, dass der Astronaut gedreht werden kann.
  3. Platzieren Sie Ihre Hand in der bereiten Position (Index finger auf den Himmel) so dass die HoloLens beginnen, Ihre Hand zu verfolgen.
  4. Um den Astronauten zu drehen, senken Sie Den Index finger auf eine Anheftungsposition, und bewegen Sie dann Ihre Hand nach links oder rechts, um die NavigationX-Geste auszulösen.

Kapitel 3 – Handleitfaden

Ziele

  • Verwenden Sie die Handleitbewertung , um zu erwarten, wann die Handverfolgung verloren geht.
  • Geben Sie Feedback zum Cursor an, um anzuzeigen, wenn die Hand des Benutzers den Rand der Ansicht der Kamera nähert.

Anweisungen

  1. Wählen Sie im Hierarchiebereich das CursorWithFeedback-Objekt aus.
  2. Klicken Sie im Inspektorbereich auf die Schaltfläche "Komponente hinzufügen ".
  3. Geben Sie im Menü die Handleitlinien im Suchfeld ein. Wählen Sie das Suchergebnisse aus.
  4. Suchen Sie im Project Bereich Hologramme Ordners das HandGuidanceFeedback-Objekt.
  5. Ziehen Sie das HandGuidanceFeedback-Objekt auf die Handleitanzeige-Eigenschaft im Inspektorbereich .

Erstellen und Bereitstellen

  • Erstellen Sie die Anwendung in Unity neu, und erstellen Sie dann von Visual Studio aus, um die App auf HoloLens zu erleben.
  • Bringen Sie Ihre Hand in die Ansicht, und heben Sie den Indexfinger auf, um nachverfolgt zu werden.
  • Starten Sie die Drehung des Astronauten mit der Navigationsgeste (Heften Sie den Index finger und den Daumen zusammen).
  • Bewegen Sie Ihre Hand weit links, rechts, nach oben und unten.
  • Wenn Ihre Hand den Rand des Gestenrahmens nähert, sollte ein Pfeil neben dem Cursor angezeigt werden, um Sie zu warnen, dass die Handverfolgung verloren geht. Der Pfeil gibt an, welche Richtung Sie ihre Hand verschieben möchten, um zu verhindern, dass die Nachverfolgung verloren geht.

Kapitel 4 – Manipulation

Ziele

  • Verwenden Sie Manipulationsereignisse, um den Astronauten mit Ihren Händen zu bewegen.
  • Geben Sie Feedback zum Cursor an, um dem Benutzer mitzuteilen, wann Manipulation verwendet werden kann.

Anweisungen

GestManager.cs und AstronautManager.cs ermöglichen uns folgendes:

  1. Verwenden Sie das Sprachwort "Move Astronaut", um Manipulationsgesten und "Drehe Astronaut" zu aktivieren, um sie zu deaktivieren.
  2. Wechseln Sie zum Reagieren auf die Manipulationsgestenerkennung.

Fangen wir also an.

  1. Erstellen Sie im Bereich "Hierarchie " ein neues leeres GameObject. Nennen Sie ihn "AstronautManager".
  2. Klicken Sie im Inspektorbereich auf die Schaltfläche "Komponente hinzufügen ".
  3. Geben Sie im Menü im Suchfeld Astronaut Manager ein. Wählen Sie das Suchergebnisse aus.
  4. Klicken Sie im Inspektorbereich auf die Schaltfläche "Komponente hinzufügen ".
  5. Geben Sie im Menü das Suchfeld "Spracheingabequelle" ein. Wählen Sie das Suchergebnisse aus.

Wir fügen nun die Sprachbefehle hinzu, die zum Steuern des Interaktionszustands des Astronauten erforderlich sind.

  1. Erweitern Sie den Abschnitt "Schlüsselwörter " im Inspektor.
  2. Klicken Sie auf der + rechten Seite, um ein neues Schlüsselwort hinzuzufügen.
  3. Geben Sie das Schlüsselwort als Move Astronaut ein. Sie können bei Bedarf eine Tastenkombination hinzufügen.
  4. Klicken Sie auf der + rechten Seite, um ein neues Schlüsselwort hinzuzufügen.
  5. Geben Sie das Schlüsselwort als Dreh-Astronaut ein. Sie können bei Bedarf eine Tastenkombination hinzufügen.
  6. Der entsprechende Handlercode finden Sie in GestAction.cs im ISpeechHandler.OnSpeechKeywordRecognized Handler.

How to set-up the Speech Input Source for chapter 4

Als Nächstes richten wir das Manipulationsfeedback für den Cursor ein.

  1. Suchen Sie im Project Bereich Hologramme Ordners das PathingFeedback-Objekt.
  2. Ziehen Und ablegen Sie den PathingFeedback-Prefab auf das CursorWithFeedback-Objekt in der Hierarchie.
  3. Klicken Sie im Hierarchiebereich auf CursorWithFeedback.
  4. Ziehen Sie das PathingFeedback-Objekt aus der Hierarchie auf die Eigenschaft "Pathing Detected Game Object " in der Cursorfeedback-Komponente im Inspektor.

Jetzt müssen wir Code zu GestureAction.cs hinzufügen, um Folgendes zu aktivieren:

  1. Fügen Sie code zur Funktion IManipulationHandler.OnManipulationUpdated hinzu, die den Astronauten bewegt, wenn eine Manipulationsgeste erkannt wird.
  2. Berechnen Sie den Bewegungsvektor , um zu bestimmen, wo der Astronaut basierend auf der Handposition verschoben werden soll.
  3. Bewegen Sie den Astronauten an die neue Position.

Vollständige Codierungsübung 4.a in GestureAction.cs oder verwenden Sie unsere vollständige Lösung unten:

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();
    }
}

Erstellen und Bereitstellen

  • Erstellen Sie in Unity neu, und erstellen Sie sie dann aus Visual Studio, um die App in HoloLens auszuführen.
  • Bewegen Sie Ihre Hand vor der HoloLens, und heben Sie den Indexfinger an, damit sie nachverfolgt werden kann.
  • Konzentrieren Sie den Cursor auf den Astronauten.
  • Sagen Sie "Move Astronaut", um den Astronauten mit einer Manipulationsgeste zu bewegen.
  • Vier Pfeile sollten um den Cursor herum angezeigt werden, um anzugeben, dass das Programm jetzt auf Manipulationsereignisse reagiert.
  • Senken Sie den Indexfinger auf den Daumen, und halten Sie sie zusammen.
  • Während Sie Ihre Hand bewegen, bewegt sich auch der Astronaut (dies ist Manipulation).
  • Heben Sie den Indexfinger auf, um die Manipulation des Astronauten zu beenden.
  • Hinweis: Wenn Sie vor dem Bewegen der Hand nicht "Move Astronaut" sagen, wird stattdessen die Navigationsgeste verwendet.
  • Sagen Sie "Drehen Sie Astronaut", um zum drehbaren Zustand zurückzukehren.

Kapitel 5 – Modellerweiterung

Ziele

  • Erweitern Sie das Astronaut-Modell in mehrere, kleinere Teile, mit denen der Benutzer interagieren kann.
  • Verschieben Sie jedes Element einzeln mithilfe von Navigations- und Manipulationsgesten.

Anweisungen

In diesem Abschnitt werden die folgenden Aufgaben ausgeführt:

  1. Fügen Sie ein neues Schlüsselwort "Expand Model" hinzu, um das Astronautenmodell zu erweitern.
  2. Fügen Sie ein neues Schlüsselwort "Reset Model" hinzu, um das Modell in das ursprüngliche Formular zurückzugeben.

Dazu fügen wir der Spracheingabequelle aus dem vorherigen Kapitel zwei weitere Schlüsselwörter hinzu. Außerdem zeigen wir eine weitere Möglichkeit zum Behandeln von Erkennungsereignissen.

  1. Klicken Sie im Inspektor auf "AstronautManager" zurück, und erweitern Sie den Abschnitt "Schlüsselwörter" im Inspektor.
  2. Klicken Sie auf der + rechten Seite, um ein neues Schlüsselwort hinzuzufügen.
  3. Geben Sie das Schlüsselwort als Erweiterungsmodell ein. Sie können bei Bedarf eine Tastenkombination hinzufügen.
  4. Klicken Sie auf der + rechten Seite, um ein neues Schlüsselwort hinzuzufügen.
  5. Geben Sie das Schlüsselwort als Zurücksetzensmodell ein. Sie können bei Bedarf eine Tastenkombination hinzufügen.
  6. Klicken Sie im Inspektorbereich auf die Schaltfläche " Komponente hinzufügen ".
  7. Geben Sie im Menü den Suchfeld -Eingabehandler ein. Wählen Sie das Suchergebnis aus.
  8. Check Is Global Listener, da wir möchten, dass diese Befehle unabhängig vom GameObject funktionieren, das wir konzentrieren.
  9. Klicken Sie auf die + Schaltfläche, und wählen Sie " Modell erweitern " aus der Dropdownliste "Schlüsselwort" aus.
  10. Klicken Sie auf die + unter "Antwort", und ziehen Sie den AstronautManager aus der Hierarchie in das Feld "None" (Objekt).
  11. Klicken Sie jetzt auf das Dropdown " Keine Funktion" , wählen Sie "AstronautManager" und dann "ExpandModelCommand" aus.
  12. Klicken Sie auf die Schaltfläche des Spracheingabehandlers + , und wählen Sie " Modell zurücksetzen " aus der Dropdownliste "Schlüsselwort" aus.
  13. Klicken Sie auf die + unter "Antwort", und ziehen Sie den AstronautManager aus der Hierarchie in das Feld "None" (Objekt).
  14. Klicken Sie jetzt auf das Dropdown " Keine Funktion" , wählen Sie "AstronautManager" und dann "ResetModelCommand" aus.

How to set-up the Speech Input Source and Handler for chapter 5

Erstellen und Bereitstellen

  • Testen Erstellen und Bereitstellen der App auf dem HoloLens.
  • Sagen Sie " "Expand Model ", um das erweiterte Astronautenmodell zu sehen.
  • Verwenden Sie die Navigation , um einzelne Teile des Astronautenanzugs zu drehen.
  • Sagen Sie Move Astronaut und verwenden Sie dann Manipulation , um einzelne Teile des Astronautenanzugs zu bewegen.
  • Sagen Sie, drehen Sie Astronaut, um die Teile wieder zu drehen.
  • Sagen Sie ,Modell zurücksetzen , um den Astronauten in seine ursprüngliche Form zurückzugeben.

Das Ende

Herzlichen Glückwunsch! Sie haben jetzt MR Input 211 abgeschlossen: Geste.

  • Sie wissen, wie Sie Handverfolgungs-, Navigations- und Manipulationsereignisse erkennen und reagieren.
  • Sie verstehen den Unterschied zwischen Navigations- und Manipulationsgesten.
  • Sie wissen, wie Sie den Cursor ändern, um visuelles Feedback zu geben, wenn eine Hand erkannt wird, wenn eine Hand verloren geht, und wann ein Objekt unterschiedliche Interaktionen unterstützt (Navigation vs Manipulation).