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

Wenn Menschen über Mixed Reality nachdenken und was sie mit Microsoft HoloLens tun können, halten sie sich in der Regel an Fragen wie "Welche Objekte kann ich meinem Raum hinzufügen?" oder "Was kann ich über meinen Raum legen?" Ich möchte einen anderen Bereich hervorheben, den Sie in Betracht ziehen können – im Wesentlichen ein Zaubertrick –, indem Sie die gleiche Technologie verwenden, um reale physische Objekte um Sie herum zu untersuchen oder durch sie zu sehen.

Die Technologie

Wenn Sie gegen Aliens gekämpft haben, während sie ihre Wände in RoboRaid durchbrechen, einen Wandsafe in Fragments entsperrt haben oder das Glück hatten, den UNSC Infinity-Hangar in der Halo 5-Erfahrung auf der E3 im Jahr 2015 zu sehen, dann haben Sie gesehen, wovon ich spreche. Je nach Vorstellung kann dieser visuelle Trick verwendet werden, um temporäre Löcher in Ihre Trockenmauer zu setzen oder Welten unter einer losen Diele zu verstecken.

RoboRaid fügt dreidimensionale Rohre und andere Strukturen hinter Ihren Wänden hinzu, die nur durch Löcher sichtbar sind, die beim Durchbrechen der Eindringlinge entstehen.

RoboRaid fügt dreidimensionale Rohre und andere Strukturen hinter Ihren Wänden hinzu, die nur durch Löcher sichtbar sind, die beim Durchbrechen der Eindringlinge entstehen.

Mit einem dieser einzigartigen Hologramme auf HoloLens kann eine App die Illusion von Inhalten hinter Ihren Wänden oder durch Ihren Boden auf die gleiche Weise vermitteln wie die Realität durch ein tatsächliches Fenster. Bewegen Sie sich nach links, und Sie können sehen, was sich auf der rechten Seite befindet. Nähern Sie sich, und Sie können von allem etwas mehr sehen. Der Hauptunterschied besteht darin, dass echte Löcher Sie durchlassen, während Ihr Boden stur nicht zu diesem magischen holografischen Inhalt durchsteigen lässt. (Ich füge dem Backlog eine Aufgabe hinzu.)

Abläufe im Hintergrund

Dieser Trick ist eine Kombination aus zwei Effekten. Zunächst werden holografische Inhalte mit "Räumlichen Ankern" an die Welt angeheftet. Die Verwendung von Ankern, um diesen Inhalt "weltgebunden" zu machen, bedeutet, dass das, was Sie betrachten, nicht visuell von den physischen Objekten in der Nähe abdrift, auch wenn Sie sich bewegen oder das zugrunde liegende räumliche Zuordnungssystem sein 3D-Modell Ihres Raums aktualisiert.

Zweitens ist dieser holografische Inhalt visuell auf einen ganz bestimmten Raum beschränkt, sodass Sie nur durch das Loch in Ihrer Realität sehen können. Diese Okklusion ist notwendig, um durch ein logisches Loch, fenster oder eine Tür zu schauen, was den Trick verkauft. Ohne etwas, das den großteil der Sicht blockiert, könnte ein Riss im Raum zu einer geheimen jurassischen Dimension einfach wie ein schlecht platzierter Dinosaurier aussehen.

Dies ist kein tatsächlicher Screenshot, sondern eine Veranschaulichung, wie die geheime Unterwelt aus MR Basics 101 auf HoloLens aussieht. Das schwarze Gehäuse wird nicht angezeigt, aber Sie können Inhalte durch ein virtuelles Loch sehen. (Beim Durchsehen eines tatsächlichen Geräts scheint der Boden noch mehr zu verschwinden, da Ihre Augen in einer weiteren Entfernung fokussieren, als wäre er nicht einmal da.)

Dies ist kein tatsächlicher Screenshot, sondern eine Veranschaulichung, wie die geheime Unterwelt aus dem MR Basics 101 auf HoloLens aussieht. Das schwarze Gehäuse wird nicht angezeigt, aber Sie können Inhalte durch ein virtuelles Loch sehen. (Beim Durchsehen eines tatsächlichen Geräts scheint der Boden noch mehr zu verschwinden, da Ihre Augen in einer weiteren Entfernung fokussieren, als wäre er nicht einmal da.)

Weltsperrende holografische Inhalte

In Unity ist es so einfach, dass holografische Inhalte weltgesperrt bleiben, wie das Hinzufügen einer WorldAnchor-Komponente:

myObject.AddComponent<WorldAnchor>();

Die WorldAnchor-Komponente passt die Position und Drehung ihres GameObject (und damit alles andere unter diesem Objekt in der Hierarchie) ständig an, um es relativ zu nahe gelegenen physischen Objekten stabil zu halten. Wenn Sie Ihre Inhalte erstellen, erstellen Sie sie so, dass der Stamm pivot Ihres Objekts an dieser virtuellen Lücke zentriert wird. (Wenn sich der Drehpunkt Ihres Objekts tief in der Wand befindet, sind seine leichten Optimierungen in Position und Drehung viel spürbarer, und das Loch sieht möglicherweise nicht sehr stabil aus.)

Verschließen von allem außer dem virtuellen Loch

Es gibt eine Vielzahl von Möglichkeiten, die Sicht auf das, was in Ihren Wänden verborgen ist, selektiv zu blockieren. Die einfachste nutzt die Tatsache, dass HoloLens ein additives Display verwendet, was bedeutet, dass vollständig 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 angezeigt wird. Wenn Sie keine Lust auf 3D-Modellierung haben, verwenden Sie einfach eine Handvoll Standard-Quad-Objekte, und überlappen Sie sie leicht. Dieser Ansatz hat eine Reihe von Nachteilen, aber es ist der schnellste Weg, um etwas zum Laufen zu bringen, und ein Low-Fidelity-Proof of Concept funktioniert großartig, auch wenn Sie vermuten, dass Sie es später umgestalten möchten.

Ein großer Nachteil des oben genannten "Black Box"-Ansatzes ist, dass es nicht gut fotografiert. Während Ihr Effekt durch die Anzeige von HoloLens perfekt aussieht, zeigen alle Screenshots, die Sie machen, ein großes schwarzes Objekt anstelle dessen, was von Ihrer Wand oder Ihrem Boden übrig bleibt. Der Grund dafür ist, dass die physische Hardware und Screenshots zusammengesetzte Hologramme und die Realität unterschiedlich sind. Lassen Sie uns einen Abstecher in eine falsche Mathematik...

Falsche Mathematikwarnung! Diese Zahlen und Formeln sollen einen Punkt veranschaulichen, keine genaue Metrik sein!

Was Sie durch HoloLens sehen:

( Reality * darkening_amount ) + Holograms

Was sie in Screenshots und Video sehen:

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

In englischer Sprache: Was Sie durch HoloLens sehen, ist eine einfache Kombination aus abgedunkelter Realität (z. B. durch Eine Sonnenbrille) und allen Hologrammen, die die App zeigen möchte. Wenn Sie jedoch einen Screenshot erstellen, wird das Bild der Kamera entsprechend dem Transparenzwert pro Pixel mit den Hologrammen der App gemischt.

Eine Möglichkeit, dies zu umgehen, besteht darin, das "Black Box"-Material so zu ändern, dass es nur in den Tiefenpuffer schreibt und mit allen anderen undurchsichtigen Materialien sortiert wird. 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, daher wäre es wahrscheinlich sinnvoll, dies wegzulassen.)

Durch die Implementierung eines unsichtbaren Okklusionsmaterials wie dieses kann Ihre App ein Feld zeichnen, das in der Anzeige und in Mixed Reality-Screenshots korrekt aussieht. Für Bonuspunkte können Sie versuchen, die Leistung dieser Box noch weiter zu verbessern, indem Sie clevere Dinge tun, um noch weniger unsichtbare Pixel zu zeichnen, aber das kann wirklich in das Unkraut gelangen und ist normalerweise nicht notwendig.

Hier ist die geheime Unterwelt aus MR Basics 101, wie Unity sie zeichnet, mit Ausnahme der äußeren Teile der verschließenden Box. Beachten Sie, dass sich der Pivot für die Unterwelt in der Mitte der Box befindet, wodurch das Loch im Verhältnis zu Ihrem tatsächlichen Boden so stabil wie möglich bleibt.

Hier ist die geheime Unterwelt aus MR Basics 101 , wie Unity sie zeichnet, mit Ausnahme der äußeren Teile der verschließenden Box. Beachten Sie, dass sich der Pivot für die Unterwelt in der Mitte der Box befindet, wodurch das Loch im Verhältnis zu Ihrem tatsächlichen Boden so stabil wie möglich bleibt.

Aufzeichnung in Eigenregie

Haben Sie eine HoloLens und möchten Sie den Effekt selbst ausprobieren? Das einfachste, was Sie tun können (keine Codierung erforderlich) ist, die kostenlose 3D Viewer-App zu installieren und dann die Datei .fbx herunterzuladen, 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. Sehen Sie sich das Modell von einer anderen Seite an, und es wird vollständig ausgeblendet. Verwenden Sie die Bewegungs-, Dreh- und Skalierungssteuerungen von 3D Viewer, um das virtuelle Loch auf einer beliebigen vertikalen Oberfläche zu positionieren, die Sie sich vorstellen können, um Ideen zu generieren!

Wenn Sie dieses Modell in Ihrem Unity-Editor anzeigen, wird eine große Blackbox um den Blumentopf herum angezeigt. Auf HoloLens verschwindet die Box und wird einem magischen Fenstereffekt geräumt.

Wenn Sie dieses Modell in Ihrem Unity-Editor anzeigen, wird eine große Blackbox um den Blumentopf herum angezeigt. Auf HoloLens verschwindet die Box und wird einem magischen Fenstereffekt geräumt.

Wenn Sie eine App erstellen möchten, die diese Technik verwendet, lesen Sie das Tutorial MR Basics 101 in den Mixed Reality Tutorials. Kapitel 7 endet mit einer Explosion in Ihrem Boden, die eine verborgene Unterwelt (wie oben dargestellt) offenbart. Wer sagte, Tutorials müssten langweilig sein?

Hier sind einige Ideen, wo Sie diese Idee als Nächstes umsetzen können:

  • Stellen Sie sich Möglichkeiten vor, den Inhalt innerhalb des virtuellen Lochs interaktiv zu gestalten. Wenn Ihre Benutzer einen Einfluss über ihre Wände hinaus haben, kann das Wundergefühl, das dieser Trick bieten kann, wirklich verbessern.
  • Stellen Sie sich Möglichkeiten vor, objekte zurück zu bekannten Bereichen zu sehen. Wie können Sie beispielsweise ein holografisches Loch in Ihren Couchtisch legen und Ihren Boden darunter sehen?

Informationen zum Autor

Bild von Eric Rehmeyer Eric Rehmeyer
Senior Software Engineer @Microsoft

Weitere Informationen