Fallstudie – Schauen durch Löcher in Ihrer RealitätCase study - Looking through holes in your reality

Wenn Menschen über gemischte Realität nachzudenken und was Sie mit Microsoft hololens tun können, bleiben Sie in der Regel auf Fragen wie "welche Objekte kann ich meinem Raum hinzufügen?".When people think about mixed reality and what they can do with Microsoft HoloLens, they usually stick to questions like "What objects can I add to my room?" oder "Was kann ich über meinem Raum überlagern?"or “What can I layer on top of my space?" Ich möchte einen anderen Bereich hervorheben, den Sie in Erwägung gezogen haben – im Grunde ein Magic Trick –, der die gleiche Technologie verwendet, um Sie in oder durch echte physische Objekte zu suchen.I’d like to highlight another area you can consider—essentially a magic trick—using the same technology to look into or through real physical objects around you.

Die TechnologieThe tech

Wenn Sie bei der Unterbrechung der Wände in roboraid, beim Durchlaufen der Wände in roboraid, das Entsperren eines Mauer Sicherheits in Fragmenten oder das Glück, den UNSC Infinity-Hangar in der Halo 5-Umgebung in 2015, festgestellt haben, haben Sie gesehen, was ich spreche.If you've fought aliens as they break through your walls in RoboRaid, unlocked a wall safe in Fragments, or were lucky enough to see the UNSC Infinity hangar in the Halo 5 experience at E3 in 2015, then you've seen what I'm talking about. Abhängig von Ihrer Phantasie kann dieser visuelle Trick verwendet werden, um temporäre Löcher in den drywall zu versetzen oder um die Umgebungen unter einer losen Fläche auszublenden.Depending on your imagination, this visual trick can be used to put temporary holes in your drywall or to hide worlds under a loose floorboard.

Roboraid fügt dreidimensionale Pipes und andere Strukturen hinter ihren Wänden ein, die nur durch Löcher sichtbar sind, die bei einem Umbruch durch die Eindringlinge erstellt werden.

Roboraid fügt dreidimensionale Pipes und andere Strukturen hinter ihren Wänden ein, die nur durch Löcher sichtbar sind, die bei einem Umbruch durch die Eindringlinge erstellt werden.RoboRaid adds three-dimensional pipes and other structure behind your walls, visible only through holes created as the invaders break through.

Wenn Sie eines dieser eindeutigen Hologramme in hololens verwenden, kann eine APP die Illusion von Inhalten hinter ihren Wänden oder im Boden auf die gleiche Weise bereitstellen, wie sich die Realität durch ein tatsächliches Fenster präsentiert.Using one of these unique holograms on HoloLens, an app can provide the illusion of content behind your walls or through your floor in the same way that reality presents itself through an actual window. Bewegen Sie sich nach links, und Sie können sehen, was sich auf der rechten Seite befindet.Move yourself left, and you can see whatever is on the right side. Machen Sie sich näher, und Sie sehen etwas mehr von allem.Get closer, and you can see a bit more of everything. Der Hauptunterschied besteht darin, dass Sie durch echte Löcher von Ihnen bis zu diesem magischen Holographic-Inhalt weiter gehen können.The major difference is that real holes allow you through, while your floor stubbornly won't let you climb through to that magical holographic content. (Ich füge dem Rückstand eine Aufgabe hinzu.)(I'll add a task to the backlog.)

Abläufe im HintergrundBehind the scenes

Dieser Trick ist eine Kombination aus zwei Effekten.This trick is a combination of two effects. Zuerst werden Holographic-Inhalte mithilfe von "räumlichen Ankern" an die Welt angeheftet.First, holographic content is pinned to the world using "spatial anchors." Die Verwendung von Ankern, um diesen Inhalt "weltweit" zu machen, bedeutet, dass das, was Sie sehen, nicht visuell von den physischen Objekten in der Nähe abweicht, auch wenn Sie sich bewegen, oder das zugrunde liegende räumliche Zuordnungssystem aktualisiert sein 3D-Modell Ihres Raums.Using anchors to make that content "world-locked" means that what you're looking at doesn't visually drift away from the physical objects near it, even as you move or the underlying spatial mapping system updates its 3D model of your room.

Zweitens: der Holographic-Inhalt ist visuell auf einen sehr spezifischen Bereich beschränkt, sodass Sie nur die Löcher in ihrer Realität erkennen können.Secondly, that holographic content is visually limited to a very specific space, so you can only see through the hole in your reality. Diese Okklusion ist erforderlich, um eine logische Lücke, ein Fenster oder einen Tor zu suchen, die den Trick verkauft.That occlusion is necessary to require looking through a logical hole, window, or doorway, which sells the trick. Ohne den größten Teil der Ansicht zu blockieren, könnte es sein, dass ein Platz auf eine geheime Jurassic-Dimension wie ein schlechter platzierter Dinosaurier aussieht.Without something blocking most of the view, a crack in space to a secret Jurassic dimension might just look like a poorly placed dinosaur.

Dies ist kein tatsächlicher Screenshot, aber es wird veranschaulicht, wie die geheime Unterwelt aus den Grundlagen 101 in den hololens aussieht.

Dies ist kein tatsächlicher Screenshot, aber es wird veranschaulicht, wie die geheime Unterwelt aus den Grundlagen 101 des geheimen Haupt Schlüssels auf hololens prüft.This is not an actual screenshot, but an illustration of how the secret underworld from the MR Basics 101 looks on HoloLens. Das schwarze Gehäuse wird nicht angezeigt, aber Sie können Inhalte über eine virtuelle Lücke sehen.The black enclosure doesn’t show up, but you can see content through a virtual hole. (Wenn Sie ein tatsächliches Gerät durchsuchen, scheint die Etage sogar noch mehr zu verschwinden, da sich die Augen auf eine weitere Entfernung konzentrieren, als wäre sie noch nicht vorhanden.)(When looking through an actual device, the floor would seem to disappear even more because your eyes focus at a further distance as if it’s not even there.)

Weltweit sperrender Holographic-InhaltWorld-locking holographic content

In Unity ist das durch das Hinzufügen einer worldanchor-Komponente genauso einfach wie das Hinzufügen einer worldanchor-Komponente:In Unity, causing holographic content to stay world-locked is as easy as adding a WorldAnchor component:

myObject.AddComponent<WorldAnchor>();

Die worldanchor-Komponente passt die Position und Drehung des gameobject (und somit alles andere unter diesem Objekt in der Hierarchie) ständig an, um es in Relation zu den nahe gelegenen physischen Objekten stabil zu halten.The WorldAnchor component will constantly adjust the position and rotation of its GameObject (and thus anything else under that object in the hierarchy) to keep it stable relative to nearby physical objects. Wenn Sie Ihren Inhalt erstellen, erstellen Sie ihn so, dass der Stamm Pivot Ihres Objekts auf dieser virtuellen Lücke zentriert ist.When authoring your content, create it in such a way that the root pivot of your object is centered at this virtual hole. (Wenn sich der Pivot Ihres Objekts tief in der Wand befindet, sind seine geringfügigen Anpassungen an Position und Drehung deutlich deutlicher, und die Lücke sieht möglicherweise nicht sehr stabil aus.)(If your object's pivot is deep in the wall, its slight tweaks in position and rotation will be much more noticeable, and the hole may not look very stable.)

Alles außer dem virtuellen LochOccluding everything but the virtual hole

Es gibt verschiedene Möglichkeiten, die Ansicht selektiv zu blockieren, was in ihren Wänden ausgeblendet ist.There are a variety of ways to selectively block the view to what is hidden in your walls. Der einfachste Vorteil nutzt die Tatsache, dass hololens eine Additive Anzeige verwendet, was bedeutet, dass vollständig schwarze Objekte unsichtbar erscheinen.The simplest one takes advantage of the fact that HoloLens uses an additive display, which means that fully black objects appear invisible. Sie können dies in Unity tun, ohne spezielle Shader-oder Material Tricks durchführen zu müssen – erstellen Sie einfach ein schwarzes Material, und weisen Sie es einem Objekt zu, das ihren Inhalt einrichtet.You can do this in Unity without doing any special shader or material tricks— just create a black material and assign it to an object that boxes in your content. Wenn Sie die 3D-Modellierung nicht durchführen möchten, verwenden Sie einfach einige standardmäßige Quad-Objekte, und überlappen Sie Sie leicht.If you don't feel like doing 3D modeling, just use a handful of default Quad objects and overlap them slightly. Bei diesem Ansatz gibt es eine Reihe von Nachteilen, aber es ist die schnellste Möglichkeit, etwas zu funktionieren, und es ist großartig, wenn Sie vermuten, dass Sie es zu einem späteren Zeitpunkt umgestalten sollten.There are a number of drawbacks to this approach, but it is the fastest way to get something working, and getting a low-fidelity proof of concept working is great, even if you suspect you might want to refactor it later.

Ein wichtiger Nachteil des oben genannten "Blackbox"-Ansatzes ist, dass er nicht gut fotografiert.One major drawback to the above "black box" approach is that it doesn't photograph well. Obwohl ihre Wirkung in der Anzeige von hololens perfekt aussehen könnte, zeigen alle Screenshots, die Sie verwenden, ein großes Schwarzes Objekt anstelle der verbleibenden Elemente ihrer Wand oder Etage an.While your effect might look perfect through the display of HoloLens, any screenshots you take will show a large black object instead of what remains of your wall or floor. Der Grund hierfür ist, dass die physische Hardware und die Screenshots von holograms und der Realität unterschiedlich sind.The reason for this is that the physical hardware and screenshots composite holograms and reality differently. Wir leiten einen Moment in eine falsche Mathematik ein...Let's detour for a moment into some fake math...

Falsche mathematische Warnung! Diese Zahlen und Formeln sollen einen Punkt veranschaulichen, aber keine genaue Metrik.Fake math alert! These numbers and formulas are meant to illustrate a point, not to be any sort of accurate metric!

Was Sie durch hololens sehen:What you see through HoloLens:

( Reality * darkening_amount ) + Holograms

Was Sie in Screenshots und Videos sehen:What you see in screenshots and video:

( Reality * ( 1 - hologram_alpha ) ) + Holograms * hologram_alpha

In englischer Sprache: das, was Sie durch hololens sehen, ist eine einfache Kombination aus der dunklen Realität (z. b. über Sonnenbrillen) und der von der APP anzuzeigenden Hologramme.In English: What you see through HoloLens is a simple combination of darkened reality (like through sunglasses) and whatever holograms the app wants to show. Wenn Sie jedoch einen Screenshot erstellen, wird das Bild der Kamera gemäß dem Transparenz Wert pro Pixel mit den Hologrammen der APP kombiniert.But when you take a screenshot, the camera's image is blended with the app's holograms according to the per-pixel transparency value.

Eine Möglichkeit, dieses Problem zu umgehen, besteht darin, das "Blackbox"-Material so zu ändern, dass nur in den tiefen Puffer geschrieben wird, und mit allen anderen nicht transparenten Materialien zu sortieren.One way to get around this is to change the "black box" material to only write to the depth buffer, and sort with all the other opaque materials. Ein Beispiel hierfür finden Sie in der Datei " windowocclusion. Shader" im mixedrealitytoolkit auf GitHub.For an example of this, check out the WindowOcclusion.shader file in the MixedRealityToolkit on GitHub. Die relevanten Zeilen werden hier kopiert:The relevant lines are copied here:

"RenderType" = "Opaque"
"Queue" = "Geometry"
ColorMask 0

(Beachten Sie, dass es sich bei der Zeile "Offset 50, 100" um nicht verbundene Probleme handelt, daher wäre es wahrscheinlich sinnvoll, dies zu übernehmen.)(Note the "Offset 50, 100" line is to deal with unrelated issues, so it'd probably make sense to leave that out.)

Wenn Sie ein unsichtbares Okklusions Material wie das implementieren, kann Ihre APP ein Feld zeichnen, das in der Anzeige und in Mixed-Reality-Screenshots korrekt aussieht.Implementing an invisible occlusion material like that will let your app draw a box that looks correct in the display and in mixed-reality screenshots. Wenn Sie Bonuspunkte benötigen, können Sie versuchen, die Leistung dieses Felds noch weiter zu verbessern, indem Sie clever Dinge durchführen, um noch weniger unsichtbare Pixel zu zeichnen, aber das ist in der Regel nicht erforderlich.For bonus points, you can try to improve the performance of that box even further by doing clever things to draw even fewer invisible pixels, but that can really get into the weeds and usually won't be necessary.

Hier sehen Sie die geheime Unterwelt aus den Grundlagen 101, wenn Unity Sie zeichnet, mit Ausnahme der äußeren Teile des okding Felds.

Hier sehen Sie die geheime Unterwelt aus den Grundlagen 101 , wenn Unity Sie zeichnet, mit Ausnahme der äußeren Teile des okding Felds.Here is the secret underworld from MR Basics 101 as Unity draws it, except for the outer parts of the occluding box. Beachten Sie, dass sich der Pivotpunkt für die Unterwelt in der Mitte des Felds befindet, wodurch das Loch so stabil wie möglich in Bezug auf ihre tatsächliche Oberfläche bleibt.Note that the pivot for the underworld is at the center of the box, which helps keep the hole as stable as possible relative to your actual floor.

Aufzeichnung in EigenregieDo it yourself

Sie haben einen hololens und möchten die Auswirkung selbst ausprobieren?Have a HoloLens and want to try out the effect for yourself? Am einfachsten können Sie die kostenlose 3D-Viewer-App installieren und dann die heruntergeladene FBX-Datei herunterladen, die Sie auf GitHub bereitgestellt haben , um ein Blumentopf Modell in Ihrem Raum anzuzeigen.The easiest thing you can do (no coding required) is to install the free 3D Viewer app and then load the download the.fbx file I've provided on GitHub to view a flower pot model in your room. Laden Sie Sie in hololens, und Sie können die Illusion bei der Arbeit sehen.Load it on HoloLens, and you can see the illusion at work. Wenn Sie sich vor dem Modell befinden, können Sie nur in der kleinen Lücke erkennen – alles andere ist unsichtbar.When you're in front of the model, you can only see into the small hole—everything else is invisible. Sehen Sie sich das Modell von einer beliebigen anderen Seite an, und es verschwindet vollständig.Look at the model from any other side and it disappears entirely. Verwenden Sie die Steuerelemente Bewegung, Drehung und Skalierung des 3D-Viewers, um die virtuelle Lücke gegen jede vertikale Oberfläche zu positionieren, die Sie sich vorstellen können, um einige Ideen zu generieren.Use the movement, rotation, and scale controls of 3D Viewer to position the virtual hole against any vertical surface you can think of to generate some ideas!

Wenn Sie dieses Modell in Ihrem Unity-Editor anzeigen, wird ein großes schwarzes Feld um den Blumentopf angezeigt.

Wenn Sie dieses Modell in Ihrem Unity-Editor anzeigen, wird ein großes schwarzes Feld um den Blumentopf angezeigt.Viewing this model in your Unity editor will show a large black box around the flowerpot. Bei hololens wird das Feld ausgeblendet, sodass ein magische Fenstereffekt angezeigt wird.On HoloLens, the box disappears, giving way to a magic window effect.

Wenn Sie eine APP erstellen möchten, die diese Technik verwendet, sehen Sie sich das Tutorial zu den Grundlagen 101 in den Lernprogrammen " Mixed Reality" an.If you want to build an app that uses this technique, check out the MR Basics 101 tutorial in the Mixed Reality tutorials. Kapitel 7 endet mit einer Explosion in ihrem Boden, die eine verborgene Unterwelt (wie oben dargestellt) zeigt.Chapter 7 ends with an explosion in your floor that reveals a hidden underworld (as pictured above). Wer hat schon gesagt, dass Tutorials langweilig waren?Who said tutorials had to be boring?

Im folgenden finden Sie einige Ideen dazu, wo Sie diese Idee als nächstes treffen können:Here are some ideas of where you can take this idea next:

  • Stellen Sie sich vor, wie der Inhalt innerhalb des virtuellen Lochs interaktiv ist.Think of ways to make the content inside the virtual hole interactive. Wenn Ihre Benutzer über Ihre Wände hinausgehende Auswirkungen haben, können Sie den Sinn von Fragen, die dieser Trick bereitstellen kann, wirklich verbessern.Letting your users have some impact beyond their walls can really improve the sense of wonder that this trick can provide.
  • Stellen Sie sich vor, wie Sie Objekte auf bekannte Bereiche zurück sehen können.Think of ways to see through objects back to known areas. Wie können Sie z. b. in der Coffee-Tabelle eine Holographic-Lücke platzieren und den Fußboden darunter sehen?For example, how can you put a holographic hole in your coffee table and see your floor beneath it?

Informationen zum AutorAbout the author

Picture of Eric Rehmeyer Eric rehmeyerEric Rehmeyer
Senior Software Engineer @MicrosoftSenior Software Engineer @Microsoft

Siehe auchSee also