Kameraeinrichtung in Unity

Wenn Sie ein Mixed Reality-Headset tragen, wird es zum Mittelpunkt Ihrer holografischen Welt. Die Unity Camera-Komponente verarbeitet automatisch stereoskopisches 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 Camera-Komponente gelten für herkömmliche 3D-Anwendungen, die einen skyboxähnlichen Hintergrund benötigen, da sie keine reale Welt haben.

  • Wenn Sie auf einem immersiven Headset ausgeführt werden, rendern Sie alles, was der Benutzer sieht, und daher sollten Sie die Skybox wahrscheinlich 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 so fest, dass er transparent ist (in HoloLens wird schwarz als transparent gerendert) anstelle einer Skybox-Textur:
    1. Wählen Sie im Hierarchiebereich die Hauptkamera aus.
    2. Suchen Sie im Bereich Inspektor nach der Kamerakomponente, und ändern Sie die Dropdownliste Flags löschen von Skybox in Einfarbig.
    3. Wählen Sie die Farbauswahl Hintergrund aus, und ändern Sie die RGBA-Werte in (0, 0, 0, 0)
      1. Wenn Sie dies über Code festlegen, können Sie unity's verwenden. 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;

Kamerasetup

Unabhängig davon, welche Art von Erfahrung Sie entwickeln, ist die Hauptkamera immer die primäre Stereorenderingkomponente, die an das kopfmontierte Display 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 verfolgt, kann die Startposition des Benutzers durch Festlegen der Startposition der Hauptkamera festgelegt werden.

Die zentrale Wahl, die Sie treffen müssen, ist, ob Sie für HoloLens- oder VR-Headsets entwickeln. Sobald Sie dies haben, fahren Sie mit dem Installationsabschnitt fort.

HoloLens-Kameraeinrichtung

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

Führen Sie dieses schrittweise Tutorial 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 aus MRTK für Unity zu arbeiten und die Zielskalierung auf Welt festzulegen:

MRTK-Einstellungsfenster

MRTK sollte die Position des Wiedergaberaums und der Kamera automatisch behandeln, es ist jedoch ratsam, folgendes zu überprüfen:

MRTK-Playspace

  1. Erweitern Sie im Hierarchiebereich das MixedRealityPlayspace GameObject, und suchen Sie nach dem untergeordneten Hauptkameraobjekt .
  2. Suchen Sie im Bereich Inspektor nach der Transformationskomponente , und ändern Sie die Positionin (X: 0, Y: 0, Z: 0).

Einrichtung der VR-Kamera

Windows Mixed Reality unterstützt Apps für eine Vielzahl von Erfahrungsskalen, von Apps, die nur für die Ausrichtung und für die Sitzskalierung verwendet werden, bis hin zu Apps auf Raumebene. Auf HoloLens können Sie weiter gehen und Apps auf Weltniveau erstellen, mit denen Benutzer über 5 Meter gehen und eine gesamte Etage eines Gebäudes und darüber hinaus erkunden können.

Ihr erster Schritt beim Erstellen einer Mixed Reality-Benutzeroberfläche in Unity besteht darin, zu bestimmen, auf welche Benutzeroberfläche Ihre App ausgerichtet ist:

Raumskala- oder Steherfahrungen

Hinweis

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

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

MRTK-Einstellungsfenster

MRTK sollte die Position des Wiedergaberaums und der Kamera automatisch behandeln, es ist jedoch ratsam, folgendes zu überprüfen:

MRTK-Playspace

  1. Erweitern Sie im Hierarchiebereich das MixedRealityPlayspace GameObject, und suchen Sie nach dem untergeordneten Hauptkameraobjekt .
  2. Suchen Sie im Bereich Inspektor nach der Transformationskomponente , und ändern Sie die Positionin (X: 0, Y: 0, Z: 0).

Sitzerfahrungen

Verwenden Sie die MixedRealityPlayspace-Klasse aus MRTK für Unity, und legen Sie die Zielskalierung auf Seated 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 GameObject MixedRealityPlayspace , und suchen Sie das untergeordnete Hauptkameraobjekt .
  2. Suchen Sie im Inspektorbereich nach der 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 auf durchgehend 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, je nachdem, welches GameObject über das MainCamera-Tag verfügt. In Legacy-XR wird dieses Tag auch verwendet, um die Kopfnachverfolgung zu synchronisieren. Im XR SDK wird die Headtracking durch ein TrackedPoseDriver-Skript gesteuert, das an die Kamera angefügt ist.

Freigeben von Tiefenpuffern

Die Freigabe des Tiefenpuffers Ihrer App für windows jeder Frame gibt Ihrer App eine von zwei Verstärkungen der Hologrammstabilität, basierend auf dem Typ des Headsets, für das Sie rendern möchten:

  • Immersive VR-Headsets können die Position neu projizieren, wenn ein Tiefenpuffer bereitgestellt wird, und Ihre Hologramme auf Fehlvorhersagen sowohl in der Position als auch in der Ausrichtung anpassen.
  • HoloLens-Headsets verfügen über verschiedene Methoden. HoloLens 1 wählt automatisch einen Fokuspunkt aus, wenn ein Tiefenpuffer bereitgestellt wird, wodurch die Hologrammstabilität entlang der Ebene optimiert wird, die den meisten Inhalt überschneidet. HoloLens 2 stabilisiert Inhalte mithilfe von Tiefen-LSR (siehe Hinweise).

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

Verwenden von Clippingebenen

Das Rendern von Inhalten zu nah am Benutzer kann in Mixed Reality unangenehm sein. Sie können die nah und fernen Clipebenen auf der Kamerakomponente anpassen.

  1. Wählen Sie im Hierarchiebereich die Hauptkamera aus.
  2. Suchen Sie im Bereich Inspektor die KamerakomponenteClipping Planes , und ändern Sie das Textfeld Near von 0,3 in 0,85. Inhalte, die noch näher gerendert werden, können zu Unannehmlichkeiten beim Benutzer führen und sollten gemäß den Renderabstandsrichtlinien vermieden werden.

Aktuelles Ausführen der Kamera

Wenn Sie eine Benutzeroberfläche mit sitzbasierter Skalierung erstellen, können Sie den Weltursprung von Unity an der aktuellen Kopfposition des Benutzers ändern, indem Sie XR aufrufen. 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 im Lieferumfang enthaltenes Teleportsystem , das automatisch über gelenkige Hände und Controller hinweg funktioniert.

Umprojektionsmodi

Sowohl HoloLens als auch immersive Headsets projizieren jeden Frame, den Ihre App rendert, neu, um die tatsächliche Kopfposition des Benutzers bei der Ausgabe von Photonen zu korrigieren.

Standardmäßig:

  • Vr Immersive Headsets übernehmen die Neuprojektion der Position, wenn die App einen Tiefenpuffer für einen bestimmten Frame bereitstellt. Immersive Headsets passen Auch Ihre Hologramme an, um fehleinschätzungen sowohl in der Position als auch in der Ausrichtung zu vermeiden. Wenn kein Tiefenpuffer bereitgestellt wird, korrigiert das System nur Fehleinschätzungen in der Ausrichtung.
  • Holographic Headsets wie HoloLens 2 übernehmen die Neuprojektion der Position, unabhängig davon, ob die App ihren Tiefenpuffer bereitstellt oder nicht. Die Neuprojektion der Position ist ohne Tiefenpuffer auf HoloLens möglich, da das Rendern oft spärlich ist und ein stabiler Hintergrund von der realen Welt bereitgestellt wird.

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

Nächster Entwicklungsprüfpunkt

Wenn Sie die Unity-Entwicklungsreise verfolgen, die wir uns vorgenommen 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