Portieren von VR-Apps zu Windows Mixed Reality

Windows 10 enthält Unterstützung für immersive und holografische Headsets. Andere Geräte wie oculus Rift oder HTC Vive verfügen über Abhängigkeiten von Bibliotheken, die über der Plattform-API des Betriebssystems vorhanden sind. Um vorhandene Win32 Unity VR-Apps auf Windows Mixed Reality zu bringen, müssen Sie die anbieterspezifische VR-SDK-Nutzung auf die anbieterübergreifenden VR-APIs und Plugins von Unity neu anbringen.

Das Portieren von VR-Apps in Windows Mixed Reality erfordert die folgenden prozesse auf hoher Ebene:

  1. Stellen Sie sicher, dass Ihr PC die Windows 10 Fall Creators Update (16299) ausführt.
  2. Upgrade auf die neueste Version Ihrer Grafiken oder Spielmodul. Spielemodulen müssen die Windows 10 SDK Version 10.0.15063.0 oder höher unterstützen.
  3. Aktualisieren sie Middleware, Plug-Ins und Komponenten. Wenn Ihre App Komponenten enthält, aktualisieren Sie das Upgrade auf die neuesten Versionen.
  4. Ziel für die neueste Unity-Version und das OpenXR-Plug-In. Entfernen Sie Abhängigkeiten von doppelten SDKs. Je nachdem, welches Gerät Ihre Inhalte gezielt, entfernen oder bedingt kompilieren, dieses SDK.
  5. Arbeiten Sie durch Buildprobleme, die speziell für Ihre App, Ihr Modul und Ihre Komponentenabhängigkeiten sind.

Allgemeine Portierungsschritte

Beginnen Sie mit den folgenden allgemeinen Portierungsschritten:

  1. Stellen Sie sicher, dass Sie über die richtige Entwicklungshardware verfügen. Das VR-Enthusiastenhandbuch listet die empfohlene Entwicklungshardware auf.

  2. Upgrade auf den neuesten Flug von Windows 10.

    1. Installieren des Windows 10 Creators Update
    2. Treten Sie dem Windows Insider-Programm bei.
    3. Entwicklermodus aktivieren
    4. Wechseln Sie zu den Windows Insider Fast-Flügen über Einstellungen >& Update Security Section.

    Hinweis

    Die Windows Mixed Reality-Plattform befindet sich weiterhin in der aktiven Entwicklung. Treten Sie dem Windows Insider-Programm bei, um auf den Windows Insider Fast Flight zuzugreifen. Erhalten Sie keine Vorschau-Builds aus dem Insider Skip Ahead-Ring, da diese Builds nicht der stabilste für die Mixed Reality-Entwicklung sind.

  3. Wenn Sie Visual Studio verwenden, aktualisieren Sie das Upgrade auf den neuesten Build. Siehe Installieren der Tools unter Visual Studio 2022. Stellen Sie sicher, dass Sie die Game Development mit Unity-Workload installieren.

Schritte zum Portieren von Unity

Überprüfen Sie die allgemeinen Schritte, um sicherzustellen, dass Ihre Entwicklungsumgebung ordnungsgemäß eingerichtet ist. Führen Sie die folgenden Schritte aus, um Ihren vorhandenen Unity-Inhalt zu portieren:

1. Upgrade auf den neuesten öffentlichen Build von Unity mit Windows MR-Support

  1. Speichern Sie eine Kopie Ihres Projekts, bevor Sie beginnen.
  2. Laden Sie den neuesten empfohlenen öffentlichen Build von Unity mit Windows Mixed Reality Support herunter.
  3. Wenn Ihr Projekt auf einer älteren Version von Unity erstellt wurde, überprüfen Sie die Unity-Upgradeleitlinien.
  4. Folgen Sie den Anweisungen zur Verwendung des automatischen API-Updaters von Unity.
  5. Sehen Sie, ob Sie andere Änderungen vornehmen müssen, um Ihr Projekt auszuführen, und arbeiten Sie durch alle Fehler und Warnungen.

2. Aktualisieren Sie Ihre Middleware auf die neuesten Versionen

Bei jedem Unity-Update müssen Sie möglicherweise mindestens ein Middleware-Paket aktualisieren, von dem Ihr Spiel oder Ihre Anwendung abhängig ist. Das Aktualisieren auf die neueste Middleware erhöht die Wahrscheinlichkeit des Erfolgs im rest des Portierungsprozesses.

3. Ziel der Anwendung für die Ausführung auf Win32

Von innen in Ihrer Unity-Anwendung:

  1. Navigieren Sie zu Datei>build Einstellungen.
  2. Wählen Sie PC, Mac, Linux Standalone aus.
  3. Legen Sie die Zielplattform auf Windows fest.
  4. Festlegen der Architektur auf x86.
  5. Wählen Sie Plattform wechseln aus.

Hinweis

Wenn Ihre Anwendung abhängigkeiten von gerätespezifischen Diensten hat, z. B. das Erstellen von Steam, deaktivieren Sie sie jetzt. Sie können die Windows gleichwertigen Dienste später verbinden.

4. Hinzufügen der Unterstützung für das Mixed Reality OpenXR-Plug-In

  1. Wählen Sie eine Unity-Version und ein XR-Plug-In aus, und installieren Sie sie. Während das Unity 2020.3 LTS mit dem Mixed Reality OpenXR-Plug-In am besten für die Mixed Reality Entwicklung geeignet ist, können Sie auch Apps mit anderen Unity-Konfigurationen erstellen.

  2. Entfernen oder bedingt kompilieren Sie alle bibliotheksspezifischen Unterstützungen für ein anderes VR SDK. Diese Ressourcen können Einstellungen und Eigenschaften in Ihrem Projekt so ändern, dass sie nicht mit Windows Mixed Reality kompatibel sind.

    Wenn Ihr Projekt beispielsweise auf das SteamVR SDK verweist, aktualisieren Sie Ihr Projekt stattdessen auf die gemeinsamen VR-APIs von Unity, die sowohl Windows Mixed Reality als auch SteamVR unterstützen.

  3. Ziel des Windows 10 SDK in Ihrem Unity-Projekt.

  4. Richten Sie für jede Szene die Kamera ein.

5. Einrichten Ihrer Windows Mixed Reality Hardware

  1. Überprüfen Sie die Schritte in der Einrichtung von immersiven Headsets.
  2. Erfahren Sie, wie Sie den Windows Mixed Reality Simulator verwenden und zu Windows Mixed Reality Hause navigieren.

6. Verwenden Sie die Bühne, um Inhalte auf dem Boden zu platzieren

Sie können Mixed Reality Erfahrungen über eine vielzahl von Erfahrungsskalaen erstellen. Wenn Sie eine sitzige Skalierungsumgebung portieren, stellen Sie sicher, dass Unity auf den Stehenden Nachverfolgungsraumtyp festgelegt ist:

XRDevice.SetTrackingSpaceType(TrackingSpaceType.Stationary);

Dieser Code legt das Weltkoordinatensystem von Unity fest, um den stationären Referenzrahmen nachzuverfolgen. Im stationären Nachverfolgungsmodus wird der Inhalt, den Sie direkt vor dem Standardspeicherort der Kamera platzieren (vorwärts ist -Z) vor dem Benutzer angezeigt, wenn die App gestartet wird. Um den Sitz des Benutzers zu aktualisieren, können Sie den XR von Unity aufrufen . InputTracking.Recenter-Methode .

Wenn Sie eine stehenden Erfahrung oder eine Raumskala-Erfahrung portieren, platzieren Sie Inhalte relativ zum Boden. Sie gründen den Boden des Benutzers mithilfe der räumlichen Phase, die den definierten Ursprung des Benutzers darstellt. Die räumliche Phase kann eine optionale Raumgrenze enthalten, die Sie während der ersten Ausführung eingerichtet haben.

Stellen Sie für diese Erfahrungen sicher, dass Unity auf den Raumtyp "RoomScale " festgelegt ist. RoomScale ist der Standard, aber legen Sie es explizit fest und stellen Sie sicher, dass Sie zurückkommen true. Diese Praxis fängt Situationen ab, in denen der Benutzer seinen Computer von dem Raum entfernt hat, den sie kalibriert haben.

if (XRDevice.SetTrackingSpaceType(TrackingSpaceType.RoomScale))
{
    // RoomScale mode was set successfully.  App can now assume that y=0 in Unity world coordinate represents the floor.
}
else
{
    // RoomScale mode was not set successfully.  App can't make assumptions about where the floor plane is.
}

Nachdem Ihre App den Raumtyp "RoomScale" erfolgreich festgelegt hat, wird der Inhalt auf der y=0-Ebene auf dem Boden angezeigt. Der Ursprung bei (0, 0, 0, 0) ist der spezifische Ort auf dem Boden, an dem der Benutzer während der Raumeinrichtung stand, wobei -Z die Vorwärtsrichtung darstellt, die sie während des Setups konfrontiert haben.

Im Skriptcode können Sie dann die TryGetGeometry Methode auf dem UnityEngine.Experimental.XR.Boundary Typ aufrufen, um ein Begrenzungs polygon abzurufen, das einen Begrenzungstyp angibt TrackedArea. Wenn der Benutzer eine Grenze definiert hat, erhalten Sie eine Liste von Vertices zurück. Anschließend können Sie dem Benutzer eine Raumskala-Erfahrung bereitstellen, in der sie die von Ihnen erstellte Szene durchlaufen können.

Das System rendert die Grenze automatisch, wenn der Benutzer ihn angibt. Ihre App muss dieses Polygon nicht verwenden, um die Grenze selbst zu rendern.

Beispiel für Ergebnisse:

Example of results

Weitere Informationen finden Sie unter Koordinatensysteme in Unity.

7. Arbeiten Sie mit Ihrem Eingabemodell

Jedes Spiel oder jede Anwendung, die auf eine vorhandene head-mounted Display (HMD) ausgerichtet ist, verfügt über einen Satz von Eingaben, die sie verarbeitet, Typen von Eingaben, die sie für die Erfahrung benötigt, und bestimmte APIs, die sie aufruft, um diese Eingaben abzurufen. Es ist einfach und einfach, die in Windows Mixed Reality verfügbaren Eingaben zu nutzen.

Weitere Informationen dazu, wie Windows Mixed Reality Eingabeeingaben verfügbar macht, und wie die Eingabe dem, was Ihre Anwendung jetzt tut, zugeordnet ist, finden Sie im Eingabeportierungshandbuch für Unity.

Wichtig

Wenn Sie HP Reverb G2-Controller verwenden, lesen Sie HP Reverb G2 Controller in Unity für weitere Eingabezuordnungsanweisungen.

8. Testen und Optimieren der Leistung

Windows Mixed Reality ist auf vielen Geräten verfügbar, von High-End-Gaming-PCs bis hin zu breiten Markt-Mainstream-PCs. Diese Geräte verfügen über erheblich unterschiedliche Berechnungs- und Grafikbudgets für Ihre Anwendung.

Wenn Sie Ihre App mit einem Premium-PC mit erheblichen Berechnungs- und Grafikbudgets portiert haben, müssen Sie Ihre App auf Hardware testen und profilieren, die Ihren Zielmarkt darstellt. Weitere Informationen finden Sie unter Windows Mixed Reality Mindestkompatibilitätsrichtlinien für PC-Hardware.

Sowohl Unity als auch Visual Studio umfassen Leistungsprofiler und sowohl Microsoft als auch Intel veröffentlichen Richtlinien zur Leistungsprofilerstellung und -optimierung.

Eine umfassende Diskussion über die Leistung finden Sie unter "Verstehen der Leistung für Mixed Reality". Ausführliche Informationen zu Unity finden Sie unter Leistungsempfehlungen für Unity.

Eingabezuordnung

Informationen und Anweisungen zur Eingabezuordnung finden Sie in der Eingabeportierungsanleitung für Unity.

Wichtig

Wenn Sie HP Reverb G2-Controller verwenden, finden Sie weitere Eingabezuordnungsanweisungen unter HP Reverb G2 Controller in Unity .

Siehe auch