HoloLens (1. Generation) Eingabe 210: Blick

Wichtig

Die Mixed Reality Academy-Tutorials wurden unter Berücksichtigung von HoloLens (1. Generation), Unity 2017 und Mixed Reality Immersive Headsets entwickelt. 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 Tutorials werden nicht mit den neuesten Toolsets oder Interaktionen aktualisiert, die für HoloLens 2 verwendet werden, und sind möglicherweise nicht mit neueren Versionen von Unity kompatibel. 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.

Gaze ist die erste Form der Eingabe und zeigt die Absicht und das Bewusstsein des Benutzers. MR Input 210 (auch bekannt als Project Explorer) ist ein tiefer Einblick in blickbezogene Konzepte für Windows Mixed Reality. Wir werden unseren Cursor und Hologrammen kontextbezogenes Bewusstsein hinzufügen und die Vorteile ihrer App über den Blick des Benutzers voll ausnutzen.

Wir haben hier einen freundlichen Astronauten, der Ihnen hilft, Blickkonzepte zu lernen. In MR Basics 101 hatten wir einen einfachen Cursor, der Ihrem Blick nur folgte. Heute gehen wir einen Schritt über den einfachen Cursor hinaus:

  • Wir machen den Cursor und unsere Hologramme aufmerksam: Beide ändern sich je nachdem, wohin der Benutzer sucht – oder wo der Benutzer nicht sucht. Dies macht sie kontextbewusst.
  • Wir werden feedback zu unseren Cursor- und Hologrammen hinzufügen, um dem Benutzer mehr Kontext zu geben, was anvisiert wird. Dieses Feedback kann audio- und visuell sein.
  • Wir zeigen Ihnen Targeting-Techniken, die Benutzern helfen, kleinere Ziele zu erreichen.
  • Wir zeigen Ihnen, wie Sie den Benutzer mit einer Richtungsanzeige auf Ihre Hologramme aufmerksam machen.
  • Wir werden Ihnen Techniken beibringen, um Ihre Hologramme mit dem Benutzer zu nehmen, während er sich in Ihrer Welt bewegt.

Wichtig

Die in den folgenden Kapiteln eingebetteten Videos wurden mit einer älteren Version von Unity und dem Mixed Reality Toolkit aufgezeichnet. Obwohl die Schritt-für-Schritt-Anweisungen genau und aktuell sind, sehen Sie möglicherweise Skripts und Visuals in den entsprechenden Videos, die veraltet sind. Die Videos bleiben für die Nachwelt enthalten, und da die behandelten Konzepte weiterhin gelten.

Geräteunterstützung

Kurs HoloLens Immersive Headsets
MR-Eingabe 210: Anvisieren ✔️ ✔️

Vorbereitung

Voraussetzungen

Projektdateien

  • Laden Sie die für das Projekt erforderlichen Dateien herunter. 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

  • In Visual Studio muss "Nur mein Code" unter Tools-Options-Debugging>> deaktiviert (deaktiviert) werden, um Haltepunkte im Code zu erreichen.

Kapitel 1: Unity-Einrichtung

Ziele

  • Optimieren von Unity für die HoloLens-Entwicklung
  • Importieren von Assets und Einrichten der Szene
  • Zeigen Sie den Astronauten in der HoloLens an.

Anweisungen

  1. Starten Sie Unity.
  2. Wählen Sie auf Neues Projekt aus.
  3. Nennen Sie das Projekt ModelExplorer.
  4. Geben Sie den Speicherort als Ordner Gaze ein, den Sie zuvor nicht archiviert haben.
  5. Stellen Sie sicher, dass das Projekt auf 3D festgelegt ist.
  6. Klicken Sie auf Projekt erstellen.

Unity-Einstellungen für HoloLens

Wir müssen Unity mitteilen, dass die App, die wir exportieren möchten, eine immersive Ansicht anstelle einer 2D-Ansicht erstellen sollte. Dazu fügen wir HoloLens als Virtual Reality-Gerät hinzu.

  1. Wechseln Sie zu Projekteinstellungen > bearbeiten > Player.
  2. Wählen Sie im Inspektorbereich für Playereinstellungen das Windows Store-Symbol aus.
  3. Erweitern Sie die Gruppe XR-Einstellungen.
  4. Aktivieren Sie im Abschnitt Rendering das Kontrollkästchen Virtuelle Realität unterstützt, um eine neue Liste mit Virtual Reality-SDKs hinzuzufügen.
  5. Überprüfen Sie, ob in der Liste Windows Mixed Reality angezeigt wird. Andernfalls wählen Sie die + Schaltfläche am unteren Rand der Liste aus, und wählen Sie Windows Holographic aus.

Als Nächstes müssen wir unser Skript-Back-End auf .NET festlegen.

  1. Wechseln Sie zu Projekteinstellungen > bearbeiten > Player (möglicherweise haben Sie dies noch aus dem vorherigen Schritt).
  2. Wählen Sie im Inspektorbereich für Playereinstellungen das Windows Store-Symbol aus.
  3. Stellen Sie im Abschnitt Konfiguration der anderen Einstellungen sicher, dass skriptendes Back-End auf .NET festgelegt ist.

Schließlich aktualisieren wir unsere Qualitätseinstellungen, um eine schnelle Leistung auf HoloLens zu erzielen.

  1. Wechseln Sie zu Projekteinstellungen > bearbeiten > Qualität.
  2. Klicken Sie in der Zeile Standard unter dem Windows Store-Symbol auf den nach unten zeigenden Pfeil.
  3. Wählen Sie Für Windows Store-Appsdie Option Sehr niedrig aus.

Importieren von Projektressourcen

  1. Klicken Sie im Projektbereich mit der rechten Maustaste auf den Ordner Assets.
  2. Klicken Sie auf Benutzerdefiniertes Paket > importieren.
  3. Navigieren Sie zu den heruntergeladenen Projektdateien, und klicken Sie auf ModelExplorer.unitypackage.
  4. Klicken Sie auf Öffnen.
  5. Klicken Sie nach dem Laden des Pakets auf die Schaltfläche Importieren .

Einrichten der Szene

  1. Löschen Sie in der Hierarchie die Hauptkamera.
  2. Öffnen Sie im Ordner HoloToolkit den Ordner Eingabe , und öffnen Sie dann den Ordner Prefabs .
  3. Ziehen Sie das MixedRealityCameraParent-Prefab aus dem Ordner Prefabs in die Hierarchie.
  4. Klicken Sie mit der rechten Maustaste auf das Direktionale Licht in der Hierarchie, und wählen Sie Löschen aus.
  5. Ziehen Sie im Ordner Holograms die folgenden Ressourcen in den Stamm der Hierarchie:
    • AstroMan
    • Lichter
    • SpaceAudioSource
    • SpaceBackground
  6. Starten Sie den Wiedergabemodus ▶, um den Astronauten anzuzeigen.
  7. Klicken Sie erneut auf Wiedergabemodus ▶, um anzuhalten.
  8. Suchen Sie im Ordner Holograms nach dem Fitbox-Objekt , und ziehen Sie es in den Stamm der Hierarchie.
  9. Wählen Sie im Bereich Hierarchie das Feld Fitbox aus.
  10. Ziehen Sie die AstroMan-Auflistung aus der Hierarchie in die Hologram Collection-Eigenschaft des Fitbox-Bereichs im Bereich Inspector .

Speichern des Projekts

  1. Speichern Sie die neue Szene: Datei > "Szene speichern unter".
  2. Klicken Sie auf Neuer Ordner , und nennen Sie den Ordner Szenen.
  3. Nennen Sie die Datei "ModelExplorer", und speichern Sie sie im Ordner Scenes .

Erstellen des Projekts

  1. Wählen Sie in Unity Dateibuildeinstellungen >aus.
  2. Klicken Sie auf Offene Szenen hinzufügen , um die Szene hinzuzufügen.
  3. Wählen Sie in der Liste Plattform Universelle Windows-Plattform aus, und klicken Sie auf Plattform wechseln.
  4. Wenn Sie speziell für HoloLens entwickeln, legen Sie Zielgerät auf HoloLens fest. Lassen Sie es andernfalls auf einem beliebigen Gerät.
  5. Stellen Sie sicher , dass Buildtyp auf D3D festgelegt ist und das SDK auf Zuletzt installiert festgelegt ist (dies sollte SDK 16299 oder höher sein).
  6. Klicken Sie auf Erstellen.
  7. Erstellen Sie einen neuen Ordner mit dem Namen "App".
  8. Klicken Sie mit einem Klick auf den Ordner App .
  9. Drücken Sie Ordner auswählen.

Wenn Unity fertig ist, wird ein Explorer Fenster angezeigt.

  1. Öffnen Sie den Ordner App .
  2. Öffnen Sie die Visual Studio-Projektmappe ModelExplorer.

Wenn Sie in HoloLens bereitstellen:

  1. Ändern Sie mithilfe der oberen Symbolleiste in Visual Studio das Ziel von Debuggen 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 die IP-Adresse Ihres HoloLens-Geräts ein, und legen Sie den Authentifizierungsmodus auf Universal (Unverschlüsseltes Protokoll) fest. Klicken Sie auf Auswählen. Wenn Sie die IP-Adresse Ihres Geräts nicht kennen, suchen Sie unter Einstellungen > Netzwerk & Internet > Erweiterte Optionen.
  4. Klicken Sie in der oberen Menüleiste auf Debuggen –> Ohne Debuggen starten , oder drücken Sie STRG + F5. Wenn dies die erste Bereitstellung auf Ihrem Gerät ist, müssen Sie es mit Visual Studio koppeln.
  5. Wenn die App bereitgestellt wurde, schließen Sie die Fitbox mit einer Select-Geste.

Bei der Bereitstellung in einem immersiven Headset:

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

Kapitel 2: Cursor- und Zielfeedback

Ziele

  • Visueller Cursorentwurf und -verhalten.
  • Blickbasiertes Cursorfeedback.
  • Blickbasiertes Hologrammfeedback.

Wir werden unsere Arbeit auf einigen Cursorentwurfsprinzipien stützen, nämlich:

  • Der Cursor ist immer vorhanden.
  • Lassen Sie den Cursor nicht zu klein oder zu groß werden.
  • Vermeiden Sie das Blockieren von Inhalten.

Anweisungen

  1. Suchen Sie im Ordner HoloToolkit\Input\Prefabs nach dem InputManager-Objekt .
  2. Ziehen Sie den InputManager auf die Hierarchie, und legen Sie ihn ab.
  3. Suchen Sie im Ordner HoloToolkit\Input\Prefabs nach dem Objekt Cursor .
  4. Ziehen Sie den Cursor auf die Hierarchie, und legen Sie ihn ab.
  5. Wählen Sie das InputManager-Objekt in der Hierarchie aus.
  6. Ziehen Sie das Cursor-Objekt aus der Hierarchie in das Cursorfelddes InputManagers SimpleSinglePointerSelector am unteren Rand des Inspektors.

Einfache Einrichtung der Einzelzeigerauswahl

Erstellen und Bereitstellen

  1. Erstellen Sie die App aus den Dateibuildeinstellungen >neu.
  2. Öffnen Sie den Ordner App.
  3. Öffnen Sie die Visual Studio-Projektmappe ModelExplorer.
  4. Klicken Sie auf Debuggen –> Ohne Debuggen starten, oder drücken Sie STRG + F5.
  5. Beobachten Sie, wie der Cursor gezeichnet wird und wie er das Aussehen ändert, wenn er ein Hologramm berührt.

Anweisungen

  1. Erweitern Sie im Hierarchiebereich das Objekt AstroMan-GEO_G-Back_Center>.>
  2. Doppelklicken Sie auf Interactible.cs , um es in Visual Studio zu öffnen.
  3. Heben Sie die Auskommentierung der Zeilen in den Rückrufen IFocusable.OnFocusEnter() und IFocusable.OnFocusExit() in Interactible.cs auf. Diese werden vom InputManager des Mixed Reality Toolkits aufgerufen, wenn der Fokus (entweder durch Blick oder durch Controllerzeigen) den Collider des bestimmten GameObject ein- und verlässt.
/* TODO: DEVELOPER CODING EXERCISE 2.d */

void IFocusable.OnFocusEnter()
{
    for (int i = 0; i < defaultMaterials.Length; i++)
    {
        // 2.d: Uncomment the below line to highlight the material when gaze enters.
        defaultMaterials[i].EnableKeyword("_ENVIRONMENT_COLORING");
    }
}

void IFocusable.OnFocusExit()
{
    for (int i = 0; i < defaultMaterials.Length; i++)
    {
        // 2.d: Uncomment the below line to remove highlight on material when gaze exits.
        defaultMaterials[i].DisableKeyword("_ENVIRONMENT_COLORING");
    }
}

Hinweis

Wir verwenden EnableKeyword und DisableKeyword höher. Um diese in Ihrer eigenen App mit dem Standard-Shader des Toolkits nutzen zu können, müssen Sie die Unity-Richtlinien für den Zugriff auf Materialien per Skript befolgen. In diesem Fall haben wir bereits die drei Varianten des hervorgehobenen Materials in den Ordner Ressourcen aufgenommen (suchen Sie nach den drei Materialien mit Hervorhebung im Namen).

Erstellen und Bereitstellen

  1. Erstellen Sie wie zuvor das Projekt, und stellen Sie es in holoLens bereit.
  2. Beobachten Sie, was geschieht, wenn der Blick auf ein Objekt gerichtet ist und wann es nicht ist.

Kapitel 3: Targeting-Techniken

Ziele

  • Vereinfachen Sie die Zielziele für Hologramme.
  • Stabilisieren sie natürliche Kopfbewegungen.

Anweisungen

  1. Wählen Sie im Hierarchiebereich das InputManager-Objekt aus.
  2. Suchen Sie im Bereich Inspektor nach dem Skript "Gaze Stabilizer ". Klicken Sie darauf, um in Visual Studio zu öffnen, wenn Sie einen Blick darauf werfen möchten.
    • Dieses Skript durchläuft Stichproben von Raycast-Daten und trägt dazu bei, den Blick des Benutzers auf die Zielgenauigkeit zu stabilisieren.
  3. Im Inspektor können Sie den Wert gespeicherte Stabilitätsbeispiele bearbeiten. Dieser Wert stellt die Anzahl der Proben dar, die der Stabilisierer zum Berechnen des stabilisierten Werts durchläuft.

Kapitel 4 : Richtungsanzeige

Ziele

  • Fügen Sie einen Richtungsindikator auf dem Cursor hinzu, um Hologramme zu finden.

Anweisungen

Wir verwenden die Datei DirectionIndicator.cs :

  1. Zeigen Sie die Richtungsanzeige an, wenn der Benutzer die Hologramme nicht anschaut.
  2. Blenden Sie die Richtungsanzeige aus, wenn der Benutzer die Hologramme betrachtet.
  3. Aktualisieren Sie den Richtungsindikator so, dass er auf die Hologramme zeigt.

Fangen wir also an.

  1. Klicken Sie im Hierarchiebereich auf das AstroMan-Objekt, und klicken Sie auf den Pfeil, um es zu erweitern.
  2. Wählen Sie im Hierarchiebereich unter AstroMan das Objekt DirectionalIndicator aus.
  3. Klicken Sie im Bereich Inspektor auf die Schaltfläche Komponente hinzufügen .
  4. Geben Sie im Menü das Suchfeld Richtungsanzeige ein. Wählen Sie das Suchergebnis aus.
  5. Ziehen Sie im Hierarchiebereich das Cursor-Objekt auf die Cursor-Eigenschaft im Inspektor.
  6. Ziehen Sie im Projektbereich im Ordner Hologramme das Objekt DirectionalIndicator auf die Eigenschaft Directional Indicator im Inspector.
  7. Erstellen Sie die App, und stellen Sie sie bereit.
  8. Sehen Sie sich an, wie das Objekt der Richtungsanzeige Ihnen hilft, den Astronauten zu finden.

Kapitel 5 : Billboarding

Ziele

  • Verwenden Sie Billboarding, um Hologramme immer auf Sie zu zeigen.

Wir verwenden die Billboard.cs-Datei , um ein GameObject so auszurichten, dass es dem Benutzer jederzeit zugewandt ist.

  1. Wählen Sie im Hierarchiebereich das AstroMan-Objekt aus.
  2. Klicken Sie im Bereich Inspektor auf die Schaltfläche Komponente hinzufügen .
  3. Geben Sie im Menü in das Suchfeld Billboard ein. Wählen Sie das Suchergebnis aus.
  4. Legen Sie im Inspector die Pivotachse auf Y fest.
  5. Testen Erstellen und bereitstellen Sie die App wie zuvor.
  6. Sehen Sie, wie das Billboard-Objekt Ihnen gegenüber steht, unabhängig davon, wie Sie den Standpunkt ändern.
  7. Löschen Sie das Skript vorerst aus dem AstroMan .

Kapitel 6 – Tag-Along

Ziele

  • Verwenden Sie Tag-Along, damit uns unsere Hologramme im Raum folgen.

Während wir an diesem Problem arbeiten, werden wir von den folgenden Entwurfseinschränkungen geleitet:

  • Inhalte sollten immer einen Blick entfernt sein.
  • Inhalte sollten nicht im Weg stehen.
  • Inhalte mit Kopfsperre sind unangenehm.

Die hier verwendete Lösung besteht darin, einen "Tag-Along"-Ansatz zu verwenden.

Ein Tag-entlang-Objekt verlässt nie vollständig die Ansicht des Benutzers. Sie können sich das tag-along als ein Objekt vorstellen, das durch Gummibänder an den Kopf des Benutzers angefügt ist. Während sich der Benutzer bewegt, bleibt der Inhalt innerhalb eines einfachen Blicks, indem er zum Rand der Ansicht gleiten lässt, ohne vollständig zu verlassen. Wenn der Benutzer auf das Tag-entlang-Objekt zuschaut, wird es vollständiger angezeigt.

Wir verwenden die Datei SimpleTagalong.cs :

  1. Ermitteln Sie, ob sich das Tag-Along -Objekt innerhalb der Kameragrenzen befindet.
  2. Wenn nicht innerhalb des Ansichts frustums, positionieren Sie die Tag-Along teilweise innerhalb des Ansichts frustum.
  3. Andernfalls positionieren Sie den Tag-Along in einem Standardabstand zum Benutzer.

Dazu müssen wir zuerst das Skript Interactible.cs ändern, um tagalongAction aufzurufen.

  1. Bearbeiten Sie Interactible.cs , indem Sie die Codierungsübung 6.a abschließen (Auskommentierung der Zeilen 84 bis 87 aufheben).
/* TODO: DEVELOPER CODING EXERCISE 6.a */
// 6.a: Uncomment the lines below to perform a Tagalong action.
if (interactibleAction != null)
{
    interactibleAction.PerformAction();
}

Das Skript InteractibleAction.cs in Kombination mit Interactible.cs führt benutzerdefinierte Aktionen aus, wenn Sie auf Hologramme tippen. In diesem Fall verwenden wir eine speziell für tag-along.

  • Klicken Sie im Ordner Skripts auf das Objekt TagalongAction.cs , um in Visual Studio zu öffnen.
  • Führen Sie die Codierungsübung aus, oder ändern Sie sie in folgendes:
    • Geben Sie oben in der Hierarchie in der Suchleiste ChestButton_Center ein, und wählen Sie das Ergebnis aus.
    • Klicken Sie im Bereich Inspektor auf die Schaltfläche Komponente hinzufügen .
    • Geben Sie im Menü tagalong Action in das Suchfeld ein. Wählen Sie das Suchergebnis aus.
    • Suchen Sie im Ordner Holograms das Tagalong-Objekt .
    • Wählen Sie das ChestButton_Center-Objekt in der Hierarchie aus. Ziehen Sie das TagAlong-Objekt aus dem Project-Bereich auf den Inspector in die Object To Tagalong-Eigenschaft .
    • Ziehen Sie das Tagalong Action-Objekt aus dem Inspektor in das Feld Interagierbare Aktion im interagierbaren Skript.
  • Doppelklicken Sie auf das TagalongAction-Skript , um es in Visual Studio zu öffnen.

Interaktionsfähige Einrichtung

Wir müssen Folgendes hinzufügen:

  • Fügen Sie der PerformAction-Funktion im TagalongAction-Skript (geerbt von InteractibleAction) Funktionalität hinzu.
  • Fügen Sie dem angezeigten Objekt Billboarding hinzu, und legen Sie die Pivotachse auf XY fest.
  • Fügen Sie dem Objekt dann einfache Tag-Along hinzu.

Hier sehen Sie unsere Lösung von TagalongAction.cs:

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See LICENSE in the project root for license information.

using HoloToolkit.Unity;
using UnityEngine;

public class TagalongAction : InteractibleAction
{
    [SerializeField]
    [Tooltip("Drag the Tagalong prefab asset you want to display.")]
    private GameObject objectToTagalong;

    private void Awake()
    {
        if (objectToTagalong != null)
        {
            objectToTagalong = Instantiate(objectToTagalong);
            objectToTagalong.SetActive(false);

            /* TODO: DEVELOPER CODING EXERCISE 6.b */

            // 6.b: AddComponent Billboard to objectToTagAlong,
            // so it's always facing the user as they move.
            Billboard billboard = objectToTagalong.AddComponent<Billboard>();

            // 6.b: AddComponent SimpleTagalong to objectToTagAlong,
            // so it's always following the user as they move.
            objectToTagalong.AddComponent<SimpleTagalong>();

            // 6.b: Set any public properties you wish to experiment with.
            billboard.PivotAxis = PivotAxis.XY; // Already the default, but provided in case you want to edit
        }
    }

    public override void PerformAction()
    {
        // Recommend having only one tagalong.
        if (objectToTagalong == null || objectToTagalong.activeSelf)
        {
            return;
        }

        objectToTagalong.SetActive(true);
    }
}
  • Testen Erstellen Sie die App, und stellen Sie sie bereit.
  • Sehen Sie sich an, wie der Inhalt der Mitte des Blickpunkts folgt, aber nicht kontinuierlich und ohne ihn zu blockieren.