Portieren von VR-Apps zu Windows Mixed Reality

Windows 10 unterstützt immersive und holografische Headsets. Wenn Sie Inhalte für andere Geräte wie Oculus Rift oder OCULU Vive erstellt haben, bestehen abhängigkeiten von Bibliotheken, die über der Plattform-API des Betriebssystems vorhanden sind. Das Hinzufügen vorhandener Win32 Unity VR-Apps zu Windows Mixed Reality umfasst die Neutarierung der Nutzung herstellerspezifischer VR SDKs für die anbieterübergreifenden VR-APIs von Unity.

Portierungsanforderungen

Auf hoher Ebene sind die folgenden Schritte beim Portieren vorhandener Inhalte erforderlich:

  1. Stellen Sie sicher, dass auf Ihrem PC die Windows 10 Fall Creators Update (16299) ausgeführt wird. Es wird nicht mehr empfohlen, Vorschauversionen vom Insider Skip Ahead-Ring zu erhalten, da diese Builds für die Mixed Reality-Entwicklung nicht am stabilsten sind.
  2. Führen Sie ein Upgrade auf die neueste Version Ihrer Grafik- oder Spiele-Engine durch. Spiel-Engines müssen die Windows 10 SDK-Version 10.0.15063.0 (veröffentlicht im April 2017) oder höher unterstützen.
  3. Aktualisieren Sie alle Middleware, Plug-Ins oder Komponenten. Wenn Ihre App Komponenten enthält, sollten Sie ein Upgrade auf die neueste Version durchführen.
  4. Entfernen Sie Abhängigkeiten von doppelten SDKs. Je nachdem, auf welches Gerät Ihre Inhalte abzielen, müssen Sie dieses SDK entfernen oder bedingt kompilieren, damit Sie stattdessen die Windows-APIs als Ziel verwenden können. Ein Beispiel für dieses Szenario wäre "SteamVR".
  5. Arbeiten Sie Buildprobleme durch. An diesem Punkt ist die Portierungsübung spezifisch für Ihre App, Ihre Engine und die Komponentenabhängigkeiten, die Sie haben.

Allgemeine Portierungsschritte

1. Stellen Sie sicher, dass Sie über die richtige Entwicklungshardware verfügen.

Auf der Handbuchseite für VR-Fans wird die empfohlene Entwicklungshardware aufgeführt.

2. Upgrade auf den neuesten Flight of Windows 10

Die Windows Mixed Reality-Plattform befindet sich noch in der aktiven Entwicklung. Es wird empfohlen, dem Windows Insider-Programm beitritt, um auf den Flug "Windows Insider Fast" zu zugreifen.

  1. Installieren des Windows 10 Creators Update
  2. Treten Sie dem Windows Insider-Programm bei.
  3. Aktivieren des Entwicklermodus
  4. Wechseln Sie über Einstellungen > Abschnitt Einstellungen > Update & Security zum Windows Insider Fast-Flüge.

3. Upgrade auf den neuesten Build der Visual Studio

  • Wenn Sie die Visual Studio, führen Sie ein Upgrade auf den neuesten Build aus.
  • Siehe Seite "Tools installieren" unter Visual Studio 2019

4. Auswählen des richtigen Adapters

  • In Systemen wie Notebooks mit zwei GPUs wird der richtige Adapter als Ziel verwendet. Dies gilt für Unity- und native DirectX-Apps, bei denen eine ID3D11Device für ihre Funktionalität entweder explizit oder implizit (Media Foundation) erstellt wird.

Leitfaden zum Portieren von Unity

1. Sehen Sie sich die oben aufgeführten allgemeinen Portierungsschritte an.

Überprüfen Sie die oben aufgeführten allgemeinen Schritte, um sicherzustellen, dass Ihre Entwicklungsumgebung ordnungsgemäß eingerichtet ist. Wenn Sie in Schritt 3 Visual Studio Sie die Workload Spieleentwicklung mit Unity auswählen. Sie können die Komponente "Unity-Editor optional" deaktivieren, da Sie im nächsten Schritt eine neuere Version von Unity installieren.

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

  1. Laden Sie den neuesten empfohlenen öffentlichen Build von Unity mit Mixed Reality-Unterstützung herunter.
  2. Speichern Sie eine Kopie Ihres Projekts, bevor Sie beginnen.
  3. Sehen Sie sich die von Unity verfügbare Dokumentation zum Upgrade an, wenn Ihr Projekt auf einer älteren Version von Unity basiert.
  4. Befolgen Sie die Anweisungen auf der Unity-Website für die Verwendung des automatischen API-Updates.
  5. Überprüfen Sie, ob zusätzliche Änderungen vorgenommen werden müssen, damit Das Projekt ausgeführt wird, und beheben Sie alle verbleibenden Fehler und Warnungen.

Hinweis

Wenn Sie über Middleware verfügen, von der Sie abhängig sind, überprüfen Sie, ob Sie das neueste Release verwenden (weitere Details finden Sie weiter unten in Schritt 3).

3. Aktualisieren Ihrer Middleware auf die neuesten Versionen

Bei jedem Unity-Update besteht die Wahrscheinlichkeit, dass Sie mindestens ein Middlewarepaket aktualisieren müssen, von dem Ihr Spiel oder Ihre Anwendung abhängt. Darüber hinaus erhöht sich die Wahrscheinlichkeit, dass der Portierungsprozess während des restlichen Portierungsprozesses erfolgreich ist, wenn Sie mit der neuesten Middleware auf dem neuesten Stand sind.

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

In Ihrer Unity-Anwendung:

  • Navigieren Sie zu Datei -> Build Einstellungen
  • Wählen Sie "PC, Mac, Linux Standalone" aus.
  • Festlegen der Zielplattform auf "Windows"
  • Legen Sie die Architektur auf "x86" fest. Wählen Sie "Plattform wechseln" aus.

Hinweis

Wenn Ihre Anwendung Abhängigkeiten von gerätespezifischen Diensten aufweist, z. B. match making from Steam, müssen Sie diese in diesem Schritt deaktivieren. Sie können die entsprechenden Dienste, die später von Windows werden, mit anderen diensten.

5. Einrichten ihrer Windows Mixed Reality Hardware

  1. Lesen Sie die Schritte unter Einrichten des immersiven Headsets.
  2. Erfahren Sie mehr über das Verwenden des Windows Mixed Reality Simulators und navigieren im Windows Mixed Reality Start.

6. Ziel ihrer Anwendung für die Ausführung auf Windows Mixed Reality

  1. Zunächst müssen Sie jede andere Bibliotheksunterstützung, die für ein bestimmtes VR SDK spezifisch ist, entfernen oder bedingt kompilieren. Diese Ressourcen ändern Einstellungen und Eigenschaften in Ihrem Projekt häufig auf eine Weise, die mit anderen VR SDKs nicht kompatibel ist, z. B. Windows Mixed Reality.
    • Wenn Ihr Projekt beispielsweise auf das SteamVR SDK verweist, müssen Sie Ihr Projekt aktualisieren, um stattdessen die allgemeinen VR-APIs von Unity zu verwenden, die sowohl Windows Mixed Reality als auchVr unterstützen.
    • Bestimmte Schritte zum bedingten Ausschließen anderer VR SDKs sind in Kürze verfügbar.
  2. Verwenden Sie in Ihrem Unity-Projekt das Windows 10 SDK.
  3. Richten Sie für jede Szene die Kamera ein.

7. Verwenden der Stufe zum Platzieren von Inhalten auf dem Boden

Sie können eine Mixed Reality für eine Vielzahl von Benutzererfahrungsskalieren erstellen.

Wenn Sie eine besenskalierte Beschriftung portieren, müssen Sie sicherstellen, dass Unity auf den Typ des ortsfestgelegten Nachverfolgungsraums festgelegt ist:

XRDevice.SetTrackingSpaceType(TrackingSpaceType.Stationary);

Mit diesem obigen Code wird das Weltkoordinatensystem von Unity so definiert, dass der fest stehende Bezugsrahmen nachverfolgt wird. Im Nachverfolgungsmodus "Stationär" werden Inhalte, die im Editor direkt vor der Standardposition der Kamera platziert werden (vorwärts ist -Z), vor dem Benutzer angezeigt, wenn die App gestartet wird. Sie können unitys XR aufrufen, um den Ursprung des Benutzers zu einem neueren Tag zu erhalten. InputTracking.Recenter-Methode.

Wenn Sie eine Begeh- oder Raumerfahrung portieren, platzieren Sie Inhalte relativ zum Boden. Sie können den Grund für den Boden des Benutzers mithilfe der räumlichen Stufe festlegen, die den vom Benutzer definierten Ursprung auf Bodenebene und die optionale Raumgrenze darstellt, die während der ersten Ausführung eingerichtet wurde. Für diese Erfahrungen müssen Sie sicherstellen, dass Unity auf den Raumtyp RoomScale tracking festgelegt ist. Obwohl RoomScale die Standardeinstellung ist, sollten Sie sie explizit festlegen und sicherstellen, dass Sie "true" erhalten, um Situationen zu fangen, in denen der Benutzer seinen Computer aus dem Raum entfernt hat, in dem 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 cannot make assumptions about where the floor plane is.
}

Sobald Ihre App den Raumtyp RoomScale-Nachverfolgung erfolgreich fest legt, werden Inhalte auf der Ebene y=0 im Boden angezeigt. Der Ursprung bei (0, 0, 0) ist der spezifische Ort im Boden, an dem der Benutzer während der Einrichtung des Raums mit -Z die Vorwärtsrichtung darstellt, die er während des Setups hatte.

Im Skriptcode können Sie dann die TryGetGeometry-Methode für den UnityEngine.Experimental.XR.Boundary-Typ aufrufen, um ein Begrenzungspolygon zu erhalten und dabei den Begrenzungstyp TrackedArea anzugeben. Wenn der Benutzer eine Grenze definiert hat (Sie erhalten eine Liste von Scheitellinien), ist es sicher, dem Benutzer eine Raumerfahrung zu bieten, in der er die von Ihnen erstellten Szenen durchläuft.

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.

Weitere Informationen finden Sie auf der Seite Koordinatensysteme in Unity.

Beispiel für Ergebnisse:

Beispiel für Ergebnisse

Der Algorithmus basiert auf einem Blog von Daniel Smilmilmil: Größtes Rechteck in einem Polygon

8. Arbeiten Sie Ihr Eingabemodell durch.

Jedes Spiel oder jede Anwendung, die auf ein vorhandenes HMD abzielen, hat eine Reihe von Eingaben, die es verarbeitet, Eingabetypen, die es für die Erfahrung benötigt, und bestimmte APIs, die es aufruft, um diese Eingaben zu erhalten. Wir haben in den Versuch investiert, es so einfach und einfach wie möglich zu gestalten, um die in der Lösung verfügbaren Eingaben Windows Mixed Reality.

Lesen Sie den Eingabeportierungsleitfaden für Unity auf der angrenzenden Registerkarte, um details darüber zu erfahren, wie Windows Mixed Reality Eingaben verfügbar macht und wie dies den heutigen Anforderungen Ihrer Anwendung zu entnehmen ist.

9. Leistungstests und -optimierung

Windows Mixed Reality werden auf einer breiten Geräteklasse verfügbar sein, von High-End-Gaming-PCs bis hin zu gängigen Markt-PCs. Je nachdem, auf welchen Markt Sie abzielen, gibt es einen erheblichen Unterschied in den verfügbaren Compute- und Grafikbudgets für Ihre Anwendung. Während dieser Portierungsübung nutzen Sie wahrscheinlich einen Premium-PC und verfügen über erhebliche Compute- und Grafikbudgets für Ihre App. Wenn Sie Ihre App einer größeren Zielgruppe zur Verfügung stellen möchten, sollten Sie Ihre App auf der repräsentativen Hardware testen und profilieren, die Sie als Ziel verwenden möchten.

Sowohl Unity als auch Visual Studio enthalten Leistungsprofiler sowie Microsoft- und Intel-Veröffentlichungsrichtlinien zur Leistungsprofilerstellung und -optimierung. Eine ausführliche Erörterung der Leistung finden Sie unter Grundlegendeszur Leistung für Mixed Reality . Darüber hinaus finden Sie unter Performance Empfehlungen for Unity (Leistungs-Empfehlungen für Unity) spezifische Details zu Unity.

Leitfaden zur Unreal-Portierung

Wichtig

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

Siehe auch