Portieren von VR-Apps zu Windows Mixed Reality

Windows 10 unterstützt immersive und holografische Headsets. Andere Geräte wie oculus Rift oder HTC Vive haben Abhängigkeiten von Bibliotheken, die über der Plattform-API des Betriebssystems vorhanden sind. Um vorhandene Win32 Unity VR-Apps auf Windows Mixed Reality zu übertragen, müssen Sie die anbieterspezifische VR SDK-Nutzung auf die anbieterübergreifenden VR-APIs und Plug-Ins von Unity umtarnen.

Das Portieren von VR-Apps zu Windows Mixed Reality erfordert die folgenden allgemeinen Prozesse:

  1. Stellen Sie sicher, dass auf Ihrem PC die Windows 10, Version 1709 (das Fall Creators Update) oder neuer oder Windows 11 ausgeführt wird.
  2. Führen Sie ein Upgrade auf die neueste Version Ihrer Grafik- oder Spiele-Engine aus. Spiele-Engines 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, führen Sie ein Upgrade auf die neuesten Versionen durch.
  4. Ziel ist die neueste Unity-Version und das OpenXR-Plug-In. Entfernen Sie Abhängigkeiten von doppelten SDKs. Entfernen Oder kompilieren Sie das SDK abhängig davon, auf welches Gerät Ihre Inhalte ausgerichtet sind.
  5. Arbeiten Sie Buildprobleme durch, die speziell für Ihre App, Ihre Engine und Ihre Komponentenabhängigkeiten gelten.

Allgemeine Portierungsschritte

Beginnen Sie mit den folgenden allgemeinen Portierungsschritten:

  1. Stellen Sie sicher, dass Sie über die richtige Entwicklungshardware verfügen. Der Leitfaden für VR-Enthusiasten listet die empfohlene Entwicklungshardware auf.

  2. Upgrade auf den neuesten Flight von Windows 10.

    1. Installieren des Windows 10 Creators Update
    2. Nehmen Sie am Windows-Insider-Programm teil.
    3. Aktivieren des Entwicklermodus
    4. Wechseln Sie über denAbschnitt Einstellungen > Update & Sicherheit zu Windows Insider Fast flights.

    Hinweis

    Die Windows Mixed Reality Plattform befindet sich noch in der aktiven Entwicklung. Nehmen Sie am Windows-Insider-Programm teil, um auf den Windows Insider Fast Flight zuzugreifen. Erhalten Sie keine Vorschaubuilds vom Insider Skip Ahead-Ring, da diese Builds für die Mixed Reality-Entwicklung nicht die stabilsten sind.

  3. Wenn Sie Visual Studio verwenden, führen Sie ein Upgrade auf den neuesten Build durch. Weitere Informationen finden Sie unter Installieren der Tools unter Visual Studio 2022. Stellen Sie sicher, dass Sie die Workload Game Development with Unity (Game Development with Unity ) installieren.

Unity-Portierungsschritte

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

1. Upgrade auf den neuesten öffentlichen Build von Unity mit Windows MR-Unterstützung

  1. Speichern Sie eine Kopie Ihres Projekts, bevor Sie beginnen.
  2. Laden Sie den neuesten empfohlenen öffentlichen Build von Unity mit Windows Mixed Reality Unterstützung herunter.
  3. Wenn Ihr Projekt auf einer älteren Version von Unity basiert, lesen Sie die Unity-Upgradeleitfäden.
  4. Befolgen Sie die Anweisungen für die Verwendung des automatischen API-Updaters von Unity.
  5. Überprüfen Sie, ob Sie andere Änderungen vornehmen müssen, um Ihr Projekt zum Laufen zu bringen, und arbeiten Sie alle Fehler und Warnungen durch.

2. Aktualisieren Ihrer Middleware auf die neuesten Versionen

Bei jedem Unity-Update müssen Sie möglicherweise mindestens ein Middlewarepaket aktualisieren, von dem Ihr Spiel oder Ihre Anwendung abhängt. Das Aktualisieren auf die neueste Middleware erhöht die Erfolgswahrscheinlichkeit während des restlichen Portierungsprozesses.

3. Ziel ihrer Anwendung für die Ausführung unter Win32

Innerhalb Ihrer Unity-Anwendung:

  1. Navigieren Sie zuDateibuildeinstellungen>.
  2. Wählen Sie PC, Mac, Linux Eigenständig aus.
  3. Legen Sie die Zielplattform auf Windows fest.
  4. Legen Sie die Architektur auf x86 fest.
  5. Wählen Sie Plattform wechseln aus.

Hinweis

Wenn Ihre Anwendung über Abhängigkeiten von gerätespezifischen Diensten verfügt, z. B. von Der Erstellung von Übereinstimmungen über Steam, deaktivieren Sie diese jetzt. Sie können die windows-äquivalenten Dienste später einbinden.

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

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

  2. Entfernen oder kompilieren Sie alle Bibliotheksunterstützungen, die für ein anderes VR SDK spezifisch sind, oder kompilieren Sie sie bedingt. Diese Ressourcen können Einstellungen und Eigenschaften für Ihr Projekt auf eine Weise ändern, die mit Windows Mixed Reality nicht kompatibel ist.

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

  3. Verwenden Sie in Ihrem Unity-Projekt das Windows 10 SDK.

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

5. Einrichten ihrer Windows Mixed Reality Hardware

  1. Überprüfen Sie die Schritte unter Immersive Headset-Einrichtung.
  2. Erfahren Sie, wie Sie den Windows Mixed Reality Simulator verwenden und in der Windows Mixed Reality navigieren.

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

Sie können Mixed Reality Erfahrungen über eine Vielzahl von Erfahrungsskalierungen hinweg erstellen. Wenn Sie eine Benutzeroberfläche mit sitzbasierter Skalierung portieren, stellen Sie sicher, dass Unity auf den Typ "Stationärer Nachverfolgungsraum" festgelegt ist:

XRDevice.SetTrackingSpaceType(TrackingSpaceType.Stationary);

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

Wenn Sie eine Benutzeroberfläche mit Stehplatz oder Raummaßstab portieren, platzieren Sie Inhalte relativ zum Boden. Sie argumentieren über den Fußboden des Benutzers, indem Sie die raumbasierte Bühne verwenden, die den definierten Ursprung auf Bodenebene des Benutzers darstellt. Die raumbezogene 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 RoomScale-Nachverfolgungsspeichertyp festgelegt ist. RoomScale ist die Standardeinstellung, aber legen Sie sie explizit fest, und stellen Sie sicher, dass Sie zurück trueerhalten. Diese Praxis fängt Situationen auf, in denen der Benutzer seinen Computer weg von dem raum verschoben hat, den er kalibriert hat.

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 RoomScale-Nachverfolgungsraumtyp erfolgreich festgelegt hat, werden Inhalte, die auf der Ebene y=0 platziert sind, auf dem Boden angezeigt. Der Ursprung bei (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 er während des Setups gesehen hat.

Im Skriptcode können Sie dann die -Methode für den TryGetGeometryUnityEngine.Experimental.XR.Boundary Typ aufrufen, um ein Begrenzungspolygon abzurufen, wobei sie den Begrenzungstyp angeben TrackedArea. Wenn der Benutzer eine Grenze definiert hat, erhalten Sie eine Liste von Scheitelpunkten zurück. Anschließend können Sie dem Benutzer eine Raumumgebung bereitstellen, in der er die von Ihnen erstellte Szene durchlaufen kann.

Das System rendert die Grenze automatisch, wenn sich der Benutzer ihr nähert. Ihre App muss dieses Polygon nicht verwenden, um die Grenze selbst zu rendern.

Beispiel für Ergebnisse:

Beispiel für Ergebnisse

Weitere Informationen finden Sie unter Koordinatensysteme in Unity.

7. Arbeiten Sie Ihr Eingabemodell ab.

Jedes Spiel oder jede Anwendung, die auf eine vorhandene HMD (Head-Mounted Display) ausgerichtet ist, verfügt über eine Reihe von Eingaben, die es verarbeitet, Typen von Eingaben, die für die Benutzeroberfläche benötigt werden, und bestimmte APIs, die zum Abrufen dieser Eingaben aufgerufen werden. Es ist einfach und einfach, die in Windows Mixed Reality verfügbaren Eingaben zu nutzen.

Weitere Informationen dazu, wie Windows Mixed Reality Eingaben verfügbar macht und wie die Eingabe dem entspricht, was Ihre Anwendung jetzt ausführt, finden Sie im Leitfaden zur Eingabeportierung für Unity.

Wichtig

Wenn Sie HP Reverb G2-Controller verwenden, finden Sie weitere Anweisungen zur Eingabezuordnung unter HP Reverb G2-Controller in Unity .

8. Testen und Optimieren der Leistung

Windows Mixed Reality ist auf vielen Geräten verfügbar, von High-End-Gaming-PCs bis hin zu Mainstream-PCs auf einem breiten Markt. Für diese Geräte stehen erheblich unterschiedliche Compute- und Grafikbudgets für Ihre Anwendung zur Verfügung.

Wenn Sie Ihre App mit einem Premium-PC mit erheblichen Compute- 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 Mindestrichtlinien für die PC-Hardwarekompatibilität.

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

Eine ausführliche Erläuterung der Leistung finden Sie unter Grundlegendes zur 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 unter Eingabeportierungshandbuch für Unity.

Wichtig

Wenn Sie HP Reverb G2-Controller verwenden, finden Sie weitere Anweisungen zur Eingabezuordnung unter HP Reverb G2-Controller in Unity .

Weitere Informationen