Fallstudie: Verwenden der Stabilisierungs Ebene zum Reduzieren von Holographic-TurbulenzenCase study - Using the stabilization plane to reduce holographic turbulence

Das Arbeiten mit holograms ist oft schwierig.Working with holograms is often tricky. Durch das Verschieben eines Leerraums und das Betrachten von holograms aus allen unterschiedlichen Winkeln wird ein Grad an untertauchen bereitgestellt, der auf einem normalen Computerbildschirm nicht verfügbar ist.Moving around a space and looking at holograms from all different angles provides a level of immersion that isn't available on a normal computer screen. Die Beibehaltung dieser Hologramme und die realistische Betrachtung ist eine technische Aufgabe, die sowohl von der Hardware von Microsoft hololens als auch vom intelligenten Entwurf von Holographic apps durchgeführt wird.Keeping these holograms in place and looking realistic is a technical feat accomplished by both the Microsoft HoloLens hardware and the intelligent design of holographic apps.

Die TechnologieThe tech

Damit holograms angezeigt werden, als ob Sie den Platz tatsächlich mit Ihnen teilen, sollten Sie ohne Farbtrennung ordnungsgemäß Rendering werden.To make holograms appear as though they're actually sharing the space with you, they should render properly without color separation. Dies wird teilweise durch Technologie integriert, die in der hololens-Hardware integriert ist, die holograms auf der Ebene der Stabilisierungs Ebeneverankert hält.This is achieved, in part, by technology built-in to the HoloLens hardware, which keeps holograms anchored on what we call a stabilization plane.

Eine Ebene wird durch einen Punkt und einen normalen definiert.A plane is defined by a point and a normal. Da die Ebene immer auf der Kamera stehen soll, ist es wichtig, den Punkt der Ebene festzulegen.Since we always want the plane to face the camera, we're concerned with setting the plane's point. Hololens kann feststellen, in welchem Punkt die Verarbeitung fokussiert werden soll, damit alles verankert und stabil bleibt.We can tell HoloLens what point to focus its processing on to keep everything anchored and stable. Das Festlegen dieses Fokus Punkts ist jedoch App-spezifisch und kann Ihre APP je nach Inhalt erstellen oder unterbrechen.However, setting this focus point is app-specific and can make or break your app depending on the content.

Holograms funktionieren am besten, wenn die Stabilisierungs Ebene ordnungsgemäß angewendet wird, aber was tatsächlich bedeutet, hängt von der Art der Anwendung ab, die Sie erstellen.Holograms work best when the stabilization plane is properly applied, but what that actually means depends on the type of application you’re creating. Werfen wir einen Blick darauf, wie einige der derzeit für hololens verfügbaren apps dieses Problem beheben.Let’s take a look at how some of the apps currently available for HoloLens tackle this problem.

Abläufe im HintergrundBehind the scenes

Beim Entwickeln der folgenden apps haben wir festgestellt, dass sich die Objekte, wenn wir die Ebene nicht verwendet haben, bei der Bewegung des Kopfes bewegen würden.While developing the following apps, we noticed that when we didn't use the plane, objects would sway when our head moved. Wir würden auch die Farbtrennung mit Quick Head-oder – Hologramm-Bewegungen sehen.We'd also see color separation with quick head or hologram movements. Wir haben am Ende des Testzeitraums und der Fehlerbehebung gelernt, wie Sie die Stabilisierungs Ebene am besten nutzen und unsere apps auf die Probleme entwerfen können, die nicht behoben werden können.We ended up learning through trial and error how to best use the stabilization plane and design our apps around the problems that it can't fix.

Galaxy Explorer: stationärer Inhalt, 3D-InteraktivitätGalaxy Explorer: Stationary content, 3D interactivity

Der Galaxy Explorer verfügt über zwei wichtige Elemente in der Szene: die Hauptansicht des Himmels Inhalts und die kleine UI-Symbolleiste, die auf Ihren Blick folgt.Galaxy Explorer has two major elements in the scene: The main view of the celestial content and the small UI toolbar that follows your gaze. Bei der Stabilisierungs Logik sehen wir uns an, was Ihr aktueller Blick Vektor in jedem Frame schneidet, um zu bestimmen, ob er auf eine angegebene Kollisions Ebene trifft.For the stabilization logic, we look at what your current gaze vector intersects with in each frame to determine if it hits anything on a specified collision layer. In diesem Fall sind die Ebenen, an denen wir interessiert sind, die Planeten. wenn der Blick auf einen Planeten fällt, wird die Stabilisierungs Ebene dort platziert.In this case, the layers we’re interested in are the planets, so if your gaze falls on a planet, the stabilization plane is placed there. Wenn keines der Objekte in der Ziel Kollisions Schicht auftritt, verwendet die APP eine sekundäre "Plan B"-Ebene.If none of the objects in the target collision layer are hit, the app uses a secondary “plan B” layer. Wenn nichts in der-Datei gespeichert wird, wird die Stabilisierungs Ebene in derselben Entfernung wie bei der Betrachtung des Inhalts beibehalten.If nothing is being gazed at, the stabilization plane is kept at the same distance as it was when gazing at the content. Die UI-Tools werden als Ziel der Ebene ausgelassen, da der Sprung zwischen nahezu und weit reduzierter Stabilität der gesamten Szene gefunden wurde.The UI tools are left out as a plane target as we found the jump between near and far reduced the stability of the overall scene.

Der Entwurf von Galaxy Explorer eignet sich gut, um die Dinge stabil zu halten und die Auswirkungen der Farbtrennung zu verringern.The design of Galaxy Explorer lends itself well to keeping things stable and reducing the effect of color separation. Der Benutzer wird empfohlen, den Inhalt zu durchlaufen und zu umbrechen, anstatt ihn von der Seite zu einem anderen zu verschieben, und die-Planeten werden langsam genug umkreist, dass die Farbtrennung nicht erkennbar ist.The user is encouraged to walk around and orbit the content rather than move along it from side to side, and the planets are orbiting slowly enough that the color separation isn’t noticeable. Außerdem wird eine Konstante 60 fps gewartet, die eine lange Weise verhindert, dass die Trennung von Farben stattfindet.Additionally, a constant 60 FPS is maintained, which goes a long way in preventing color separation from happening.

Um dies selbst zu überprüfen, suchen Sie im Galaxy Explorer-Code auf GitHubnach einer Datei namens LSRPlaneModifier.cs.To check this out yourself, look for a file called LSRPlaneModifier.cs in the Galaxy Explorer code on GitHub.

Holostudio: stationärer Inhalt mit einem UI-FokusHoloStudio: Stationary content with a UI focus

In holostudio verbringen Sie den größten Teil ihrer Zeit mit dem gleichen Modell, an dem Sie gerade arbeiten.In HoloStudio, you spend most of your time looking at the same model you’re working on. Wenn Sie ein neues Tool auswählen oder die Benutzeroberfläche durch die Benutzeroberfläche navigieren möchten, wird Ihr Blick nicht erheblich verlagert.Your gaze doesn’t move a significant amount, except for when you select a new tool or want to navigate the UI, so we can keep the plane setting logic simple. Wenn Sie die Benutzeroberfläche betrachten, wird die Ebene auf das beliebige Benutzeroberflächen Element festgelegt, an das Ihr Blick gerichtet ist.When looking at the UI, the plane is set to whatever UI element your gaze snaps to. Wenn Sie das Modell betrachten, ist die Ebene eine Menge Distanz, die dem Standardabstand zwischen Ihnen und dem Modell entspricht.When looking at the model, the plane is a set distance away, corresponding with the default distance between you and the model.

Die Stabilisierungs Ebene, die in holostudio visualisiert wird, während der Benutzer auf der Start Schaltfläche angezeigt wird.

Holotour und 3D-Viewer: stationärer Inhalt mit Animation und FilmenHoloTour and 3D Viewer: Stationary content with animation and movies

Im holotour-und 3D-Viewer sehen Sie sich ein einzelnes animiertes Objekt oder einen Film an, auf dem zusätzlich 3D-Effekte hinzugefügt werden.In HoloTour and 3D Viewer, you’re looking at a solitary animated object or movie with 3D effects added on top of it. Die Stabilisierung in diesen Apps ist auf das, was Sie gerade anzeigen, festgelegt.The stabilization in these apps is set to whatever you’re currently viewing.

Mit holotour wird auch verhindert, dass Sie sich zu weit von Ihrer virtuellen Welt entfernen, da Sie sich nicht an einem festes Ort befinden.HoloTour also prevents you from straying too far from your virtual world by having it move with you instead of staying in a fixed location. Dadurch wird sichergestellt, dass Sie nicht von anderen Hologrammen entfernt werden, um Stabilitätsprobleme zu erzielen.This ensures that you won’t get far enough away from other holograms for stability issues to creep in.

In diesem Beispiel von holotour würde die Stabilisierungs Ebene auf diesen Film von Hadrian Pantheon festgelegt werden.

Roboraid: dynamische Inhalte und Umgebungs InteraktionenRoboRaid: Dynamic content and environmental interactions

Das Festlegen der Stabilisierungs Ebene in roboraid ist erstaunlich einfach, obwohl es sich um die APP handelt, die eine möglichst plötzliche Bewegung erfordert.Setting the stabilization plane in RoboRaid is surprisingly simple, despite being the app that requires the most sudden movement. Die Ebene ist darauf ausgerichtet, auf die Wände oder die umgebenden Objekte zu gelangen, und wird in einer festgelegten Entfernung angezeigt, wenn Sie weit genug sind.The plane is geared towards sticking to the walls or the surrounding objects and will float at a fixed distance in front of you when you’re far enough away.

Roboraid wurde mit der Stabilisierungs Ebene entworfen.RoboRaid was designed with the stabilization plane in mind. Der Reticle, der den größten Teil nach der Überschrift bewegt, umgeht dies, indem er nur rot und Blau verwendet, wodurch die Farb Blutungen minimiert werden.The reticle, which moves the most since it’s head-locked, circumvents this by using only red and blue, which minimizes any color bleeding. Sie enthält auch ein kleines tiefgehende Tiefe zwischen den einzelnen Elementen. Dadurch werden alle Farb verblutungs Elemente minimiert, die durch eine Maskierung mit einem bereits erwarteten parameteffekt auftreten würden.It also contains a small bit of depth between the pieces, minimizing any color bleed that would occur by masking it with an already expected parallax effect. Die Roboter werden nicht schnell verschoben, und es werden nur kurze Entfernungen in regelmäßigen Abständen übertragen.The robots don’t move quickly and only travel short distances in regular intervals. Sie bleiben in der Regel um 2 Meter vor Ihnen, wo die Stabilisierung standardmäßig festgelegt ist.They tend to stay around 2 meters in front of you, where the stabilization is set by default.

Fragmente und junge Zusammenspiel: dynamischer Inhalt mit Umgebungs InteraktionFragments and Young Conker: Dynamic content with environmental interaction

Fragmente, die von Asobo Studio in C++ geschrieben wurden, unterscheiden sich bei der Festlegung der Stabilisierungs Ebene.Written by Asobo Studio in C++, Fragments and Young Conker take a different approach to setting the stabilization plane. Relevante Punkte (POI) werden im Code definiert und nach Priorität geordnet.Points of interest (POI) are defined in code and ordered by priority. POIs sind in-Game-Inhalten, wie z. b. das-Verbindungs Modell im Jugendschutz, Menüs, das Ziel-Reticle und Logos.POIs are in-game content, such as the Conker model in Young Conker, menus, the aiming reticle, and logos. Die POIs werden durch den Benutzer Blick geschnitten, und die Ebene wird auf den Mittelpunkt des Objekts mit der höchsten Priorität festgelegt.The POIs are intersected by the user’s gaze and the plane is set to the center of the object with the highest priority. Wenn keine Schnittmenge auftritt, wird die Ebene auf die Standard Entfernung festgelegt.If no intersection occurs, the plane is set to the default distance.

Fragmente und junge-Anker entwerfen Sie auch, wenn Sie sich zu weit von den holograms bewegen, indem Sie die APP anhalten, wenn Sie sich außerhalb der Inhalte befinden, die bereits als Wiedergabe Raum gescannt wurden.Fragments and Young Conker also design around you straying too far from the holograms by pausing the app if you move outside of what’s been previously scanned as your play space. Daher behalten Sie Sie in den Grenzen, die für eine stabilere Benutzerfunktion gefunden werden.As such, they keep you within the boundaries that are found to provide the most stable experience.

Aufzeichnung in EigenregieDo it yourself

Wenn Sie einen hololens haben und mit den Konzepten in diesem Artikel experimentieren möchten, können Sie eine Test Szene herunterladen, um die folgenden Übungen auszuprobieren.If you have a HoloLens and want to play around with the concepts in this article, you can download a test scene to try out the following exercises. In der Test Szene wird die integrierte Gizmo-API von Unity verwendet, damit Sie visualisieren können, wo Ihre Ebene festgelegt wird.The test scene uses Unity’s built-in gizmo API to help you visualize where your plane is being set. Der Code wurde auch verwendet, um die Screenshots in dieser Fallstudie aufzuzeichnen.The code was also used to capture the screenshots in this case study.

  1. Synchronisieren Sie die neueste Version von mixedrealitytoolkit-Unity.Sync the latest version of MixedRealityToolkit-Unity.
  2. Öffnen Sie die HoloToolkit-examples/Utilities/Szenen/stabilizationplaneseup. unity- Szene.Open the HoloToolkit-Examples/Utilities/Scenes/StabilizationPlaneSetting.unity scene.
  3. Erstellen und konfigurieren Sie das generierte Projekt.Build and configure the generated project.
  4. Führen Sie auf Ihrem Gerät aus.Run on your device.

Übung 1Exercise 1

In verschiedenen Ausrichtungen werden Ihnen mehrere weiße Punkte angezeigt.You'll see several white dots around you at different orientations. Vor Ihnen sehen Sie drei Punkte in unterschiedlicher Tiefe.In front of you, you’ll see three dots at different depths. Tippen Sie darauf, um den Punkt zu ändern, auf den die Ebene festgelegt ist.Air tap to change which dot the plane is set to. Bewegen Sie sich für diese Übung und für die anderen beiden Bereiche um Ihren Bereich, während Sie auf die Punkte schauen.For this exercise, and for the other two, move around your space while gazing at the dots. Drehen Sie den Kopf Links, rechts, oben und unten.Turn your head left, right, up, and down. Verschieben Sie die Punkte näher und weiter.Move closer to and farther from the dots. Sehen Sie, wie Sie reagieren, wenn die Stabilisierungs Ebene auf verschiedene Ziele festgelegt ist.See how they react when the stabilization plane is set to different targets.

Übung 2Exercise 2

Wechseln Sie jetzt nach rechts, bis zwei verschiebende Punkte angezeigt werden, von denen eine auf einem horizontalen Pfad und einer auf einem vertikalen Pfad liegt.Now, turn to your right until you see two moving dots, one oscillating on a horizontal path and one on a vertical path. Tippen Sie erneut auf, um den Punkt zu ändern, auf den die Ebene festgelegt ist.Once again, air-tap to change which dot the plane is set to. Beachten Sie, dass die Farbtrennung verringert wird und auf dem Punkt angezeigt wird, der mit der Ebene verbunden ist.Notice how color separation is lessened and appears on the dot that is connected to the plane. Tippen Sie erneut, um die Geschwindigkeit des Punkts in der setupsetting-Funktion zu verwenden.Tap again to use the dot’s velocity in the plane setting function. Dieser Parameter gibt hololens über die beabsichtigte Bewegung des Objekts an.This parameter gives a hint to HoloLens about the object’s intended motion. Es ist wichtig zu wissen, wann dies zu tun ist. wie Sie sehen werden, wenn die Geschwindigkeit bei einem Punkt verwendet wird, wird für den anderen verschiebenden Punkt eine größere Farbtrennung angezeigt.It’s important to know when to use this, as you’ll notice when velocity is used on one dot, the other moving dot will show greater color separation. Berücksichtigen Sie dies beim Entwerfen Ihrer Apps – Wenn Sie einen zusammenhängenden Fluss für die Bewegung ihrer Objekte haben, können Sie verhindern, dass Artefakte angezeigt werden.Keep this in mind when designing your apps—having a cohesive flow to the motion of your objects can help prevent artifacts from appearing.

Übung 3Exercise 3

Wenn Sie eine neue Konfiguration der Punkte sehen, können Sie auf das Recht klicken.Turn to your right once more until you see a new configuration of dots. In diesem Fall gibt es Punkte in der Entfernung und einen Punkt vor und nach oben.In this case, there are dots in the distance and one dot spiraling in and out in front of them. Tippen Sie auf die Linie, um den Punkt zu ändern, auf den die Ebene festgelegt ist, und wechseln Sie zwischen den Punkten im Hintergrund und dem Punkt in Bewegung.Air tap to change which dot the plane is set to, alternating between the dots in the back and the dot in motion. Beachten Sie, dass das Festlegen der Position der Ebene und der Geschwindigkeit, mit der der spiralförmige Punkt aussieht, Artefakte überall angezeigt werden.Notice how setting the plane position and the velocity to that of the spiraling dot makes artifacts appear everywhere.

TippsTips

  • Sorgen Sie dafür, dass die Logik der Ebene einfach ist.Keep your plane setting logic simple. Wie Sie gesehen haben, benötigen Sie keine komplexen Ebenen-Einstellungs Algorithmen, um eine immersive Erfahrung zu erzielen.As you’ve seen, you don’t need complex plane setting algorithms to make an immersive experience. Die Stabilisierungs Ebene ist nur ein Teil des Rätsels.The stabilization plane is only one piece of the puzzle.
  • Wenn möglich, sollten Sie die Ebene immer zwischen Zielen problemlos verschieben.When at all possible, always move the plane between targets smoothly. Das sofortige wechseln entfernter Ziele kann die Szene visuell stören.Instantly switching distant targets can visually disrupt the scene.
  • Ziehen Sie ggf. eine Option in ihrer Ebene fest, um die Logik für ein bestimmtes Ziel zu sperren.Consider having an option in your plane setting logic to lock onto a specific target. Auf diese Weise können Sie bei Bedarf die Ebene für ein Objekt, z. b. ein Logo oder einen Titelbildschirm, sperren.That way, you can have the plane locked on an object, such as a logo or title screen, if needed.

Informationen zum AutorAbout the author

Picture of Ben Strukus Ben strukusBen Strukus
Anwendungsentwickler @MicrosoftSoftware Engineer @Microsoft

Siehe auchSee also