Casestudy - Door gaten in je realiteit kijken
Wanneer mensen nadenken over mixed reality en wat ze kunnen doen met Microsoft HoloLens, houden ze meestal vast aan vragen zoals 'Welke objecten kan ik toevoegen aan mijn kamer?' of 'Wat kan ik boven op mijn ruimte plaatsen?' Ik wil een ander gebied benadrukken dat u kunt overwegen ( in wezen een magische truc) met behulp van dezelfde technologie om echte fysieke objecten om u heen te bekijken of door te nemen.
De technologie
Als je buitenaardse wezens hebt gevochten terwijl ze je muren in RoboRaid breken, een muur veilig in Fragmenten ontgrendeld of geluk hadden om de UNSC Infinity hangar te zien in de Halo 5-ervaring bij E3 in 2015, dan heb je gezien waar ik het over heb. Afhankelijk van uw verbeelding kan deze visuele truc worden gebruikt om tijdelijke gaten in uw droogwand te plaatsen of om werelden onder een los vloerbord te verbergen.
RoboRaid voegt driedimensionale pijpen en andere structuur achter uw muren toe, alleen zichtbaar door gaten die zijn gemaakt als de indringer doorbreekt.
Met behulp van een van deze unieke hologrammen op HoloLens kan een app de illusie van inhoud achter uw muren of door uw vloer bieden op dezelfde manier als de realiteit zich presenteert via een werkelijk venster. Verplaats jezelf naar links en je kunt zien wat er aan de rechterkant staat. Ga dichterbij en je kunt nog wat meer van alles zien. Het belangrijkste verschil is dat echte gaten je doorstaan, terwijl je vloer koppig niet door die magische holografische inhoud kan klimmen. (Ik voeg een taak toe aan de achterstand.)
Achter de schermen
Deze truc is een combinatie van twee effecten. Eerst wordt holografische inhoud aan de wereld vastgemaakt met behulp van 'ruimtelijke ankers'. Als u ankers gebruikt om die inhoud 'wereldwijd vergrendeld' te maken, betekent dit dat wat u bekijkt, niet visueel van de fysieke objecten in de buurt verdwijnt, zelfs als u navigeert of het onderliggende ruimtelijke toewijzingssysteem het 3D-model van uw ruimte bijwerken.
Ten tweede is die holografische inhoud visueel beperkt tot een zeer specifieke ruimte, zodat u alleen het gat in uw werkelijkheid kunt zien. Die occlusie is nodig om te vereisen dat er een logisch gat, raam of deuropening wordt bekeken, die de truc verkoopt. Zonder iets dat het grootste deel van het uitzicht blokkeert, kan een scheur in de ruimte naar een geheime Jurassische dimensie eruitzien als een slecht geplaatste dinosaurus.
Dit is geen echte schermopname, maar een illustratie van hoe de geheime onderwereld van de MR Basics 101 eruitziet op HoloLens. De zwarte behuizing wordt niet weergegeven, maar u kunt inhoud zien via een virtueel gat. (Wanneer u door een echt apparaat kijkt, lijkt de vloer nog meer te verdwijnen omdat uw ogen zich op een verdere afstand concentreren alsof het er niet eens is.)
Holografische inhoud met wereldvergrendeling
In Unity is het toevoegen van een WorldAnchor-component zo eenvoudig als het toevoegen van een WorldAnchor-component:
myObject.AddComponent<WorldAnchor>();
Het WorldAnchor-onderdeel zal voortdurend de positie en rotatie van het GameObject (en dus iets anders onder dat object in de hiërarchie) aanpassen om het stabiel te houden ten opzichte van fysieke objecten in de buurt. Wanneer u uw inhoud maakt, maakt u deze zodanig dat de hoofdpivot van uw object is gecentreerd in dit virtuele gat. (Als het draaipunt van uw object diep in de muur zit, zijn lichte aanpassingen in positie en draaiing veel merkbaarder en ziet het gat er mogelijk niet erg stabiel uit.)
Alles behalve het virtuele gat
Er zijn verschillende manieren om het uitzicht selectief te blokkeren naar wat er in uw muren verborgen is. De eenvoudigste maakt gebruik van het feit dat HoloLens een additief beeldscherm gebruikt, wat betekent dat volledig zwarte objecten onzichtbaar worden weergegeven. U kunt dit doen in Unity zonder speciale shader- of materiaal trucs uit te voeren. U hoeft alleen een zwart materiaal te maken en toe te wijzen aan een object dat in uw inhoud wordt geplaatst. Als u geen 3D-modellering wilt uitvoeren, gebruikt u gewoon een handvol standaard Quad-objecten en overlapt u deze enigszins. Er zijn een aantal nadelen van deze benadering, maar het is de snelste manier om iets te laten werken en een concept met een lage kwaliteit te krijgen is geweldig, zelfs als u vermoedt dat u het later wilt herstructureren.
Een belangrijk nadeel van de bovenstaande 'zwarte doos'-benadering is dat het niet goed fotografeert. Hoewel uw effect er perfect uitziet door de weergave van HoloLens, tonen eventuele schermopnamen die u maakt een groot zwart object in plaats van wat er overblijft van uw muur of vloer. De reden hiervoor is dat de fysieke hardware en schermopnamen samengestelde hologrammen en realiteit anders weergeven. Laten we even een omweg maken in een nep-wiskunde...
Valse wiskundige waarschuwing! Deze getallen en formules zijn bedoeld om een punt te illustreren, niet om een soort nauwkeurige metrische waarde te zijn!
Wat u ziet via HoloLens:
( Reality * darkening_amount ) + Holograms
Wat u ziet in schermopnamen en video:
( Reality * ( 1 - hologram_alpha ) ) + Holograms * hologram_alpha
In het Engels: Wat u door HoloLens ziet, is een eenvoudige combinatie van donkere realiteit (zoals via zonnebrillen) en welke hologrammen de app wil weergeven. Maar wanneer u een schermopname maakt, wordt de afbeelding van de camera gecombineerd met de hologrammen van de app volgens de doorzichtigheidswaarde per pixel.
Een manier om dit te omzeilen is door het 'zwarte doos'-materiaal alleen te schrijven naar de dieptebuffer en te sorteren op alle andere ondoorzichtige materialen. Bekijk voor een voorbeeld hiervan het bestand WindowOcclusion.shader in de MixedRealityToolkit op GitHub. De relevante regels worden hier gekopieerd:
"RenderType" = "Opaque"
"Queue" = "Geometry"
ColorMask 0
(Let op de regel 'Offset 50, 100' is om te gaan met niet-gerelateerde problemen, dus het zou waarschijnlijk zinvol zijn om dat weg te laten.)
Door een onzichtbaar occlusiemateriaal zoals dat te implementeren, kan uw app een vak tekenen dat er correct uitziet in de weergave en in mixed reality-schermopnamen. Voor bonuspunten kunt u proberen de prestaties van dat vak nog verder te verbeteren door slimme dingen te doen om nog minder onzichtbare pixels te tekenen, maar dat kan echt in de onkruiden komen en meestal niet nodig is.
Hier is de geheime onderwereld van MR Basics 101 als Unity het tekent, met uitzondering van de buitenste delen van de occluding box. Houd er rekening mee dat de draai voor de onderwereld zich in het midden van de doos bevindt, waardoor het gat zo stabiel mogelijk blijft ten opzichte van uw werkelijke vloer.
Doe het zelf
Hebt u een HoloLens en wilt u het effect voor uzelf uitproberen? Het eenvoudigste wat u kunt doen (geen codering vereist) is om de gratis 3D Viewer-app te installeren en vervolgens het downloadbestand.fbx te laden dat ik op GitHub heb opgegeven om een bloempotmodel in uw kamer weer te geven. Laad het op HoloLens en je kunt de illusie op het werk zien. Wanneer u zich voor het model bevindt, kunt u alleen in het kleine gat zien. Alles anders is onzichtbaar. Kijk naar het model van een andere kant en verdwijnt volledig. Gebruik de besturingselementen voor beweging, draaiing en schaal van 3D Viewer om het virtuele gat te positioneren tegen een verticaal oppervlak dat u kunt bedenken om enkele ideeën te genereren.
Als u dit model bekijkt in uw Unity-editor, ziet u een grote zwarte doos rond de bloempot. Op HoloLens verdwijnt het vak, waardoor een magic window-effect wordt weergegeven.
Als u een app wilt bouwen die gebruikmaakt van deze techniek, raadpleegt u de zelfstudie MR Basics 101 in de Mixed Reality zelfstudies. Hoofdstuk 7 eindigt met een explosie in je vloer die een verborgen onderwereld onthult (zoals hierboven afgebeeld). Wie zei dat zelfstudies saai moesten zijn?
Hier volgen enkele ideeën waar u dit idee kunt volgen:
- Denk aan manieren om de inhoud in het virtuele gat interactief te maken. Als uw gebruikers enige impact hebben buiten hun muren, kan het gevoel van wonder dat deze truc kan bieden, echt verbeteren.
- Denk aan manieren om objecten terug te zien naar bekende gebieden. Hoe kun je bijvoorbeeld een holographic hole in je koffietafel zetten en je vloer eronder zien?
Over de auteur
![]() |
Eric Rehmeyer Senior Software Engineer @Microsoft |