HoloLens (1. Generation) Eingabe 210: Blick

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.

Blick ist die erste Form der Eingabe und zeigt die Absicht und Sensibilisierung des Benutzers an. MR Input 210 (aka Project Explorer) ist ein tiefer Einblick in blickbezogene Konzepte für Windows Mixed Reality. Wir werden kontextbezogenes Bewusstsein zu unseren Cursor und Hologrammen hinzufügen, indem wir die Vorteile nutzen, die Ihre App über den Blick des Benutzers weiß.

Wir haben hier einen freundlichen Astronauten, um Ihnen dabei zu helfen, Blickkonzepte zu lernen. In MR Basics 101 hatten wir einen einfachen Cursor, der nur Ihren Blick verfolgte. Heute bewegen wir einen Schritt über den einfachen Cursor hinaus:

  • Wir machen den Cursor und unsere Hologramme blickbewusst: Beide ändern sich basierend auf der Position, an der der Benutzer sucht – oder wo der Benutzer nicht sucht. Dies macht sie kontextbewusst.
  • Wir werden unseren Cursor und Hologrammen Feedback hinzufügen, um dem Benutzer mehr Kontext zu geben, was gezielt ist. Dieses Feedback kann audio- und visuell sein.
  • Wir zeigen Ihnen Zieltechniken, mit denen Benutzer kleinere Ziele erreichen können.
  • Wir zeigen Ihnen, wie Sie die Aufmerksamkeit des Benutzers auf Ihre Hologramme mit einem Richtungsindikator lenken.
  • Wir unterrichten Sie techniken, um Ihre Hologramme mit dem Benutzer zu nehmen, während sie in Ihrer Welt unterwegs ist.

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 210: Anvisieren ✔️ ✔️

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

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

Kapitel 1 – Unity Setup

Ziele

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

Anweisungen

  1. Starten Sie Unity.
  2. Wählen Sie auf Neues Projekt aus.
  3. Benennen 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 soll. Dazu fügen wir HoloLens als Virtual Reality-Gerät hinzu.

  1. Wechseln Sie zu "Project Einstellungen Player bearbeiten >>".
  2. Wählen Sie im Inspektorbereich für player Einstellungen das symbol Windows Store 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. Wenn nicht, 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 Skripting-Back-End auf .NET festlegen.

  1. Wechseln Sie zu "Project Einstellungen Player bearbeiten" >> (Sie haben dies möglicherweise noch im vorherigen Schritt).
  2. Wählen Sie im Inspektorbereich für player Einstellungen das symbol Windows Store aus.
  3. Stellen Sie im Abschnitt "Sonstige Einstellungen Konfiguration" sicher, dass das Skripting-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 "Project Einstellungen Qualität bearbeiten >>".
  2. Klicken Sie auf den Pfeil nach unten in der Standardzeile unter dem Symbol Windows Store.
  3. Wählen Sie "Sehr niedrig" für Windows Store Apps aus.

Importieren von Projektressourcen

  1. Klicken Sie mit der rechten Maustaste auf den Ordner "Ressourcen" im bereich Project.
  2. Klicken Sie auf " Benutzerdefiniertes Paket > importieren".
  3. Navigieren Sie zu den projektdateien, die Sie heruntergeladen haben, 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 Eingabeordner , 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 Richtungslicht in der Hierarchie, und wählen Sie "Löschen" aus.
  5. Ziehen Sie im Ordner Hologramme 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 den Vorgang zu beenden.
  8. Suchen Sie im Ordner Hologramme das Fitbox-Objekt, und ziehen Sie es in den Stamm der Hierarchie.
  9. Wählen Sie das Feld "Einpassen" im Hierarchiebereich aus.
  10. Ziehen Sie die AstroMan-Auflistung aus der Hierarchie in die Hologrammsammlungseigenschaft des Inspektorbereichs .

Speichern des Projekts

  1. Speichern Sie die neue Szene: "Szene speichern unter">.
  2. Klicken Sie auf "Neuer Ordner ", und benennen Sie die Ordnerszenen.
  3. Benennen Sie die Datei "ModelExplorer", und speichern Sie sie im Ordner "Szenen ".

Erstellen des Projekts

  1. Wählen Sie in Unity Einstellungen "Datei > erstellen" aus.
  2. Klicken Sie auf "Szenen hinzufügen ", um die Szene hinzuzufügen.
  3. Wählen Sie Universelle Windows-Plattform in der Liste "Plattform" aus, und klicken Sie auf "Plattform wechseln".
  4. Wenn Sie speziell für HoloLens entwickeln, legen Sie das Zielgerätauf HoloLens fest. Lassen Sie es andernfalls auf jedem Gerät.
  5. 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).
  6. Klicken Sie auf Erstellen.
  7. Erstellen Sie einen neuen Ordner namens "App".
  8. Klicken Sie einfach auf den App-Ordner .
  9. Drücken Sie "Ordner auswählen".

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.

Kapitel 2 – Cursor- und Zielfeedback

Ziele

  • Visuelles Design und Verhalten des Cursors.
  • 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 groß.
  • Vermeiden Sie das Blockieren von Inhalten.

Anweisungen

  1. Suchen Sie im Ordner HoloToolkit\Input\Prefabs das InputManager-Objekt .
  2. Ziehen Und ablegen Sie den InputManager auf die Hierarchie.
  3. Suchen Sie im Ordner HoloToolkit\Input\Prefabs das Cursor-Objekt .
  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 Cursorobjekt aus der Hierarchie in das Cursorfeld des InputManagers "SimpleSinglePointerSelector" am unteren Rand des Inspektors.

Simple Single Pointer Selector set-up

Erstellen und Bereitstellen

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

Anweisungen

  1. Erweitern Sie im Hierarchiebereich das AstroMan-GEO_G-Back_Center-Objekt.>>
  2. Doppelklicken Sie auf "Interactible.cs", um sie in Visual Studio zu öffnen.
  3. Heben Sie die Kommentare in den IFocusable.OnFocusEnter() und IFocusable.OnFocusExit() Rückrufen in Interactible.cs auf. Diese werden vom InputManager des Mixed Reality Toolkits aufgerufen, wenn der Fokus (entweder durch Blick oder durch Controllerzeigen) eingibt und die bestimmter GameObject-Collider 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 oben. Um diese in Ihrer eigenen App mit dem Standard-Shader des Toolkits zu nutzen, müssen Sie die Unity-Richtlinien für den Zugriff auf Materialien über Skript befolgen. In diesem Fall haben wir bereits die drei Varianten hervorgehobener Materialien 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 für die HoloLens bereit.
  2. Beobachten Sie, was passiert, wenn der Blick auf ein Objekt ausgerichtet ist und wann es nicht ist.

Kapitel 3 – Zieltechniken

Ziele

  • Vereinfachen Sie das Ziel von Hologrammen.
  • Stabilisieren sie natürliche Kopfbewegungen.

Anweisungen

  1. Wählen Sie im Hierarchiebereich das InputManager-Objekt aus.
  2. Suchen Sie im Inspektorbereich nach dem Blickstabilisierungsskript . Klicken Sie darauf, um es in Visual Studio zu öffnen, wenn Sie einen Blick werfen möchten.
    • Dieses Skript beläuft sich auf Beispiele von Raycast-Daten und hilft dabei, den Blick des Benutzers für die Genauigkeitsadressierung zu stabilisieren.
  3. Im Inspektor können Sie den Wert "Gespeicherte Stabilitätsbeispiele " bearbeiten. Dieser Wert stellt die Anzahl der Stichproben dar, die der Stabilisierungsgeber zum Berechnen des stabilisierten Werts angibt.

Kapitel 4 – Richtungsindikator

Ziele

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

Anweisungen

Wir verwenden die Datei "DirectionIndicator.cs ", die Folgendes enthält:

  1. Zeigen Sie die Richtungsanzeige an, wenn der Benutzer nicht auf die Hologramme blickt.
  2. Blenden Sie die Richtungsanzeige aus, wenn der Benutzer auf die Hologramme blickt.
  3. Aktualisieren Sie die Richtungsanzeige, um auf die Hologramme zu zeigen.

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 das DirectionalIndicator-Objekt unter AstroMan aus.
  3. Klicken Sie im Inspektorbereich auf die Schaltfläche " Komponente hinzufügen ".
  4. Geben Sie im Menü in das Suchfeld Richtungsanzeige ein. Wählen Sie das Suchergebnis aus.
  5. Ziehen Sie im Hierarchiebereich das Cursorobjekt auf die Cursor-Eigenschaft im Inspektor.
  6. Ziehen Und ablegen Sie im Bereich Project im Ordner Hologramme das DirectionalIndicator-Objekt auf die Eigenschaft "Directional Indicator" im Inspektor.
  7. Erstellen Sie die App, und stellen Sie sie bereit.
  8. Schauen Sie sich an, wie das Richtungsanzeigeobjekt Ihnen hilft, den Astronauten zu finden.

Kapitel 5 – Billboarding

Ziele

  • Verwenden Sie Billboarding, um Hologramme immer gegenüber Ihnen zu sehen.

Wir werden die Billboard.cs-Datei verwenden, um ein GameObject so ausgerichtet zu halten, dass er jederzeit dem Benutzer gegenüber steht.

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

Kapitel 6 – Tag-Along

Ziele

  • Verwenden Sie Tag-Along, um unsere Hologramme um den Raum zu verfolgen.

Da wir an diesem Problem arbeiten, werden wir durch die folgenden Entwurfseinschränkungen geführt:

  • Inhalte sollten immer einen Blick weg sein.
  • Inhalte sollten nicht auf die Weise sein.
  • Kopfsperrende Inhalte sind unbequem.

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

Ein Tag-entlang-Objekt lässt die Ansicht des Benutzers nie vollständig ab. Sie können sich das Tag als Objekt vorstellen, das an den Kopf des Benutzers angefügt ist, indem Sie Gummibänder verwenden. Wenn der Benutzer bewegt wird, bleibt der Inhalt in einem einfachen Blick, indem er an den Rand der Ansicht gleitet, ohne vollständig verlassen zu müssen. Wenn der Benutzer auf das Tag-entlang-Objekt blickt, kommt es vollständiger in die Ansicht.

Wir werden die Datei SimpleTagalong.cs verwenden, die Folgendes enthält:

  1. Bestimmen 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 frustums.
  3. Positionieren Sie andernfalls den Tag-Along auf einen Standardabstand vom Benutzer.

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

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

Das Script "InteractibleAction.cs" führt benutzerdefinierte Aktionen aus, wenn Sie auf Hologramme tippen. In diesem Fall verwenden wir eine speziell für tag-entlang.

  • Klicken Sie im Ordner "Skripts" auf "TagalongAction.cs", um in Visual Studio zu öffnen.
  • Führen Sie die Codierungsübung aus, oder ändern Sie sie in diese:
    • Geben Sie oben in der Hierarchie in der Suchleiste ChestButton_Center ein, und wählen Sie das Ergebnis aus.
    • Klicken Sie im Inspektorbereich auf die Schaltfläche "Komponente hinzufügen ".
    • Geben Sie im Menü das Suchfeld Tagalong-Aktion ein. Wählen Sie das Suchergebnisse aus.
    • In Hologramme Ordner finden Sie 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 Inspektor in die Eigenschaft "Object To Tagalong".
    • Ziehen Sie das Tagalong-Action-Objekt aus dem Inspektor in das Feld " Interagierbare Aktion " im Skript " Interaktion" .
  • Doppelklicken Sie auf das TagalongAction-Skript, um es in Visual Studio zu öffnen.

Interactible set-up

Wir müssen folgendes hinzufügen:

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

Hier finden 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.
  • Schauen Sie sich an, wie der Inhalt dem Mittelpunkt des Blickpunkts folgt, aber nicht kontinuierlich und ohne blockieren.