Kameraeinrichtung in Unity

Wenn Sie ein Mixed Reality-Headset tragen, wird es zum Zentrum Ihrer holografischen Welt. Die Unity-Kamerakomponente verarbeitet automatisch stereoskopisches Rendering und folgen Sie 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 sind für herkömmliche 3D-Anwendungen vorgesehen, 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 so möchten Sie wahrscheinlich die Skybox behalten.
  • Wenn sie jedoch auf einem holografischen Headset wie HoloLens ausgeführt werden, sollte die reale Welt hinter allem angezeigt werden, was die Kamera rendert. Legen Sie den Kamerahintergrund auf transparent (in HoloLens, schwarz gerendert als transparent) anstelle einer Skybox-Textur fest:
    1. Wählen Sie die Hauptkamera im Hierarchiebereich aus.
    2. Suchen Sie im Inspektorbereich die Kamerakomponente, und ändern Sie die Dropdownliste "Flags löschen" aus Skybox in "Volltonfarbe"
    3. Wählen Sie die Hintergrundfarbauswahl aus, und ändern Sie die RGBA-Werte in (0, 0, 0, 0, 0)
      1. Wenn Sie dies aus Code festlegen, können Sie Unitys Color.clear

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

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

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

CoreServices.CameraSystem.IsOpaque;

Kamerasetup

Jede Art von Erfahrung, die Sie entwickeln, ist die Hauptkamera immer die primäre Stereorenderingkomponente, die an die head-mounted Display Ihres Geräts angeschlossen ist. Es ist einfacher, Ihre App zu gestalten, wenn Sie sich die Anfangsposition des Benutzers vorstellen (X: 0, Y: 0, Z: 0). 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 gemacht haben, fahren Sie mit dem Abschnitt "Setup" fort.

HoloLens Kameraeinrichtung

Für HoloLens Apps müssen Sie Verankerungen 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 settings window

MRTK sollte die Position des Playspaces und der Kamera automatisch behandeln, aber es ist gut 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 Positionin (X: 0, Y: 0, Z: 0)

VR-Kameraeinrichtung

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

Ihr erster Schritt beim Erstellen einer Mixed Reality-Erfahrung in Unity besteht darin, zu bestimmen, welche Skalierung Ihre App angibt:

Raumskala- oder Steherfahrungen

Hinweis

Wenn Sie für HL2 erstellen, empfehlen wir, eine Erfahrung auf Augenhöhe zu erstellen, oder erwägen Sie die Verwendung des Szenenverständnisses , um über den Boden Ihrer Szene zu sprechen.

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

MRTK settings window

MRTK sollte die Position des Playspaces und der Kamera automatisch behandeln, aber es ist gut 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 Positionin (X: 0, Y: 0, Z: 0)

Sitzerfahrungen

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

MRTK settings window

MRTK sollte die Position des Playspaces und der Kamera automatisch behandeln, aber es ist gut 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 Positionin (X: 0, Y: 0, Z: 0)

Einrichten des Kamerahintergrunds

Wenn Sie MRTK verwenden, wird der Hintergrund der Kamera automatisch konfiguriert und verwaltet. Bei XR SDK- oder Legacy-WSA-Projekten empfehlen wir, den Hintergrund der Kamera auf einfarbig schwarz auf HoloLens 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 stereoskopisches Rendering verwendet werden soll, basierend auf dem GameObject das MainCamera-Tag hat. In legacy XR wird dieses Tag auch zum Synchronisieren der Head Tracking verwendet. In XR SDK wird die Head Tracking von einem TrackedPoseDriver-Skript gesteuert, das an die Kamera angefügt ist.

Freigeben von Tiefenpuffern

Wenn Sie den Tiefenpuffer Ihrer App für Windows jeden Frame freigeben, erhalten Sie eine von zwei Verstärkungen in 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, passen Sie Ihre Hologramme an, um sowohl in der Position als auch in der Ausrichtung fehlzuleiten.
  • HoloLens Headsets haben einige verschiedene Methoden. HoloLens 1 wählt automatisch einen Fokuspunkt aus, wenn ein Tiefenpuffer bereitgestellt wird und die Hologrammstabilität entlang der Ebene optimiert wird, die die meisten Inhalte überschneidet. HoloLens 2 werden Inhalte mithilfe von Tiefen-LSR (siehe Hinweise) stabilisiert.

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 Clipping-Ebenen

Das Rendern von Inhalten, die dem Benutzer zu nah sind, kann in Mixed Reality unangenehm sein. Sie können die Nah- und Fernausschnittebenen auf der Kamerakomponente anpassen.

  1. Wählen Sie die Hauptkamera im Hierarchiebereich aus.
  2. Suchen Sie im Inspektorbereich die KamerakomponenteClipping Planes , und ändern Sie das Textfeld "Nah " von 0,3 auf 0,85. Inhalte, die noch näher gerendert werden, können zu Benutzerbeschwerden führen und sollten anhand der Renderabstandsrichtlinien vermieden werden.

Zuletzt verwendete Kamera

Wenn Sie eine Sitz-Skalierungsumgebung erstellen, können Sie die Welt von Unity auf der aktuellen Kopfposition des Benutzers durch Aufrufen des XR abrufen. InputTracking.Recenter-Methode in legacy XR oder der XRInputSubsystem.TryRecenter-Methode im XR SDK.

Teleportation

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

MRTK bietet ein boxinternes Teleportsystem , das automatisch über artikulierte Hände und Controller hinweg funktioniert.

Reprojection-Modi

Sowohl HoloLens als auch immersive Headsets werden jeden Frame neu projizieren, den Ihre App rendert, um die tatsächliche Kopfposition des Benutzers anzupassen, wenn Photonen ausgegeben werden.

Standardmäßig:

  • VR immersive Headsets sorgen für positionale Neuprojektion, wenn die App einen Tiefenpuffer für einen bestimmten Frame bereitstellt. Immersive Headsets passen Auch Ihre Hologramme für Fehleinschläge in der Position und Ausrichtung an. Wenn ein Tiefenpuffer nicht bereitgestellt wird, korrigiert das System nur Fehleindrücke in der Ausrichtung.
  • Holographic Headsets wie HoloLens 2 sorgen dafür, ob die App ihren Tiefenpuffer bereitstellt oder nicht. Positional reprojection ist ohne Tiefenpuffer auf HoloLens möglich, da das Rendern oft mit einem stabilen Hintergrund, der von der realen Welt bereitgestellt wird, nicht mehr verfügbar ist.

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

Nächster Entwicklungsprüfpunkt

Wenn Sie die Unity-Entwicklungsreise verfolgen, die wir eingerichtet haben, befinden Sie sich in der Mitte 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