Freigeben über


Kameraeinrichtung in Unity

Wenn Sie ein Mixed Reality-Headset tragen, wird es zum Zentrum Ihrer holografischen Welt. Die Unity-Kamerakomponente behandelt automatisch das stereoskopische Rendering und folgt Ihrer Kopfbewegung und -drehung. Um jedoch die visuelle Qualität und Hologrammstabilität vollständig zu optimieren, sollten Sie die unten beschriebenen Kameraeinstellungen festlegen.

HoloLens vs VR immersive Headsets

Die Standardeinstellungen für die Unity-Kamerakomponente gelten für herkömmliche 3D-Anwendungen, die einen Skybox-ähnlichen Hintergrund benötigen, da sie keine echte Welt haben.

  • Wenn Sie auf einem immersiven Headset ausgeführt werden, rendern Sie alles, was der Benutzer sieht, und daher möchten Sie wahrscheinlich die Skybox beibehalten.
  • Wenn sie jedoch auf einem holografischen Headset wie HoloLens ausgeführt wird, sollte die reale Welt hinter allem angezeigt werden, was die Kamera rendert. Legen Sie den Kamerahintergrund auf transparent fest (in HoloLens wird schwarz als transparent dargestellt) anstelle einer Skybox-Textur:
    1. Auswählen der Hauptkamera im Hierarchiebereich
    2. Suchen Sie im Inspektorbereich die Kamerakomponente, und ändern Sie die Dropdownliste "Flags löschen" von Skybox in "Volltonfarbe"
    3. Wählen Sie die Hintergrundfarbauswahl aus, und ändern Sie die RGBA-Werte in (0, 0, 0, 0)
      1. Wenn Sie diese Einstellung über Code festlegen, können Sie Unitys Color.clear

MRTK verarbeitet bestimmte Kameraeinstellungen automatisch basierend auf der Konfiguration im Kamerasystemprofil.

Namespace: Microsoft.MixedReality.Toolkit.CameraSystem
Typ: MixedRealityCameraSystem

Um die Undurchsichtigkeit der Kamera zu überprüfen, verfügt das MixedRealityCamera-System über eine IsOpaque Eigenschaft.

CoreServices.CameraSystem.IsOpaque;

Kameraeinrichtung

Unabhängig davon, welche Art von Erfahrung Sie entwickeln, ist die Hauptkamera immer die primäre Stereorenderingkomponente, die an die kopfmontierte Anzeige Ihres Geräts angeschlossen ist. Es ist einfacher, Ihre App zu gestalten, wenn Sie sich die Startposition des Benutzers als (X: 0, Y: 0, Z: 0) vorstellen. Da die Hauptkamera die Bewegung des Kopfes des Benutzers nachverfolgt, kann die Startposition des Benutzers festgelegt werden, indem die Startposition der Hauptkamera festgelegt wird.

Die zentrale Wahl, die Sie treffen müssen, ist, ob Sie für HoloLens oder VR immersive Headsets entwickeln. Nachdem Sie dies vorgenommen haben, fahren Sie mit dem betreffenden Setupabschnitt fort.

HoloLens-Kameraeinrichtung

Für HoloLens-Apps müssen Sie Anker für alle Objekte verwenden, die Sie in der Szenenumgebung sperren möchten. Es wird empfohlen, ungebundene Räume zu verwenden, um Stabilität zu maximieren und Verankerungen in mehreren Räumen zu erstellen.

Führen Sie dieses schrittweise Lernprogramm aus, um Mixed Reality Toolkit in Ihrem Unity-Projekt hinzuzufügen und automatisch zu konfigurieren. Es ist auch möglich, direkt mit der MixedRealityPlayspace-Klasse von MRTK für Unity zu arbeiten und die Zielskala auf Welt festzulegen:

MRTK-Einstellungsfenster

MRTK sollte die Position des Playspaces und der Kamera automatisch behandeln, aber es ist gut, dies zu überprüfen:

MRTK Playspace

  1. Erweitern Sie im Hierarchiebereich das MixedRealityPlayspace GameObject, und suchen Sie das untergeordnete Hauptobjekt der Kamera .
  2. Suchen Sie im Inspektorbereich die Transformationskomponente , und ändern Sie die Position in (X: 0, Y: 0, Z: 0)

VR-Kameraeinrichtung

Windows Mixed Reality unterstützt Apps über eine breite Palette von Erfahrungsskalen, von Ausrichtungs- und Sitz-Apps bis hin zu Raum-Skalierungs-Apps. Auf HoloLens können Sie weiter gehen und weltweit skalierende Apps erstellen, mit denen Benutzer über 5 Meter gehen können, um eine ganze Etage eines Gebäudes und darüber hinaus zu erkunden.

Ihr erster Schritt bei der Erstellung einer Mixed Reality-Erfahrung in Unity besteht darin, zu bestimmen, auf welche Erfahrungsskala Ihre App ausgerichtet ist:

Raum- oder Steherfahrungen

Hinweis

Wenn Sie für HL2 erstellen, empfiehlt es sich, eine Erfahrung auf Augenhöhe zu erstellen, oder erwägen Sie, Szenenverständnis zu verwenden, um über den Boden Ihrer Szene zu sprechen.

Verwenden Sie die MixedRealityPlayspace-Klasse von MRTK für Unity, und legen Sie die Zielskala auf "Raum" oder "Standing" fest:

MRTK-Einstellungsfenster

MRTK sollte die Position des Playspaces und der Kamera automatisch behandeln, aber es ist gut, dies zu überprüfen:

MRTK Playspace

  1. Erweitern Sie im Hierarchiebereich das MixedRealityPlayspace GameObject, und suchen Sie das untergeordnete Hauptobjekt der Kamera .
  2. Suchen Sie im Inspektorbereich die Transformationskomponente , und ändern Sie die Position in (X: 0, Y: 0, Z: 0)

Sitzerfahrungen

Verwenden Sie die MixedRealityPlayspace-Klasse von MRTK für Unity, und legen Sie die Zielskala auf "Sitzend" fest:

MRTK-Einstellungsfenster

MRTK sollte die Position des Playspaces und der Kamera automatisch behandeln, aber es ist gut, dies zu überprüfen:

MRTK Playspace

  1. Erweitern Sie im Hierarchiebereich das MixedRealityPlayspace GameObject, und suchen Sie das untergeordnete Hauptobjekt der Kamera .
  2. Suchen Sie im Inspektorbereich die Transformationskomponente , und ändern Sie die Position in (X: 0, Y: 0, Z: 0)

Einrichten des Kamerahintergrunds

Wenn Sie MRTK verwenden, wird der Hintergrund der Kamera automatisch konfiguriert und verwaltet. Für XR SDK- oder Legacy-WSA-Projekte empfehlen wir, den Hintergrund der Kamera auf HoloLens einfarbig schwarz festzulegen und die Skybox für VR beizubehalten.

Verwenden mehrerer Kameras

Wenn mehrere Kamerakomponenten in der Szene vorhanden sind, weiß Unity, welche Kamera für das stereoskopische Rendering verwendet werden soll, basierend darauf, welches GameObject das MainCamera-Tag hat. In älteren XR-Dateien wird dieses Tag auch verwendet, um die Head tracking zu synchronisieren. Im XR SDK wird die Head Tracking von einem TrackedPoseDriver-Skript gesteuert, das an die Kamera angeschlossen ist.

Freigeben von Tiefenpuffern

Wenn Sie den Tiefenpuffer Ihrer App für Windows freigeben, erhalten Sie eine von zwei Verstärkungen der Hologrammstabilität, basierend auf dem Typ des Headsets, für das Sie rendern:

  • VR immersive Headsets können sich um positionsbezogene Neuprojektion kümmern, wenn ein Tiefenpuffer bereitgestellt wird, indem Sie Ihre Hologramme für Fehleinschätzungen sowohl an position als auch an der Ausrichtung anpassen.
  • HoloLens-Headsets haben einige verschiedene Methoden. HoloLens 1 wählt automatisch einen Fokuspunkt aus, wenn ein Tiefenpuffer bereitgestellt wird, um die Hologrammstabilität entlang der Ebene zu optimieren, die den größten Inhalt überschneidet. HoloLens 2 stabilisiert Inhalte mithilfe von Depth LSR (siehe Hinweise).

Das Konfigurationsdialogfeld von MRTK versucht, Tiefenpuffereinstellungen sowohl für XR SDK als auch für ältere WSA festzulegen. Es ist jedoch ratsam, diese Registerkarten zu überprüfen und die Einstellungen in Unity zu überprüfen.

Verwenden von Beschneidungsebenen

Das Rendern von Inhalten, die dem Benutzer zu nahe stehen, kann in Mixed Reality unangenehm sein. Sie können die nah- und weit entfernten Clipebenen auf der Kamerakomponente anpassen.

  1. Auswählen der Hauptkamera im Hierarchiebereich
  2. Suchen Sie im Inspektorbereich die Kamerakomponente "Beschneidungsebenen", und ändern Sie das Textfeld "Near" von 0,3 auf 0,85. Inhalte, die noch näher gerendert werden, können zu Benutzerbeschwerden führen und sollten gemäß den Renderabstandsrichtlinien vermieden werden.

Zuletzt verwendet die Kamera

Wenn Sie eine Sitzerfahrung erstellen, können Sie den Weltursprung von Unity an der aktuellen Kopfposition des Benutzers durch Aufrufen der XR aufrufen. InputTracking.Recenter-Methode in älteren XR- oder XRInputSubsystem.TryRecenter-Methode im XR SDK.

Teleportation

Dieses Feature ist in der Regel für VR-Umgebungen reserviert:

MRTK bietet ein In-Box-Teleportsystem, das automatisch über gelenkte Hände und Controller hinweg funktioniert.

Neuprojektierungsmodi

Sowohl HoloLens als auch immersive Headsets werden jeden Frame neu projizieren, den Ihre App rendert, um sich an jegliche Fehlschätzung der tatsächlichen Kopfposition des Benutzers anzupassen, wenn Photonen ausgegeben werden.

Standardmäßig:

  • Vr immersive Headsets kümmern sich um positionsbezogene Neuprojektion, wenn die App einen Tiefenpuffer für einen bestimmten Frame bereitstellt. Immersive Headsets passen auch Ihre Hologramme an, um eine Fehleinschätzung sowohl in der Position als auch bei der Ausrichtung zu erzielen. Wenn kein Tiefenpuffer bereitgestellt wird, korrigiert das System nur Fehlverhalten in der Ausrichtung.
  • Holographic Headsets wie HoloLens 2 kümmern sich um positionsbezogene Neuprojektion, unabhängig davon, ob die App ihren Tiefenpuffer bereitstellt. Positionsneuprojektion ist ohne Tiefenpuffer auf HoloLens möglich, da das Rendern oft mit einem stabilen Hintergrund der realen Welt gering ist.

MRTK verfügt derzeit nicht über Hilfsprogramme für den Reprojection-Modus. Weitere Informationen finden Sie auf einer der anderen Registerkarten.

Nächster Entwicklungsprüfpunkt

Wenn Sie die Unity-Entwicklungsreise verfolgt haben, die wir eingerichtet haben, befinden Sie sich mitten in der Erkundung der MRTK-Kernbausteine. Von hier aus können Sie mit dem nächsten Baustein fortfahren:

Oder fahren Sie mit den Funktionen und APIs der Mixed Reality-Plattform fort:

Sie können jederzeit zu den Prüfpunkten für die Unity-Entwicklung zurückkehren.

Siehe auch