Empfohlene Einstellungen für Unity

Unity stellt eine Reihe von Standardoptionen bereit, die im Allgemeinen der durchschnittliche Fall für alle Plattformen sind. Unity bietet jedoch einige Für Mixed Reality spezifische Verhaltensweisen, die durch Projekteinstellungen umgeschaltet werden können.

Leistungsfähige Umgebungssetup

Einstellungen mit niedriger Qualität

Es ist wichtig, die Unity-Qualitätseinstellungen in "Sehr niedrig " zu ändern, damit Ihre Anwendung ausgeführt wird und bei der entsprechenden Framerate gut funktioniert, insbesondere für die HoloLens-Entwicklung. Für die Entwicklung von immersiven Headsets kann man abhängig von den Spezifikationen des Desktops, der die VR-Erfahrung angibt, immer noch eine Framerate ohne die niedrigsten Qualitätsparameter erzielen.

In Unity 2019 LTS+ können Sie die Qualitätsebene des Projekts festlegen, indem Sie zuProjekteinstellungen>bearbeiten>Qualität wechseln und standard festlegen, indem Sie auf den Pfeil nach unten auf die **Sehr niedrige Qualitätsstufe klicken.

Beleuchtungseinstellungen

Ähnlich wie bei den Einstellungen für Qualitätsszenen ist es wichtig, optimale Beleuchtungseinstellungen für Ihre Mixed Reality-Anwendung festzulegen. In Unity ist die Beleuchtungseinstellung, die in der Regel die größte Auswirkung auf die Leistung Ihrer Szene hat, die globale Echtzeitbeleuchtung. Sie können die globale Beleuchtung deaktivieren, indem Sie zu Fenster>Rendering>Beleuchtungseinstellungen>Globale Echtzeitbeleuchtung wechseln.

Es gibt eine weitere Beleuchtungseinstellung, "Baked Global Illumination". Diese Einstellung kann performante und visuell auffällige Ergebnisse auf immersiven Headsets liefern, gilt jedoch nicht für die HoloLens-Entwicklung. Die backte globale Beleuchtung wird nur für statische GameObjects berechnet, die in HoloLens-Szenen aufgrund der Art einer unbekannten und sich verändernden Umgebung nicht zu finden sind.

Weitere Informationen finden Sie unter Globale Beleuchtung von Unity .

Hinweis

Die globale Echtzeitbeleuchtung wird pro Szene festgelegt, sodass Entwickler diese Eigenschaft für jede Unity-Szene in ihrem Projekt speichern müssen.

Renderingpfad für die Einzeldurchlauf-Instanziierung

In Mixed Reality Anwendungen wird die Szene zweimal gerendert: einmal für jedes Auge. Im Vergleich zur herkömmlichen 3D-Entwicklung verdoppelt dies effektiv den Arbeitsaufwand, der berechnet werden muss. Es ist wichtig, den effizientesten Renderingpfad in Unity auszuwählen, um sowohl CPU- als auch GPU-Zeit zu sparen. Single Pass Instanced Rendering optimiert die Unity-Renderingpipeline für Mixed Reality-Apps. Es wird empfohlen, diese Einstellung standardmäßig für jedes Projekt zu aktivieren.

Aktivieren dieser Funktion in Ihrem Unity-Projekt

  1. Öffnen Sie OpenXR-Einstellungen. (Navigieren Sie zu Bearbeiten>Projekteinstellungen>XR-Plug-In-Verwaltung>OpenXR.)
  2. Wählen Sie im Dropdownmenü Rendermodus die Option Single-Pass-Instanz aus.

Weitere Informationen zu diesem Renderingansatz finden Sie in den folgenden Artikeln von Unity.

Hinweis

Ein häufiges Problem beim Single-Pass-Instanzrendering tritt auf, wenn Entwickler bereits vorhandene benutzerdefinierte Shader einsetzen, die noch nicht für die Instanziierung geschrieben wurden. Nach dem Aktivieren dieses Features stellen die Entwickler möglicherweise fest, dass manche Spielobjekte nur für ein Auge gerendert werden. Dies hat den Grund, dass die zugeordneten benutzerdefinierten Shader nicht die geeigneten Eigenschaften für die Instanziierung aufweisen.

Informationen zum Beheben dieses Problems finden Sie unter Single Pass Stereo Rendering for HoloLens (Single-Pass-Stereorendering für HoloLens) von Unity

Aktivieren der Tiefenpufferfreigabe

Um eine bessere Hologrammstabilität durch die Wahrnehmung des Benutzers zu erreichen, wird empfohlen, die Eigenschaft Tiefenpufferfreigabe in Unity zu aktivieren. Durch Aktivieren dieser Einstellung teilt Unity die von Ihrer Anwendung erstellte Tiefenkarte mit der Windows Mixed Reality-Plattform. Die Plattform kann dann die Hologrammstabilität speziell für Ihre Szene für jeden frame optimieren, der von Ihrer Anwendung gerendert wird.

Aktivieren dieser Funktion in Ihrem Unity-Projekt

  1. Öffnen Sie OpenXR-Einstellungen. (Navigieren Sie zu Bearbeiten>Projekteinstellungen>XR-Plug-In-Verwaltung>OpenXR.)
  2. Wählen Sie im Dropdownmenü Tiefenübermittlungsmodus die Option Tiefe 16 Bit aus.

Die 16-Bit-Tiefenpuffereinstellung wird besonders für die HoloLens-Entwicklung empfohlen. Die Auswahl von 16-Bit im Vergleich zu 24-Bit reduziert die Bandbreitenanforderungen erheblich, da weniger Daten verschoben/verarbeitet werden müssen. Das heißt, die Optimierung bringt bestimmte Kosten mit sich. Stellen Sie sicher, dass Sie die auswirkungen verstehen, die unten in den Feldern Wichtig erwähnt werden.

Damit die Windows Mixed Reality Plattform die Stabilität des Hologramms optimieren kann, ist der Tiefenpuffer genau und entspricht allen gerenderten Hologrammen auf dem Bildschirm. Daher ist es bei der Freigabe des Tiefenpuffers wichtig, wenn Farbe gerendert wird, um auch die Tiefe zu rendern. In Unity rendern die meisten Opaque- oder TransparentCutout-Materialien standardmäßig Tiefe, aber transparent, und Textobjekte rendern keine Tiefe, obwohl dies von Shadern und anderen Faktoren abhängt.

Wenn Sie den Mixed Reality Toolkit Standard-Shader verwenden, um die Tiefe für transparente Objekte zu rendern:

  1. Wählen Sie das transparente Material aus, das den MRTK Standard-Shader verwendet, und öffnen Sie das Inspektor-Editorfenster.
  2. Wählen Sie in der Warnung zum Freigeben des Tiefenpuffers die Schaltfläche Jetzt beheben aus. Dies kann auch manuell ausgeführt werden, indem Sie den Renderingmodus auf Benutzerdefiniert festlegen. Legen Sie dann Mode auf Transparent und schließlich Depth Write auf Ein fest.

Wichtig

Entwickler sollten sich vor Z-Fighting hüten, wenn sie diese Werte zusammen mit den Einstellungen der Nah-/Fernebene der Kamera ändern. Z-Fighting tritt auf, wenn zwei Gameobjects versuchen, im selben Pixel zu rendern, und aufgrund von Einschränkungen bei der Genauigkeit des Tiefenpuffers (d. h. Z-Tiefe) kann Unity nicht erkennen, welches Objekt sich vor dem anderen befindet. Entwickler werden ein Flackern zwischen zwei Spielobjekten bemerken, während sie um den gleichen Z-Tiefenwert kämpfen . Dies kann gelöst werden, indem Sie auf das 24-Bit-Tiefenformat wechseln, da für jedes Objekt ein größerer Wertebereich für die Z-Tiefe von der Kamera berechnet werden muss.

Es wird jedoch insbesondere für die HoloLens-Entwicklung empfohlen, die Nah- und Fernebene der Kamera stattdessen auf einen kleineren Bereich zu ändern und das 16-Bit-Tiefenformat beizubehalten. Die Z-Tiefe wird nicht linear dem Wertebereich entlang der Nah- und Fernkameraebene zugeordnet. Dies kann geändert werden, indem Sie die Hauptkamera in Ihrer Szene auswählen und unter Inspektor die Werte nah & Fernausschnittebene ändern, um deren Bereich zu verringern (z. B. von 1000m auf 100m oder anderer x-Wert usw.).

Wichtig

Unity erstellt bei Verwendung des 16-Bit-Tiefenformats keinen Schablonenpuffer . Daher funktionieren einige Unity-UI-Effekte und andere schablonenpflichtige Effekte erst, wenn das 24-Bit-Tiefenformat ausgewählt ist, das einen 8-Bit-Schablonenpuffer erstellt.

Erstellen für IL2CPP

Unity hat die Unterstützung für das .NET-Skripting-Back-End eingestellt und empfiehlt daher, dass Entwickler IL2CPP für ihre UWP Visual Studio-Builds verwenden. Obwohl dies verschiedene Vorteile mit sich bringt, kann das Erstellen Ihrer Visual Studio-Projektmappe aus Unity für IL2CPP langsamer sein als die alte .NET-Methode. Daher wird dringend empfohlen, bewährte Methoden für die Erstellung von IL2CPP zu befolgen, um Zeit bei der Entwicklungsiteration zu sparen.

  1. Nutzen Sie die inkrementelle Erstellung, indem Sie Ihr Projekt jedes Mal im gleichen Verzeichnis erstellen und die vordefinierten Dateien dort wiederverwenden.
  2. Deaktivieren von Antischadsoftwareüberprüfungen für Ihr Projekt & Buildordner
    • Öffnen Sie den Virenschutz & Bedrohungsschutz unter Ihrer App für Windows 10-Einstellungen.
    • Wählen Sie unterVirenschutzeinstellungen die Option Einstellungen verwalten & aus.
    • Wählen Sie im Abschnitt Ausschlüsse hinzufügen oder entfernen aus.
    • Wählen Sie Ausschluss hinzufügen aus, und wählen Sie den Ordner aus, der Ihren Unity-Projektcode und Die Buildausgaben enthält.
  3. Verwenden einer SSD zum Erstellen

Weitere Informationen finden Sie unter Optimieren von Buildzeiten für IL2CPP .

Hinweis

Darüber hinaus es kann vorteilhaft sein, besonders für Unity-Projekte mit sehr vielen Ressourcen (mit Ausnahme von Skriptdateien) oder ständig wechselnden Szenen/Ressourcen, einen Cacheserver einzurichten. Beim Öffnen eines Projekts speichert Unity die qualifizierenden Ressourcen in einem internen Cacheformat auf dem Entwicklercomputer. Bei Änderungen müssen die Elemente neu importiert und daher neu verarbeitet werden. Dieser Prozess kann einmal durchgeführt, in einem Cacheserver gespeichert und anschließend für andere Entwickler freigegeben werden, damit diese Zeit sparen und den erneuten Import der Änderungen nicht mehr einzeln und lokal verarbeiten müssen.

Veröffentlichungseigenschaften

Holografischer Begrüßungsbildschirm

HoloLens verfügt über eine MOBILE-KLASSE-CPU und GPU, was bedeutet, dass das Laden von Apps etwas länger dauert. Während die App geladen wird, sehen Benutzer nur Schwarz, sodass sie sich möglicherweise fragen, was los ist. Um sie beim Laden zu beruhigen, können Sie einen holografischen Begrüßungsbildschirm hinzufügen.

So schalten Sie den holografischen Begrüßungsbildschirm um:

  1. Wechseln Zur Seite"Projekteinstellungen>bearbeiten>Player"
  2. Wählen Sie die Registerkarte Windows Store aus, und öffnen Sie den Abschnitt Begrüßungsbild .
  3. Wenden Sie Ihr Bild unter der Windows Holographic > Holographic Splash Image-Eigenschaft an .
    • Wenn Sie die Option Unity-Begrüßungsbildschirm anzeigen umschalten , wird der Begrüßungsbildschirm der Marke Unity aktiviert oder deaktiviert. Wenn Sie nicht über eine Unity Pro-Lizenz verfügen, wird immer der Begrüßungsbildschirm mit der Marke Unity angezeigt.
    • Wenn ein Holographic Splash Image angewendet wird, wird immer angezeigt, ob das Kontrollkästchen Unity-Begrüßungsbildschirm anzeigen aktiviert oder deaktiviert ist. Das Angeben eines benutzerdefinierten holografischen Begrüßungsbilds steht nur Entwicklern mit einer Unity Pro-Lizenz zur Verfügung.
Unity-Begrüßungsbildschirm anzeigen Holografisches Begrüßungsbild Verhalten
Ein Keine Zeigen Sie den Standardmäßigen Unity-Begrüßungsbildschirm für 5 Sekunden oder bis zum Laden der App an, je nachdem, welcher Wert länger ist.
Ein Benutzerdefiniert Benutzerdefinierter Begrüßungsbildschirm für 5 Sekunden oder bis die App geladen wird, je nachdem, welcher Wert länger ist.
Aus Keine Transparentes Schwarz (nichts) anzeigen, bis die App geladen wird.
Aus Benutzerdefiniert Benutzerdefinierter Begrüßungsbildschirm für 5 Sekunden oder bis die App geladen wird, je nachdem, welcher Wert länger ist.

Weitere Informationen finden Sie in der Dokumentation zum Begrüßungsbildschirm von Unity .

Verlust der Nachverfolgung

Ein Mixed Reality-Headset hängt davon ab, die Umgebung um es herum zu sehen, um weltgebundene Koordinatensysteme zu konstruieren, die es Hologrammen ermöglichen, in position zu bleiben. Wenn sich das Headset nicht in der Welt wiederfinden kann, soll das Headset das Tracking verloren haben. In diesen Fällen funktionieren Funktionen, die von weltgebundenen Koordinatensystemen wie Raumphasen, Raumankern und räumlicher Zuordnung abhängig sind, nicht.

Bei einem Verlust der Nachverfolgung besteht das Standardverhalten von Unity darin, das Rendern von Hologrammen zu beenden, die Spielschleife anzuhalten und eine Nachverfolgungsbenachrichtigung anzuzeigen, die dem Blick des Benutzers bequem folgt. Benutzerdefinierte Benachrichtigungen können auch in Form eines Verlustnachverfolgungsbilds bereitgestellt werden. Für Apps, die für ihre gesamte Erfahrung von der Nachverfolgung abhängig sind, reicht es aus, Unity dies vollständig verarbeiten zu lassen, bis die Nachverfolgung wieder erfolgt. Entwickler können ein benutzerdefiniertes Bild bereitstellen, das während des Nachverfolgungsverlusts angezeigt werden soll.

So passen Sie das verlorene Bild nach der Nachverfolgung an:

  1. Wechseln Zur Seite"Projekteinstellungen>bearbeiten>Player"
  2. Wählen Sie auf der Registerkarte Windows Store aus, und öffnen Sie den Abschnitt Begrüßungsbild .
  3. Wenden Sie Ihr Bild unter der Eigenschaft Windows Holographic > Tracking Loss Image an.

Deaktivieren der automatischen Pause

Einige Apps erfordern möglicherweise keine Nachverfolgung (z. B. reine Ausrichtungs-Apps wie 360-Grad-Video-Viewer) oder müssen die Verarbeitung ohne Unterbrechung fortsetzen, während die Nachverfolgung verloren geht. Sie können das standardmäßige Verlustverhalten der Nachverfolgung deaktivieren, aber Sie sind für das Ausblenden/Deaktivieren von Objekten verantwortlich, die in einem Nachverfolgungsverlustszenario nicht ordnungsgemäß gerendert würden. In den meisten Fällen wird der einzige Inhalt empfohlen, der in diesem Fall gerendert werden soll, der körpergebundenen Inhalt, der um die Standard Kamera zentriert ist.

So deaktivieren Sie das automatische Pausenverhalten:

  1. Wechseln Zur Seite"Projekteinstellungen>bearbeiten>Player"
  2. Wählen Sie die Registerkarte Windows Store aus, und öffnen Sie den Abschnitt Begrüßungsbild .
  3. Ändern Sie das Kontrollkästchen Windows Holographic On Tracking Loss Pause and Show Image (Windows Holographic > On Tracking Loss Pause and Show Image).

Nachverfolgen von Verlustereignissen

Um benutzerdefiniertes Verhalten zu definieren, wenn die Nachverfolgung verloren geht, behandeln Sie die globalen Nachverfolgungsverlustereignisse.

Funktionen

Damit eine App bestimmte Funktionen nutzen kann, muss sie die entsprechenden Funktionen in ihrem Manifest deklarieren. Die Manifestdeklarationen können in Unity erstellt werden, sodass sie in jedem zukünftigen Projektexport enthalten sind.

Funktionen können für eine Mixed Reality-Anwendung wie folgt aktiviert werden:

  1. Wechseln Zur Seite"Projekteinstellungen>bearbeiten>Player"
  2. Wählen Sie die Registerkarte Windows Store aus, öffnen Sie den Abschnitt Veröffentlichungseinstellungen , und suchen Sie nach der Liste Funktionen .

Folgende Funktionen gelten für die Aktivierung der häufig verwendeten APIs für Holographic-Apps:

Funktion APIs, die Funktionen erfordern
SpatialPerception SurfaceObserver
WebCam PhotoCapture und VideoCapture
PicturesLibrary / VideosLibrary PhotoCapture bzw. VideoCapture (beim Speichern des erfassten Inhalts)
Mikrofon VideoCapture (bei der Audioaufnahme), DiktatRecognizer, GrammarRecognizer und KeywordRecognizer
InternetClient DictationRecognizer (und zur Verwendung des Unity Profilers)

Weitere Informationen