Fallstudie – Schauen durch Löcher in Ihrer Realität

Wenn Die Menschen über mixed Reality denken und was sie mit Microsoft HoloLens tun können, bleiben sie in der Regel an Fragen wie "Welche Objekte können ich meinem Raum hinzufügen?" oder "Was kann ich auf meinem Raum auf dem Platz auflegen?" Ich möchte einen anderen Bereich hervorheben, den Sie im Wesentlichen als magischen Trick betrachten können, indem Sie dieselbe Technologie verwenden, um sich auf echte physische Objekte um Sie zu schauen.

Die Technologie

Wenn Sie aliens kämpfen, während sie ihre Wände in RoboRaid durchbrechen, eine Wand in Fragmenten entsperrt haben oder glücklich genug waren, um den UNSC Infinity-Hangar im Halo 5-Erlebnis im Jahr 2015 zu sehen, dann haben Sie gesehen, worüber ich sprechen. Je nach Vorstellung kann dieser visuelle Trick verwendet werden, um temporäre Löcher in Ihren Trockenmauern zu setzen oder Welten unter einem lockeren Bodenboden zu ausblenden.

RoboRaid adds three-dimensional pipes and other structure behind your walls, visible only through holes created as the invaders break through.

RoboRaid fügt dreidimensionale Rohre und andere Struktur hinter Ihren Wänden hinzu, die nur durch Löcher sichtbar sind, die als Eindringlinge durchbrechen.

Mit einem dieser einzigartigen Hologramme auf HoloLens kann eine App die Illusion von Inhalten hinter Ihren Wänden oder durch den Boden auf dieselbe Weise wie die Realität durch ein tatsächliches Fenster darstellen. Bewegen Sie sich nach links, und Sie können sehen, was auf der rechten Seite ist. Gehen Sie näher, und Sie können etwas mehr alles sehen. Der Hauptunterschied ist, dass echte Löcher Sie durchlassen können, während Ihr Boden stubborn sie nicht zu diesem magischen holografischen Inhalt klettern lässt. (Ich werde dem Backlog eine Aufgabe hinzufügen.)

Abläufe im Hintergrund

Dieser Trick ist eine Kombination aus zwei Effekten. Zunächst wird holografischer Inhalt mit "räumlichen Ankern" an die Welt angeheftet. Mithilfe von Ankern, um diesen Inhalt "weltgesperrt" zu machen, bedeutet, dass das aussehende Objekt nicht visuell von den physischen Objekten entfernt wird, auch wenn Sie verschieben oder das zugrunde liegende räumliche Zuordnungssystem das 3D-Modell Ihres Raums aktualisiert.

Zweitens ist dieser holografische Inhalt visuell auf einen sehr bestimmten Raum beschränkt, sodass Sie nur durch das Loch in Ihrer Realität sehen können. Diese Okklusion ist erforderlich, um einen logischen Loch, ein Fenster oder eine Tür zu betrachten, die den Trick verkauft. Ohne etwas, das die meisten Ansichten blockiert, könnte ein Leerzeichen zu einer geheimen Jurassic-Dimension einfach wie ein schlecht platzierter Dinosaurier aussehen.

This is not an actual screenshot, but an illustration of how the secret underworld from MR Basics 101 looks on HoloLens. The black enclosure doesn’t show up, but you can see content through a virtual hole. (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.)

Dies ist kein tatsächlicher Screenshot, sondern eine Abbildung, wie die geheime Unterwelt von MR Basics 101 auf HoloLens aussieht. Das schwarze Gehäuse wird nicht angezeigt, aber Sie können Inhalte über ein virtuelles Loch sehen. (Wenn Sie ein tatsächliches Gerät durchsehen, scheint der Boden noch mehr zu verschwinden, da sich Ihre Augen auf einen weiteren Abstand konzentrieren, wie es nicht noch dort ist.)

Weltsperren von holografischen Inhalten

In Unity ist das Hinzufügen einer WorldAnchor-Komponente so einfach wie das Hinzufügen einer WorldAnchor-Komponente:

myObject.AddComponent<WorldAnchor>();

Die WorldAnchor-Komponente passt die Position und Drehung ihres GameObjects ständig an (und somit alles andere unter diesem Objekt in der Hierarchie), um es stabil zu halten relativ zu nahe gelegenen physischen Objekten. Wenn Sie Inhalte erstellen, erstellen Sie es so, dass der Stamm pivot Ihres Objekts in diesem virtuellen Loch zentriert ist. (Wenn sich der Pivot Ihres Objekts tief in der Wand befindet, sind ihre leichten Anpassungen in der Position und Drehung viel spürbarer, und das Loch sieht möglicherweise nicht sehr stabil aus.)

Alles, aber das virtuelle Loch zu verschließen

Es gibt eine Vielzahl von Möglichkeiten, die Ansicht selektiv zu blockieren, was in Ihren Wänden ausgeblendet ist. Am einfachsten nutzt man die Tatsache, dass HoloLens eine additive Anzeige verwendet, was bedeutet, dass voll schwarze Objekte unsichtbar erscheinen. Sie können dies in Unity tun, ohne spezielle Shader- oder Materialtricks zu tun – erstellen Sie einfach ein schwarzes Material und weisen Sie es einem Objekt zu, das in Ihrem Inhalt feldern. Wenn Sie keine 3D-Modellierung durchführen möchten, verwenden Sie einfach eine Handvoll Standard-Quad-Objekte und überlappen sie leicht. Es gibt eine Reihe von Nachteilen für diesen Ansatz, aber es ist die schnellste Möglichkeit, etwas zu arbeiten, und ein Niedrige-Genauigkeit-Nachweis für die Konzeptarbeit ist großartig, auch wenn Sie vermuten, dass Sie es später neu gestalten möchten.

Ein großer Nachteil des oben genannten "Black Box"-Ansatzes ist, dass es nicht gut fotografiert. Während Ihr Effekt möglicherweise perfekt durch die Anzeige von HoloLens aussieht, zeigen alle Screenshots, die Sie erstellen, ein großes schwarzes Objekt anstelle der Reste Ihrer Wand oder des Bodens an. Der Grund dafür ist, dass die physische Hardware und Screenshots zusammengesetzte Hologramme und Realität unterschiedlich sind. Lassen Sie uns einen Moment in einige gefälschte Mathematik umleiten...

Falscher mathematischer Warnung! Diese Zahlen und Formeln sollen einen Punkt veranschaulichen, keine genaue Metrik sein!

Was Sie über HoloLens sehen:

( Reality * darkening_amount ) + Holograms

Was Sie in Screenshots und Video sehen:

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

In Englisch: Was Sie durch HoloLens sehen, ist eine einfache Kombination aus dunkler Realität (z. B. durch Sonnenbrille) und alle Hologramme, die die App anzeigen möchte. Wenn Sie jedoch einen Screenshot erstellen, wird das Bild der Kamera mit den Hologrammen der App gemäß dem Pro-Pixel-Transparenzwert kombiniert.

Eine Möglichkeit, dies zu umgehen, besteht darin, das "Black Box"-Material zu ändern, um nur den Tiefenpuffer zu schreiben und mit allen anderen undurchsichtigen Materialien zu sortieren. Ein Beispiel hierfür finden Sie in der Datei "WindowOcclusion.shader" im MixedRealityToolkit auf GitHub. Die relevanten Zeilen werden hier kopiert:

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

(Beachten Sie, dass die Zeile "Offset 50, 100" nicht verwandte Probleme behandelt, sodass es wahrscheinlich sinnvoll wäre, dies auszulassen.)

Das Implementieren eines unsichtbaren Okklusionsmaterials wie das Zeichnen eines Felds, das in der Anzeige und in Mixed-Reality-Screenshots richtig aussieht. Für Bonuspunkte können Sie versuchen, die Leistung dieses Felds noch weiter zu verbessern, indem Sie clevere Dinge ausführen, um noch weniger unsichtbare Pixel zu zeichnen, aber das kann wirklich in die Weeds gelangen und normalerweise nicht notwendig sein.

Here is the secret underworld from MR Basics 101 as Unity draws it, except for the outer parts of the occluding box. 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.

Hier ist die geheime Unterwelt von MR Basics 101 , da Unity es zeichnet, außer für die äußeren Teile des Okcluding-Felds. Beachten Sie, dass der Pivot für die Unterwelt im Mittelpunkt des Felds liegt, wodurch das Loch so stabil wie möglich im Verhältnis zu Ihrem tatsächlichen Boden beibehalten wird.

Aufzeichnung in Eigenregie

Haben Sie einen HoloLens und möchten Sie den Effekt für sich selbst ausprobieren? Das einfachste, was Sie tun können (keine Codierung erforderlich) besteht darin, die kostenlose 3D Viewer-App zu installieren und dann die Datei ".fbx" zu laden, die ich auf GitHub bereitgestellt habe, um ein Blumentopfmodell in Ihrem Raum anzuzeigen. Laden Sie es auf HoloLens, und Sie können die Illusion bei der Arbeit sehen. Wenn Sie sich vor dem Modell befinden, können Sie nur in das kleine Loch sehen – alles andere ist unsichtbar. Schauen Sie sich das Modell von jeder anderen Seite an, und es verschwindet vollständig. Verwenden Sie die Bewegungs-, Dreh- und Skalierungssteuerelemente von 3D Viewer, um das virtuelle Loch auf jeder vertikalen Oberfläche zu positionieren, die Sie denken können, um einige Ideen zu generieren!

Viewing this model in your Unity editor will show a large black box around the flowerpot. On HoloLens, the box disappears, giving way to a magic window effect.

Das Anzeigen dieses Modells im Unity-Editor zeigt ein großes Schwarzes Feld um das Blumentopf. Auf HoloLens verschwindet das Feld, wodurch ein magischer Fenstereffekt angezeigt wird.

Wenn Sie eine App erstellen möchten, die diese Technik verwendet, lesen Sie das MR Basics 101-Lernprogramm in den lernprogramme Mixed Reality. Kapitel 7 endet mit einer Explosion in Ihrem Boden, die eine verborgene Unterwelt zeigt (wie oben dargestellt). Wer sagte, Lernprogramme mussten langweilig sein?

Hier finden Sie einige Ideen, in denen Sie diese Idee als nächstes nehmen können:

  • Denken Sie an Möglichkeiten, den Inhalt innerhalb des virtuellen Lochs interaktiv zu machen. Damit Ihre Benutzer über ihre Wände hinaus einige Auswirkungen haben können, können Sie wirklich den Sinn für Wunder verbessern, dass dieser Trick bieten kann.
  • Denken Sie an Möglichkeiten, objekte wieder in bekannte Bereiche zu sehen. Wie können Sie z. B. ein holografisches Loch in Ihren Kaffeetisch setzen und Ihren Boden darunter sehen?

Informationen zum Autor

Picture of Eric Rehmeyer Eric Rehmeyer
Senior Software Engineer @Microsoft

Siehe auch