HologrammstabilitätHologram stability

Zum erreichen stabiler Hologramme verfügt hololens über eine integrierte Pipeline zur Bildstabilisierung.To achieve stable holograms, HoloLens has a built-in image stabilization pipeline. Die Stabilisierungs Pipeline funktioniert automatisch im Hintergrund, sodass Sie keine zusätzlichen Schritte ausführen müssen, um Sie zu aktivieren.The stabilization pipeline works automatically in the background, so you don't need to take any extra steps to enable it. Allerdings sollten Sie Techniken anwenden, die die Stabilität des Hologramms verbessern und Szenarios vermeiden, die die Stabilität verringern.However, you should exercise techniques that improve hologram stability and avoid scenarios that reduce stability.

Hologram Quality-TerminologieHologram quality terminology

Die Qualität von holograms ist das Ergebnis einer guten Umgebung und einer guten App-Entwicklung.The quality of holograms is a result of good environment and good app development. Apps, die mit einer Konstanten 60 Frames pro Sekunde in einer Umgebung ausgeführt werden, in der hololens die Umgebung nachverfolgen können, stellt sicher, dass das Hologramm und das passende Koordinatensystem synchronisiert sind. Aus Sicht eines Benutzers werden holograms, die stationär sein sollen, nicht relativ zur Umgebung verschoben.Apps running at a constant 60 frames-per-second in an environment where HoloLens can track the surroundings ensures the hologram and the matching coordinate system are in sync. From a user's perspective, holograms that are meant to be stationary won't move relative to the environment.

Die folgende Terminologie kann Ihnen helfen, wenn Sie Probleme mit der Umgebung, inkonsistente oder niedrige Renderingleistung oder etwas anderes erkennen.The following terminology can help you when you're identifying problems with the environment, inconsistent or low rendering rates, or anything else.

  • Genau.Accuracy. Nachdem das – Hologramm weltweit gesperrt und in der realen Welt platziert wurde, sollte es sich in der Umgebung befinden, in der es relativ zur umgebenden Umgebung ist, und unabhängig von der Benutzer Bewegung oder kleinen und geringfügigen Umgebungs Änderungen.Once the hologram is world-locked and placed in the real world, it should stay where it's placed relative to the surrounding environment and independent of user motion or small and sparse environment changes. Wenn ein – Hologramm später an einem unerwarteten Speicherort angezeigt wird, ist dies ein Genauigkeits Problem.If a hologram later appears in an unexpected location, it's an accuracy problem. Solche Szenarien können eintreten, wenn zwei unterschiedliche Räume identisch aussehen.Such scenarios can happen if two distinct rooms look identical.
  • Jitter.Jitter. Benutzer beobachten Jitter als hohes Frequenz schütteln eines holograms, das auftreten kann, wenn die Nachverfolgung der Umgebung beeinträchtigt wird.Users observe jitter as high frequency shaking of a hologram, which can happen when tracking of the environment degrades. Für Benutzer wird die SensorOptimierung von der Lösung ausgeführt.For users, the solution is running sensor tuning.
  • Der Judder.Judder. Niedrige renderingfrequenzen führen zu ungleichen Bewegungs-und doppelten Bildern von holograms.Low rendering frequencies result in uneven motion and double images of holograms. Der Judder ist in holograms mit Motion besonders bemerkbar.Judder is especially noticeable in holograms with motion. Entwickler müssen eine Konstante 60 fpsbeibehalten.Developers need to maintain a constant 60 FPS.
  • Inter.Drift. Benutzern wird die Abweichung angezeigt, da ein – Hologramm von der ursprünglichen Position entfernt wird.Users see drift as a hologram appears to move away from where it was originally placed. Die Abweichung erfolgt, wenn Sie Hologramme von räumlichen Ankernfern platzieren, insbesondere in nicht zugeordneten Teilen der Umgebung.Drift happens when you place holograms far away from spatial anchors, particularly in unmapped parts of the environment. Das Erstellen von holograms in der Nähe räumlicher Anker verringert die Wahrscheinlichkeit einer Abweichung.Creating holograms close to spatial anchors lowers the likelihood of drift.
  • Schnell Einstieg.Jumpiness. Wenn ein – Hologramm gelegentlich von seinem Speicherort "springt" oder "springt".When a hologram "pops" or "jumps" away from its location occasionally. Wenn die Nachverfolgung holograms anpasst, werden die aktualisierten Kenntnisse ihrer Umgebung angepasst.Jumpiness can occur as tracking adjusts holograms to match updated understanding of your environment.
  • MME.Swim. Wenn ein – Hologramm zu bewegen scheint, das der Bewegung des Benutzer Kopfes entspricht.When a hologram appears to sway corresponding to the motion of the user's head. Das Schwimmen tritt auf, wenn die Anwendung die neuprojektionnicht vollständig implementiert hat und die hololens nicht für den aktuellen Benutzer abgestimmt sind.Swim occurs when the application hasn't fully implemented reprojection, and if the HoloLens isn't calibrated for the current user. Der Benutzer kann die Kalibrierungs Anwendung erneut ausführen, um das Problem zu beheben.The user can rerun the calibration application to fix the issue. Entwickler können die Stabilisierungs Ebene aktualisieren, um die Stabilität zu verbessern.Developers can update the stabilization plane to further enhance stability.
  • Farbtrennung.Color separation. Die Anzeige in hololens ist ein sequenzieller sequenzieller Display, bei dem die Flash-Farbkanäle von rot-grün-blau-grün bei 60 Hz angezeigt werden (einzelne Farbfelder werden unter 240 Hz angezeigt).The displays in HoloLens are color sequential displays, which flash color channels of red-green-blue-green at 60 Hz (individual color fields are shown at 240 Hz). Jedes Mal, wenn ein Benutzer ein bewegendes Hologramm mit den Augen verfolgt, werden die führenden und nachfolgenden Kanten des – Hologramm in den einzelnen Farben getrennt und erzeugen einen Regenbogeneffekt.Whenever a user tracks a moving hologram with their eyes, that hologram's leading and trailing edges separate in their constituent colors, producing a rainbow effect. Der Grad der Trennung hängt von der Geschwindigkeit des holograms ab.The degree of separation is dependent upon the speed of the hologram. In einigen seltenen Fällen kann es bei der Betrachtung eines stationären holograms auch zu einem Regenbogeneffekt kommen, der als Farbtrennung bezeichnet wird.In some rarer cases, moving ones head rapidly while looking at a stationary hologram can also result in a rainbow effect, which is called color separation.

BildfrequenzFrame rate

Die Framerate ist die erste Säule der – Hologramm-Stabilität.Frame rate is the first pillar of hologram stability. Damit holograms weltweit stabil angezeigt werden, muss für jedes Bild, das dem Benutzer präsentiert wird, das holograms an der richtigen Stelle gezeichnet werden.For holograms to appear stable in the world, each image presented to the user must have the holograms drawn in the correct spot. Die Anzeige auf hololens wird 240 mal pro Sekunde aktualisiert, wobei vier separate Farbfelder für jedes neu gerenderte Bild angezeigt werden, was zu einer Benutzer Darstellung von 60 fps (Frames pro Sekunde) führt.The displays on HoloLens refresh 240 times a second, showing four separate color fields for each newly rendered image, resulting in a user experience of 60 FPS (frames per second). Um die bestmögliche Leistung zu gewährleisten, müssen Anwendungsentwickler 60 FPS verwalten. Dies bedeutet, dass alle 16 Millisekunden stets ein neues Image für das Betriebssystem bereitgestellt wird.To provide the best experience possible, application developers must maintain 60 FPS, which translates to consistently providing a new image to the operating system every 16 milliseconds.

60 fps Um holograms so zu zeichnen, dass Sie sich in der realen Welt befinden, müssen hololens Bilder aus der Position des Benutzers Rendering.60 FPS To draw holograms to look like they're sitting in the real world, HoloLens needs to render images from the user's position. Da das Rendern von Bildern Zeit erfordert, prognostizieren hololens, wo sich der Benutzer befindet, wenn die Bilder in den anzeigen angezeigt werden.Since image rendering takes time, HoloLens predicts where a user's head will be when the images are shown in the displays. Dieser Vorhersagealgorithmus ist jedoch eine Näherung.However, this prediction algorithm is an approximation. Hololens verfügt über Hardware, die das gerenderte Bild anpasst, um die Diskrepanz zwischen der vorhergesagten Kopfzeile und der tatsächlichen Head-Position zu berücksichtigen.HoloLens has hardware that adjusts the rendered image to account for the discrepancy between the predicted head position and the actual head position. Durch die Anpassung wird das Bild, das dem Benutzer angezeigt wird, so angezeigt, als ob es vom richtigen Speicherort gerendert wird, und holograms sind stabil.The adjustment makes the image the user sees appear as if it's rendered from the correct location, and holograms feel stable. Die Image Aktualisierungen funktionieren am besten mit kleinen Änderungen und können bestimmte Dinge im gerenderten Image wie Motion-Parser nicht vollständig beheben.The image updates work best with small changes, and it can't completely fix certain things in the rendered image like motion-parallax.

Durch Rendering bei 60 fps führen Sie drei Dinge aus, um stabile Hologramme zu erstellen:By rendering at 60 FPS, you're doing three things to help make stable holograms:

  1. Minimierung der Gesamt Latenz zwischen dem Rendern eines Bilds und dem Bild, das für den Benutzer sichtbar ist.Minimizing the overall latency between rendering an image and that image being seen by the user. In einer Engine mit einem Spiel und einem Renderthread, der in Lockstep ausgeführt wird, kann die Ausführung bei 30fps 33,3 MS zusätzlicher Latenz addieren.In an engine with a game and a render thread running in lockstep, running at 30FPS can add 33.3 ms of extra latency. Durch das Reduzieren der Latenzzeit wird der Vorhersagefehler verringertReducing latency decreases prediction error and increases hologram stability.
  2. Dadurch wird für jedes Bild, das die Augen des Benutzers erreicht, eine konsistente Latenzzeit erzielt.Making it so every image reaching the user's eyes have a consistent amount of latency. Wenn Sie bei 30 fps Rendering, zeigt die Anzeige weiterhin Bilder bei 60 fps an, was bedeutet, dass dasselbe Bild zweimal in einer Zeile angezeigt wird.If you render at 30 fps, the display still displays images at 60 FPS, meaning the same image will be displayed twice in a row. Der zweite Frame weist eine höhere Latenz von 16,6 ms als der erste Frame auf und muss eine deutlichere Menge an Fehlern beheben.The second frame will have 16.6-ms more latency than the first frame and will have to correct a more pronounced amount of error. Diese Inkonsistenzen in der Fehler Größe können unerwünschte 60 Hz-Judder auslösen.This inconsistency in error magnitude can cause unwanted 60 Hz judder.
  3. Verringern des Auftretens von Vibration (Judder), die sich durch ungleichmäßige Bewegung und Doppelbilder bemerkbar macht.Reducing the appearance of judder, which is characterized by uneven motion and double images. Eine schnellere Bewegung von Hologrammen und niedrigere Renderingraten gehen mit verstärkter Vibration einher.Faster hologram motion and lower render rates are associated with more pronounced judder. Wenn Sie 60 fps jederzeit verwalten möchten, können Sie den Judder für ein bestimmtes bewegliches Hologram vermeiden.Striving to maintain 60 FPS at all times will help avoid judder for a given moving hologram.

Konsistenz der Frame Rate Die Konsistenz der Framerate ist so wichtig wie ein hoher Rahmen pro Sekunde.Frame-rate consistency Frame rate consistency is as important as a high frames-per-second. Gelegentlich gelöschte Frames sind für jede Content-Rich-Anwendung unvermeidlich, und der hololens implementiert einige ausgereifte Algorithmen, um gelegentlich auftretende Fehler zu beheben.Occasionally dropped frames are inevitable for any content-rich application, and the HoloLens implements some sophisticated algorithms to recover from occasional glitches. Ein ständig schwankender Framerate ist für einen Benutzer jedoch deutlich deutlicher als bei einer konsistenten Ausführung mit niedrigeren Frameraten.However, a constantly fluctuating framerate is a lot more noticeable to a user than running consistently at lower frame rates. Beispielsweise wird eine Anwendung, die für fünf Frames reibungslos rendert (60 fps für die Dauer dieser fünf Frames) und dann jeden anderen Frame für die nächsten 10 Frames (30 fps für die Dauer dieser 10 Frames) als eine Anwendung, die konsistent mit 30 fps rendert, angezeigt.For example, an application that renders smoothly for five frames (60 FPS for the duration of these five frames) and then drops every other frame for the next 10 frames (30 FPS for the duration of these 10 frames) will appear more unstable than an application that consistently renders at 30 FPS.

Auf eine verwandte Anmerkung beschränkt das Betriebssystem Anwendungen auf 30 fps, wenn die gemischte Reality-Erfassung ausgeführt wird.On a related note, the operating system throttles down applications to 30 FPS when mixed reality capture is running.

Leistungsanalyse Es gibt verschiedene Arten von Tools, die verwendet werden können, um die Anwendungs Frame Rate zu messen, z. b.:Performance analysis There are different kinds of tools that can be used to benchmark your application frame rate, such as:

  • GPUViewGPUView
  • Visual Studio-GrafikdebuggerVisual Studio Graphics Debugger
  • Profiler, die in 3D-Engines wie Unity integriert sindProfilers built into 3D engines such as Unity

Hologram-Rendering-EntfernungenHologram render distances

Das menschliche visuelle System integriert mehrere entfernungsabhängige Signale, wenn es ein Objekt korrigiert und fokussiert.The human visual system integrates multiple distance-dependent signals when it fixates and focuses on an object.

  • Unterkunft : der Schwerpunkt eines einzelnen Auges.Accommodation - The focus of an individual eye.
  • Konvergenz : zwei Augen werden nach innen oder nach außen verschoben, um auf ein Objekt zu zentrieren.Convergence - Two eyes moving inward or outward to center on an object.
  • Binbichtbild : Unterschiede zwischen der linken und der rechten Seite, die von der Entfernung eines Objekts von Ihrem Fixpunkt abhängen.Binocular vision - Disparities between the left- and right-eye images that are dependent on an object's distance away from your fixation point.
  • Schattierung, relative Angular-Größe und andere monokuläre Cues (Single Eye).Shading, relative angular size, and other monocular (single eye) cues.

Konvergenz und Unternehmen sind einzigartig, da ihre zusätzlichen Verb-Retinal-Hinweise darauf, wie sich die Augen ändern, um Objekte in unterschiedlichen Abständen zu erkennen.Convergence and accommodation are unique because their extra-retinal cues related to how the eyes change to perceive objects at different distances. In natürlicher Ansicht sind Konvergenz und Unterbringung verknüpft.In natural viewing, convergence and accommodation are linked. Wenn die Augen etwas in der Nähe angezeigt werden (z. b. ihre Nase), werden die Augen zu einem Punkt hin-und her.When the eyes view something near (for example, your nose), the eyes cross and accommodate to a near point. Wenn die Augen etwas unendlich sehen, werden die Augen parallel angezeigt, und das Auge ist unendlich.When the eyes view something at infinity, the eyes become parallel and the eye accommodates to infinity.

Benutzer, die hololens durchführen, können immer 2,0 Mio. erreichen, um ein klares Bild zu erhalten, da die hololens-Anzeige in einer optischen Entfernung von ungefähr 2,0 m vom Benutzer korrigiert wird.Users wearing HoloLens will always accommodate to 2.0 m to maintain a clear image because the HoloLens displays are fixed at an optical distance approximately 2.0 m away from the user. App-Entwickler steuern, wohin die Augen der Benutzer konvergiert werden, indem Sie Inhalte und Hologramme in verschiedenen Tiefen platzieren.App developers control where users' eyes converge by placing content and holograms at various depths. Wenn Benutzer unterschiedliche Entfernungen aufnehmen und mit Ihnen zusammenführen, ist die natürliche Verknüpfung zwischen den beiden hinweisen fehlerhaft, was zu einem visuellen Unbehagen oder Müdigkeit führen kann, insbesondere wenn die Größe des Konflikts sehr groß ist.When users accommodate and converge to different distances, the natural link between the two cues is broken, which can lead to visual discomfort or fatigue, especially when the magnitude of the conflict is large.

Die Unannehmlichkeiten aus dem Vergence--Unterbringungs Konflikt können vermieden oder minimiert werden, indem konvergierter Inhalt so nah wie möglich an 2,0 m gehalten wird (also in einer Szene mit sehr viel Tiefe, wenn möglich, die interessanten Bereiche in der Nähe von 2,0 m).Discomfort from the vergence-accommodation conflict can be avoided or minimized by keeping converged content as close to 2.0 m as possible (that is, in a scene with lots of depth place the areas of interest near 2.0 m, when possible). Wenn Inhalte in der Nähe von 2,0 Mio. nicht platziert werden können, ist das Problem des Konflikts mit der Vergence-Unterkunft am größten, wenn der Benutzer zwischen den verschiedenen Entfernungen hin und her sucht.When content can't be placed near 2.0 m, discomfort from the vergence-accommodation conflict is greatest when user’s gaze back and forth between different distances. Anders ausgedrückt, es ist viel angenehmer, ein stehendes Hologramm zu betrachten, das in 50 cm Entfernung bleibt, als ein Hologramm in 50 cm Entfernung zu betrachten, das sich im Lauf der Zeit auf Sie zu und von Ihnen weg bewegt.In other words, it's much more comfortable to look at a stationary hologram that stays 50 cm away than to look at a hologram 50 cm away that moves toward and away from you over time.

Das Platzieren von Inhalten auf 2,0 m ist ebenfalls vorteilhaft, da die beiden anzeigen so konzipiert sind, dass Sie sich in dieser Entfernung vollständig überlappenPlacing content at 2.0 m is also advantageous because the two displays are designed to fully overlap at this distance. Bei Bildern, die auf dieser Ebene platziert werden, werden Sie, wenn Sie sich von der Seite des Holographic Frame bewegen, von einem Bildschirm angezeigt, während Sie auf dem anderen angezeigt werden.For images placed off this plane, as they move off the side of the holographic frame they'll appear from one display while still being visible on the other. Diese binare Rivalität kann die Tiefe Wahrnehmung des holograms stören.This binocular rivalry can be disruptive to the depth perception of the hologram.

Optimale Entfernung vom Benutzer für die Positionierung von HologrammenOptimal distance for placing holograms from the user

Optimale Entfernung vom Benutzer für die Positionierung von Hologrammen

Clip Flächen Für maximalen Komfort empfehlen wir die Clipping-renderentfernung bei 85 cm, wobei der Inhalt beginnend bei 1 Mio. nicht mehr angezeigt wird.Clip Planes For maximum comfort, we recommend clipping render distance at 85 cm with fade out of content starting at 1 m. In Anwendungen, in denen holograms und Benutzer beide stationär sind, können holograms bequem in der Nähe von 50 cm angezeigt werden. In diesen Fällen sollten Anwendungen eine Ausschneide Ebene von höchstens 30 cm platzieren, und das ausblenden sollte mindestens 10 cm von der Ausschneide Ebene ausgehen.In applications where holograms and users are both stationary, holograms can be viewed comfortably as near as 50 cm. In those cases, applications should place a clip plane no closer than 30 cm and fade out should start at least 10 cm away from the clip plane. Wenn Inhalt größer als 85 cm ist, müssen Sie sicherstellen, dass die Benutzer nicht häufig von holograms näher oder weiter wechseln, oder dass holograms nicht häufig in den Benutzer gelangen, der sich nicht mehr auf den Benutzer nähert.Whenever content is closer than 85 cm, it's important to ensure that users don't frequently move closer or farther from holograms or that holograms don't frequently move closer to or farther from the user as these situations are most likely to cause discomfort from the vergence-accommodation conflict. Der Inhalt sollte so entworfen werden, dass er die Notwendigkeit einer Interaktion mit einem Wert von mehr als 85 cm vom Benutzer minimiert, aber wenn Inhalte mehr als 85 cm gerendert werden müssen, ist es eine gute Faustregel für Entwickler, Szenarios zu entwerfen, in denen Benutzer und/oder Hologramme mehr als 25% der Zeit nicht mehr in die Tiefe gehen.Content should be designed to minimize the need for interaction closer than 85 cm from the user, but when content must be rendered closer than 85 cm, a good rule of thumb for developers is to design scenarios where users and/or holograms don't move in depth more than 25% of the time.

Bewährte Methoden Wenn holograms bei 2 m nicht platziert werden können und Konflikte zwischen Konvergenz und Unterbringung nicht vermieden werden können, liegt die optimale Zone für die – Hologramm-Platzierung zwischen 1,25 m und 5 m.Best practices When holograms can't be placed at 2 m and conflicts between convergence and accommodation can't be avoided, the optimal zone for hologram placement is between 1.25 m and 5 m. In jedem Fall sollten Designer Inhalte strukturieren, um Benutzern die Interaktion von 1 + m zu empfehlen (z. b. Anpassen von Inhalts Größe und Standard Platzierungs Parametern).In every case, designers should structure content to encourage users to interact 1+ m away (for example, adjust content size and default placement parameters).

NeuprojektionReprojection

Hololens verfügt über eine ausgereifte Hardware gestützte Holographic-Stabilisierungstechnik, die als neuprojektion bezeichnet wird.HoloLens has a sophisticated hardware-assisted holographic stabilization technique known as reprojection. Die neuprojektion berücksichtigt die Bewegung und Änderung der Sicht (camerapose), wenn die Szene animiert wird und der Benutzer die Kopfzeile verschiebt.Reprojection takes into account motion and change of the point of view (CameraPose) as the scene animates and the user moves their head. Anwendungen müssen bestimmte Aktionen ausführen, um die neuprojektion am besten zu verwenden.Applications need to take specific actions to best use reprojection.

Es gibt vier Haupttypen der neuprojektion.There are four main types of reprojection

  • Tiefen neuprojektion: Erzeugt die besten Ergebnisse mit dem geringsten Aufwand aus der Anwendung.Depth Reprojection: Produces the best results with the least amount of effort from the application. Alle Teile der gerenderten Szene werden abhängig von ihrer Entfernung zum Benutzer unabhängig voneinander stabilisiert.All parts of the rendered scene are independently stabilized based on their distance from the user. Einige Renderingartefakte sind möglicherweise sichtbar, wenn eine Tiefe Tiefe von Änderungen vorliegt.Some rendering artifacts may be visible where there are sharp changes in depth. Diese Option ist nur für hololens 2 und immersive Headsets verfügbar.This option is only available on HoloLens 2 and Immersive Headsets.
  • Planare neuprojektion: Ermöglicht der Anwendung die genaue Steuerung der Stabilisierung.Planar Reprojection: Allows the application precise control over stabilization. Eine Ebene wird von der Anwendung festgelegt, und alles auf dieser Ebene ist der stabilste Teil der Szene.A plane is set by the application and everything on that plane will be the most stable part of the scene. Wenn ein – Hologramm von der Ebene entfernt wird, desto weniger stabil ist es.The further a hologram is away from the plane, the less stable it will be. Diese Option ist auf allen Windows-Windows-Plattformen verfügbar.This option is available on all Windows MR platforms.
  • Automatische planare neuprojektion: Das System legt mithilfe der Informationen im tiefen Puffer eine Stabilisierungs Ebene fest.Automatic Planar Reprojection: The system sets a stabilization plane using information in the depth buffer. Diese Option ist auf hololens-Generation 1 und hololens 2 verfügbar.This option is available on HoloLens generation 1 and HoloLens 2.
  • Keine: Wenn die Anwendung keine Aktion ausführt, wird die planare neuprojektion mit der auf zwei Metern gesetzten Stabilisierungs Ebene in der Richtung des Kopf Anrufs des Benutzers verwendet, in der Regel die untergeordneten Ergebnisse.None: If the application does nothing, Planar Reprojection is used with the stabilization plane fixed at 2 meters in the direction of the user's head gaze, usually producing substandard results.

Anwendungen müssen bestimmte Aktionen durchführen, um die verschiedenen Arten der neuprojektion zu aktivieren.Applications need to take specific actions to enable the different types of reprojection

  • Tiefen neuprojektion: Die Anwendung übermittelt ihren tiefen Puffer für jeden gerenderten Frame an das System.Depth Reprojection: The application submits their depth buffer to the system for every rendered frame. Bei Unity wird die tiefen neuprojektion mit der Option frei gegebener tiefen Puffer im Windows Mixed Reality-Einstellungs Bereich unter XR-Plug-in-Verwaltung ausgeführt.On Unity, Depth Reprojection is done with the Shared Depth Buffer option in the Windows Mixed Reality Settings pane under XR Plugin Management. DirectX-apps CommitDirect3D11DepthBuffer-Aufrufe.DirectX apps call CommitDirect3D11DepthBuffer. Die Anwendung sollte setfocuspoint nicht aufrufen.The application shouldn't call SetFocusPoint.
  • Planare neuprojektion: Bei jedem Frame teilen Anwendungen dem System den Speicherort einer zu stabilisierende Ebene mit.Planar Reprojection: On every frame, applications tell the system the location of a plane to stabilize. Unity-Anwendungen nennen setfocuspointforframe und sollten den frei gegebenen tiefen Puffer deaktiviert haben.Unity applications call SetFocusPointForFrame and should have Shared Depth Buffer disabled. DirectX-apps aufrufen setfocuspoint und sollten CommitDirect3D11DepthBuffer nicht aufrufen.DirectX apps call SetFocusPoint and shouldn't call CommitDirect3D11DepthBuffer.
  • Automatische planare neuprojektion: Um dies zu aktivieren, muss die Anwendung ihren tiefen Puffer an das System übermitteln, wie dies für die Tiefe neuprojektion der Fall wäre.Automatic Planar Reprojection: To enable, the application needs to submit their depth buffer to the system as they would for Depth Reprojection. Apps, die das Mixed Reality Toolkit (mrtk) verwenden, können den Kamera Einstellungs Anbieter so konfigurieren, dass eine autoplanar-neuprojektion verwendet wird.Apps using the Mixed Reality Toolkit (MRTK) can configure the camera settings provider to use AutoPlanar Reprojection. Native apps sollten DepthReprojectionMode in den holographiccamerarenderingparameters auf AutoPlanar jeden Frame festlegen.Native apps should set the DepthReprojectionMode in the HolographicCameraRenderingParameters to AutoPlanar each frame. Bei hololens Generation 1 sollte die Anwendung setfocuspoint nicht aufrufen.For HoloLens generation 1, the application should not call SetFocusPoint.

Auswählen der Methode zum erneuten ProjektionChoosing Reprojection Technique

StabilisierungstypStabilization Type Immersive HeadsetsImmersive Headsets Hololens Generation 1HoloLens generation 1 HoloLens 2HoloLens 2
Tiefen neuprojektionDepth Reprojection EmpfohlenRecommended Nicht zutreffendN/A EmpfohlenRecommended

Unity-Anwendungen müssen Unity 2018.4.12 oder höher oder Unity 2019,3 oder höher verwenden.Unity applications must use Unity 2018.4.12 or later or Unity 2019.3 or later. Verwenden Sie andernfalls die automatische planare neuprojektion.Otherwise use Automatic Planar Reprojection.
Automatische planare neuprojektionAutomatic Planar Reprojection Nicht zutreffendN/A Empfohlene StandardeinstellungRecommended default Empfohlen, wenn die tiefen neuprojektion nicht die besten Ergebnisse liefertRecommended if Depth Reprojection isn't giving the best results

Unity-Anwendungen werden für die Verwendung von Unity 2018.4.12 oder höher oder Unity 2019,3 oder höher empfohlen.Unity applications are recommended to use Unity 2018.4.12 or later or Unity 2019.3 or later. Frühere Unity-Versionen funktionieren mit leicht herabgestuften reprojektions Ergebnissen.Previous Unity versions will work with slightly degraded reprojection results.
Planare neuprojektionPlanar Reprojection Nicht empfohlenNot Recommended Empfohlen, wenn die automatische Planar nicht die besten Ergebnisse liefertRecommended if Automatic Planar isn't giving the best results Verwenden Sie, wenn keine der tiefen Optionen gewünschte Ergebnisse liefert.Use if neither of the depth options give desired results

Überprüfen der Tiefe Festlegung der TiefeVerifying Depth is Set Correctly

Wenn eine reprojection-Methode den tiefen Puffer verwendet, muss überprüft werden, ob der Inhalt des tiefen Puffers die gerenderte Szene der Anwendung darstellt.When a reprojection method uses the depth buffer, it's important to verify the contents of the depth buffer represent the application's rendered scene. Eine Reihe von Faktoren kann Probleme verursachen.A number of factors can cause problems. Wenn z. b. eine zweite Kamera zum renderingüber Lagerungen der Benutzeroberfläche verwendet wird, werden wahrscheinlich alle detaillierten Informationen aus der eigentlichen Ansicht überschrieben.If there's a second camera used to render user interface overlays, for example, it's likely to overwrite all the depth information from the actual view. Transparente Objekte legen oft keine Tiefe fest.Transparent objects often don't set depth. Beim Text Rendering wird standardmäßig keine Tiefe festgelegt.Some text rendering won't set depth by default. Im Rendering werden sichtbare Fehler angezeigt, wenn die Tiefe nicht den gerenderten holograms entspricht.There will be visible glitches in the rendering when depth doesn't match the rendered holograms.

Hololens 2 verfügt über eine Schnellansicht, die anzeigt, wo die Tiefe festgelegt ist und nicht festgelegt wird, die über das Geräte Portal aktiviert werden kann.HoloLens 2 has a visualizer to show where depth is and isn't being set, which can be enabled from Device Portal. Wählen Sie auf der Registerkarte Ansichten > Hologram-Stabilität das Kontrollkästchen Tiefe Visualisierung in Headset anzeigen aus .On the Views > Hologram Stability tab, select the Display depth visualization in headset checkbox. Bereiche, die eine Tiefe festgelegt haben, werden blau dargestellt.Areas that have depth set properly will be blue. Gerenderte Elemente, die keine tiefen Menge aufweisen, sind rot markiert und müssen korrigiert werden.Rendered items that don't have depth set are marked in red and need to be fixed.

Hinweis

Die Visualisierung der Tiefe wird bei der Erfassung gemischter Realität nicht angezeigt.The visualization of the depth will not show up in Mixed Reality Capture. Er ist nur über das Gerät sichtbar.It is only visible through the device.

Einige GPU-Anzeige Tools ermöglichen die Visualisierung des tiefen Puffers.Some GPU viewing tools will allow visualization of the depth buffer. Anwendungsentwickler können diese Tools verwenden, um sicherzustellen, dass die Tiefe ordnungsgemäß festgelegt wird.Application developers can use these tools to make sure depth is being set properly. Weitere Informationen finden Sie in der Dokumentation zu den Tools der Anwendung.Consult the documentation for the application's tools.

Verwenden der planaren neuprojektionUsing Planar Reprojection

Hinweis

Bei desktopsiven Desktops ist das Festlegen einer Stabilisierungs Ebene in der Regel kontraproduktiv, da Sie weniger visuelle Qualität bietet, als die Tiefe des App-tiefen Puffers für das System bereitzustellen, um eine pro-Pixel-Tiefe basierende neuprojektion zu ermöglichen.For desktop immersive headsets, setting a stabilization plane is usually counter-productive, as it offers less visual quality than providing your app's depth buffer to the system to enable per-pixel depth-based reprojection. Wenn Sie nicht auf einem hololens ausgeführt werden, sollten Sie im Allgemeinen vermeiden, die Stabilisierungs Ebene festzulegen.Unless running on a HoloLens, you should generally avoid setting the stabilization plane.

Stabilisierungs Ebene für 3D-Objekte

Das Gerät versucht automatisch, diese Ebene auszuwählen, aber die Anwendung sollte dabei helfen, den Fokuspunkt in der Szene auszuwählen.The device will automatically attempt to choose this plane, but the application should assist by selecting the focus point in the scene. Unity-apps, die auf einem hololens ausgeführt werden, sollten den besten Fokuspunkt auf der Grundlage Ihrer Szene auswählen und an setfocuspoint ()übergeben.Unity apps running on a HoloLens should choose the best focus point based on your scene and pass it into SetFocusPoint(). Ein Beispiel für das Festlegen des Fokus Punkts in DirectX ist in der standardmäßigen drehenden Cube-Vorlage enthalten.An example of setting the focus point in DirectX is included in the default spinning cube template.

Unity sendet ihren tiefen Puffer an Windows, um die neuprojektion pro Pixel zu aktivieren, wenn Sie Ihre APP auf einem immersiven Headset ausführen, das mit einem Desktop-PC verbunden ist, was eine noch bessere Bildqualität bietet, ohne dass die APP explizit funktioniert.Unity will submit your depth buffer to Windows to enable per-pixel reprojection when you run your app on an immersive headset connected to a desktop PC, which provides even better image quality without explicit work by the app. Sie sollten nur dann einen Fokuspunkt angeben, wenn die APP auf einem hololens ausgeführt wird oder die pro-Pixel-neuprojektion überschrieben wird.You should only provide a Focus Point when your app is running on a HoloLens, or the per-pixel reprojection will be overridden.

// SetFocusPoint informs the system about a specific point in your scene to
// prioritize for image stabilization. The focus point is set independently
// for each holographic camera.
// You should set the focus point near the content that the user is looking at.
// In this example, we put the focus point at the center of the sample hologram,
// since that is the only hologram available for the user to focus on.
// You can also set the relative velocity and facing of that content; the sample
// hologram is at a fixed point so we only need to indicate its position.
renderingParameters.SetFocusPoint(
    currentCoordinateSystem,
    spinningCubeRenderer.Position
    );

Die Platzierung des Fokus Punkts hängt größtenteils davon ab, worum es sich beim – Hologramm handelt.Placement of the focus point largely depends on what the hologram is looking at. Die APP verfügt über den Reflektionsvektor zur Referenz, und der APP-Designer weiß, welche Inhalte der Benutzer beobachten soll.The app has the gaze vector for reference and the app designer knows what content they want the user to observe.

Das wichtigste, was ein Entwickler zum stabilisieren von holograms tun kann, ist das Rendering bei 60 fps.The single most important thing a developer can do to stabilize holograms is to render at 60 FPS. Wenn Sie unter 60 fps ablegen, wird die – Hologramm-Stabilität erheblich reduziert, was die Stabilisierung der Stabilisierungs Ebene angeht.Dropping below 60 FPS will dramatically reduce hologram stability, whatever the stabilization plane optimization.

Bewährte Methoden Es gibt keine universelle Methode zum Einrichten der Stabilisierungs Ebene und ihrer App-spezifischen.Best practices There's no universal way to set up the stabilization plane and it's app-specific. Unsere Hauptempfehlung besteht darin, zu experimentieren und zu sehen, was für Ihr Szenario am besten geeignet ist.Our main recommendation is to experiment and see what works best for your scenario. Versuchen Sie jedoch, die Stabilisierungs Ebene mit so vielen Inhalten wie möglich auszurichten, da der gesamte Inhalt auf dieser Ebene vollständig stabilisiert ist.However, try to align the stabilization plane with as much content as possible because all the content on this plane is perfectly stabilized.

Beispiel:For example:

  • Wenn Sie nur planare Inhalte haben (Lesen der APP, Videowiedergabe-APP), richten Sie die Stabilisierungs Ebene mit der Ebene aus, die ihren Inhalt enthält.If you have only planar content (reading app, video playback app), align the stabilization plane with the plane that has your content.
  • Wenn es drei kleine Bereiche gibt, die weltweit gesperrt sind, nehmen Sie die Stabilisierungs Ebene in den Mittelpunkt aller Bereiche, die sich derzeit in der Ansicht des Benutzers befinden.If there are three small spheres that are world-locked, make the stabilization plane "cut" though the centers of all the spheres that are currently in the user's view.
  • Wenn Ihre Szene Inhalte in deutlich unterschiedlichen Tiefen hat, bevorzugen Sie weitere Objekte.If your scene has content at substantially different depths, favor further objects.
  • Stellen Sie sicher, dass Sie den Stabilisierungs Punkt an jedem Frame anpassen, damit er mit dem – Hologramm übereinstimmt, das der Benutzer prüft.Make sure to adjust the stabilization point every frame to coincide with the hologram the user is looking at

Zu vermeide Dinge Die Stabilisierungs Ebene ist ein großartiges Tool zum erreichen stabiler Hologramme, aber wenn Sie missbraucht wird, kann dies zu schwerwiegenden Bild Instabilität führen.Things to Avoid The stabilization plane is a great tool to achieve stable holograms, but if misused it can result in severe image instability.

  • Nicht "Feuer und vergessen".Don't "fire and forget". Sie können am Ende der Stabilisierungs Ebene hinter dem Benutzer oder an ein Objekt angefügt werden, das sich nicht mehr in der Ansicht des Benutzers befindet.You can end up with the stabilization plane behind the user or attached to an object that is no longer in the user's view. Stellen Sie sicher, dass die Stabilisierungs Ebene normal gegen Kamera-vorwärts festgelegt ist (z. b.-Camera. Forward).Ensure the stabilization plane normal is set opposite camera-forward (for example, -camera.forward)
  • Ändern Sie die Stabilisierungs Ebene nicht schnell zwischen den extremenDon't rapidly change the stabilization plane back and forth between extremes
  • Belassen Sie die Stabilisierungs Ebene nicht auf eine festgelegte Distanz/Ausrichtung.Don't leave the stabilization plane set to a fixed distance/orientation
  • Nicht zulassen, dass die Stabilisierungs Ebene den Benutzer ausschneidetDon't let the stabilization plane cut through the user
  • Legen Sie den Schwerpunkt Punkt nicht fest, wenn Sie auf einem Desktop-PC statt auf einem hololens ausgeführt werden, und verwenden Sie stattdessen die Tiefe pro Pixel-neuprojektion.Don't set the focus point when running on a desktop PC rather than a HoloLens, and instead rely on per-pixel depth-based reprojection.

FarbtrennungColor separation

Aufgrund der Art der hololens-Anzeige kann ein Element mit dem Namen "Farbtrennung" manchmal wahrgenommen werden.Because of the nature of HoloLens displays, an artifact called "color-separation" can sometimes be perceived. Es manifestiert sich als das Bild, das in einzelne Basis Farben aufgeteilt ist (rot, grün und blau).It manifests as the image separating into individual base colors - red, green, and blue. Das Element kann vor allem sichtbar sein, wenn Sie weiße Objekte anzeigen, da Sie große Mengen von rot, grün und blau aufweisen.The artifact can be especially visible when displaying white objects, since they have large amounts of red, green, and blue. Es ist am deutlichsten, wenn ein Benutzer ein Hologramm visuell verfolgt, das mit hoher Geschwindigkeit über den Holographic-Frame bewegt wird.It's most pronounced when a user visually tracks a hologram that is moving across the holographic frame at high speed. Eine andere Möglichkeit des Artefakts ist das Durchlaufen von Objekten.Another way the artifact can manifest is warping/deformation of objects. Wenn ein Objekt einen hohen Kontrast und/oder reine Farben (z. b. rot, grün, blau) aufweist, wird die Farbtrennung als aufwärtuping verschiedener Teile des Objekts wahrgenommen.If an object has high contrast and/or pure colors such as red, green, blue, color-separation will be perceived as warping of different parts of the object.

Beispiel dafür, wie die Farbtrennung eines gesperrenden weißen runden Cursors aussehen könnte, wenn ein Benutzer seine Kopfzeile auf die Seite dreht:Example of what the color separation of a head-locked white round cursor could look like as a user rotates their head to the side:

Beispiel dafür, wie die Farbtrennung eines gesperrenden weißen runden Cursors aussehen könnte, wenn ein Benutzer seine Kopfzeile auf die Seite dreht.

Obwohl es schwierig ist, die Trennung von Farben vollständig zu vermeiden, stehen mehrere Verfahren zur Verfügung, um das Problem zu verringern.Though it's difficult to completely avoid color separation, there are several techniques available to mitigate it.

Die Farbtrennung finden Sie unter:Color-separation can be seen on:

  • -Objekte, die schnell verschoben werden, einschließlich der von einem Kopf gesperrten Objekte, z. b. des Cursors.Objects that are moving quickly, including head-locked objects such as the cursor.
  • Objekte, die sich weitgehend von der Stabilisierungs Ebeneunterliegen.Objects that are substantially far from the stabilization plane.

So mildern Sie die Auswirkungen der Farbtrennung:To attenuate the effects of color-separation:

  • Sorgen Sie dafür, dass das Objekt den Benutzer Blick verzögert.Make the object lag the user's gaze. Es sollte so aussehen, als ob es etwas Trägheit hat und an den Blick "on Springs" angefügt ist.It should appear as if it has some inertia and is attached to the gaze "on springs". Durch diese Vorgehensweise wird der Cursor verlangsamt (die Entfernung wird reduziert) und hinter dem wahrscheinlichen Blickpunkt des Benutzers abgelegt.This approach slows the cursor (reducing separation distance) and puts it behind the user's likely gaze point. Solange der Benutzer die Verschiebung seines Blicks nicht stoppt, ist es so lange sehr leicht.So long as it quickly catches up when the user stops shifting their gaze it feels natural.
  • Wenn Sie ein Hologramm verschieben möchten, sollten Sie versuchen, die Verschiebungs Geschwindigkeit unter 5 Grad/Sekunde beizubehalten, wenn Sie davon ausgehen, dass der Benutzer das Ergebnis mit den Augen hat.If you do want to move a hologram, try to keep its movement speed below 5 degrees/second if you expect the user to follow it with their eyes.
  • Verwenden Sie Light anstelle von Geometry für den Cursor.Use light instead of geometry for the cursor. Eine Quelle der virtuellen Beleuchtung, die an den Blick angefügt ist, wird als interaktiver Zeiger wahrgenommen, führt jedoch nicht zu einer Farbtrennung.A source of virtual illumination attached to the gaze will be perceived as an interactive pointer but won't cause color-separation.
  • Passen Sie die Stabilisierungs Ebene so an, dass Sie mit den Hologrammen identisch ist, bei denen der Benutzer die BenutzerAdjust the stabilization plane to match the holograms the user is gazing at.
  • Legen Sie das-Objekt rot, grün oder blau.Make the object red, green, or blue.
  • Wechseln Sie zu einer unscharfen Version des Inhalts.Switch to a blurred version of the content. Beispielsweise könnte ein runder weißer Cursor in eine leicht verschwommene Linie geändert werden, die in der Bewegungsrichtung ausgerichtet ist.For example, a round white cursor could be changed to a slightly blurred line oriented in the direction of motion.

Wie zuvor sind das Rendering bei 60 fps und das Festlegen der Stabilisierungs Ebene die wichtigsten Techniken für die – Hologramm-Stabilität.As before, rendering at 60 FPS and setting the stabilization plane are the most important techniques for hologram stability. Stellen Sie zunächst sicher, dass die Framerate den Erwartungen entspricht, wenn Sie mit einer merkbaren FarbtrennungIf facing noticeable color separation, first make sure the frame rate meets expectations.

Weitere InformationenSee also