Unsere Artikelserie zu Windows Mixed Reality neigt sich dem Ende zu. Darin haben wir von Grund auf eine Anwendung mit gemischter Realität auf Unity im Format Laborarbeit (Laborarbeit) entwickelt. Heute ist der letzte Akkord, in dem wir über ein sehr interessantes Thema sprechen werden - HoloLens und die Anpassung des Projekts an dieses Gerät. Jetzt mitmachen!

Die gesamte Anleitung besteht aus 5 Teilen. Es wird jede Woche aufgefüllt. Unten können Sie zu dem Teil gehen, den Sie benötigen.
Teil 1: Exportieren der UWP-Anwendung für Windows Mixed Reality aus Unity ;
Teil 2: Einrichten der Umgebung (VR) ;
Teil 3: Controller ;
Teil 4: Raumklang ;
Teil 5: HoloLens und Grafik .
Hololen
Bisher funktioniert unsere Anwendung nur mit einem immersiven Headset. Mit nur wenigen Änderungen an der Anwendung können wir jedoch die Unterstützung für das gesamte Spektrum der Mixed Reality-Geräte (einschließlich HoloLens) implementieren.
Da wir das Mixed Reality Toolkit verwendet haben, um die Kamera zu steuern, Interaktionen zu implementieren und Schaltflächen hinzuzufügen, müssen wir nur wenige Änderungen am Projekt vornehmen.
Einen virtuellen Raum verstecken
Wir müssen ein Skript schreiben, das bestimmt, auf welchem Gerät unsere Anwendung ausgeführt wird - auf einem immersiven Headset oder auf einem HoloLens-Gerät. Wenn die Anwendung auf einem HoloLens-Gerät ausgeführt wird, müssen wir den virtuellen Raum ausblenden, damit der Benutzer mit der realen Umgebung interagieren kann. Dazu fügen wir zuerst das Tag-Element zum RoomPrefab-Prefab hinzu und greifen dann in unserem Skript auf dieses Tag zu.
1. Wählen Sie im Hierarchiefenster das Fertighaus RoomPrefab aus.
2. Wählen Sie in der Dropdown-Liste Tag im Inspektorfenster die Option Tag hinzufügen aus.

3. Klicken Sie auf das Pluszeichen (+), um ein neues Tag zu erstellen, und geben Sie diesem Tag den Namen HMDUOnly.

4. Klicken Sie nun erneut auf das RoomPrefab-Fertighaus im Hierarchiefenster und wählen Sie das HMDUOnly-Tag aus dem Dropdown-Menü Tag im Inspektorfenster aus.
Sie können Spielobjekte im Skript auf
verschiedene Arten auswählen. Wir können jedem Objekt, das wir ausblenden müssen (wenn wir mehrere Objekte haben), ein Tag hinzufügen und dann jedes nacheinander ausblenden. Das Aufrufen der FindGameObjectsWithTag-Methode ist nicht der optimalste Weg, aber für uns durchaus geeignet.
5. Wählen Sie im oberen Unity-Menü GameObject -> Create Empty.
6. Ändern Sie im Hierarchiefenster den Namen des hinzugefügten leeren GameObject in GameManager.
7. Klicken Sie im Inspektorfenster auf Komponente hinzufügen -> Neues Skript und geben Sie diesem Skript den Namen GameManager. Wählen Sie Cis als Programmiersprache. Klicken Sie auf Erstellen und Hinzufügen, um das Skript zu erstellen.
8. Um das GameManager-Skript zu öffnen, doppelklicken Sie im Inspektorfenster oder im Assetsfenster darauf.
9. Ersetzen Sie den GameManager-Skriptcode durch den folgenden Code. Dieser Test muss beim Start der Anwendung nur einmal durchgeführt werden. Wir werden es in der Funktion Start () ausführen und die Funktion Update () löschen.
using System.Collections; using System.Collections.Generic; using UnityEngine;
Um sicherzustellen, dass die Anwendung auf dem HoloLens-Gerät ordnungsgemäß funktioniert, müssen wir den Hintergrund der Kamera schwarz machen.
10. Wählen Sie im Hierarchiefenster das Objekt MixedRealityCameraParent-> MixedRealityCamera aus. Scrollen Sie im Inspektorfenster nach unten und wählen Sie Schwarz als Wert für den Mixed Reality Camera Manager -> Einstellungen für die transparente Anzeige -> Parameter für die Hintergrundfarbe (Mixed Reality Camera Manager -> Einstellungen für die transparente Anzeige -> Hintergrundfarbe).

Hinzufügen einer räumlichen Zuordnung
Fast alles ist fertig! Jetzt müssen wir die
räumliche Zuordnung aktivieren. Die Weltraumbildgebungstechnologie bietet eine detaillierte Ansicht der physischen Oberflächen in der HoloLens-Umgebung, sodass Entwickler Mixed-Reality-Anwendungen erstellen können, die mit ihrer Wahrscheinlichkeit beeindruckend sind. In unserem Fall ermöglicht die räumliche Zuordnung dem Benutzer, die Lautsprecher auf natürliche Weise zu platzieren, damit sie nicht durch physische Oberflächen verdeckt werden.
Stellen Sie zunächst sicher, dass die Steuerelemente des Bounding Box-Objekts (Bounding Box), die für das Verschieben und Drehen verantwortlich sind, nicht ausgeblendet sind.
1. Suchen Sie das AppBarCustom-Fertighaus im Ordner Assets -> Prefabs im Projektfenster.
2. Setzen Sie den Wert 0 für die Eigenschaft Hover Offset Y Scale (Hover Offset Scale).

Fügen wir nun der Szene räumliche Zuordnungskomponenten hinzu.
3. Suchen Sie das SpatialMapping-Prefab im Ordner Assets -> HoloTookit -> SpatialMapping -> Prefabs (Ressourcen -> HoloTookit -> Spatial Mapping -> Prefabs).
4. Ziehen Sie es in das Hierarchiefenster unserer Szene.

Gesten HoloLens
Bisher wurden alle Arten der Interaktion in unserer Anwendung mit Motion Controllern durchgeführt. Wenn die Anwendung auf dem HoloLens-Gerät (oder seinem Emulator) ausgeführt wird, müssen wir den Lautsprecher auf andere Weise bewegen und im Programmcode darauf umschalten. Die BoundingBox-Methode kann auch für HoloLens wiederverwendet werden. Wir möchten jedoch die Interaktion optimieren, indem wir einige Änderungen vornehmen.
1. Wählen Sie im Projektfenster das Lautsprecher-Fertighaus aus.
2. Klicken Sie auf Komponente hinzufügen -> Zum Platzieren tippen. Dies ist ein Skript für HoloLens aus dem MR Toolkit, mit dem der Benutzer Objekte oder Hologramme berühren und einfach im Raum verschieben kann.
3. Deaktivieren Sie es, damit es nicht standardmäßig gestartet wird. Um ein Skript zu deaktivieren, deaktivieren Sie einfach das Kontrollkästchen neben seinem Namen im Inspektorfenster. Diese Komponente fügt dem Speaker Prefab auch ein Interpolator-Skript hinzu.

4. Fügen Sie das Skript zum Speaker-Fertighaus hinzu, indem Sie Komponente hinzufügen -> Neues Skript auswählen, und benennen Sie dieses Skript SpeakerMovement.
5. Bearbeiten Sie das Skript - doppelklicken Sie darauf und ersetzen Sie den Skriptcode durch den folgenden Code.
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.XR.WSA;
Indem Sie den Namespace für die verwendeten Szenarien angeben, verwenden wir denselben Test, der im GameManager-Skript verwendet wurde, um den Raum auszublenden. Wenn diesmal ein HoloLens-Gerät erkannt wird, schaltet der Test ein Skript aus und ein anderes ein. Da wir das Lautsprecher-Fertighaus geändert haben, wirkt sich diese Änderung auf alle Lautsprecher in der Szene aus. Wenn Sie eine der Speaker-Fertighausinstanzen geändert haben, klicken Sie in der oberen rechten Ecke des Inspektorfensters auf Übernehmen, um dieses Fertighaus zu aktualisieren.
Fertig! Jetzt können Sie die Anwendung erstellen und auf einem immersiven Headset oder HoloLens-Gerät ausführen. Stellen Sie dann die Lautsprecher an einer beliebigen Stelle im Raum auf, drehen Sie sie und steuern Sie sie.
Grafik (optional)
Mal sehen, wie wir den visuellen Aspekt unserer Anwendung verbessern können, denn selbst eine kleine Verbesserung kann die Wahrnehmung erheblich verändern. Wenn Sie lernen möchten, wie Sie die Anwendung ohne große Schwierigkeiten noch attraktiver gestalten können, können Sie die folgenden Anweisungen verwenden.
Hinzufügen einer benutzerdefinierten Skybox
1. Wählen Sie im oberen Menü Fenster -> Beleuchtung -> Einstellungen (Fenster -> Beleuchtung -> Einstellungen).
2. Ziehen Sie die Skybox Cloudymorning.mat aus dem Ordner Assets -> Textures in die Eigenschaft Skybox Material.
Nachbearbeitung
Hinweis Die folgenden Aktionen können für jede Kamera in der Szene ausgeführt werden, sie können jedoch nicht im Editor angezeigt werden.
1. Wählen Sie im Hierarchiefenster der Szene das Element MixedRealityCameraParent -> MixedRealityCamera aus.
2. Klicken Sie auf Komponente hinzufügen -> Nachbearbeitungsverhalten.
3. Suchen Sie das CustomProfile.asset-Element im Ordner Assets -> PostProcessing und ziehen Sie es auf die Profile-Eigenschaft des Skripts Post Processing Behaviour.
Experimentieren Sie so oft wie nötig mit dem Nachbearbeitungsprofil, aber denken Sie daran, dass die
Nachbearbeitung Ressourcen verbraucht .
Glückwunsch! Sie haben diese Übung abgeschlossen.
Das OriginalAutoren: Eric Ahlstrom, cbarkerms, Madison Hight