Case study - Guardare attraverso fori nella realtà

Quando le persone pensano alla realtà mista e a cosa possono fare con Microsoft HoloLens, in genere si tengono alle domande come "Quali oggetti posso aggiungere alla mia stanza?" o "Che cosa posso livelli sulla parte superiore del mio spazio?" Vorrei evidenziare un'altra area che puoi considerare, essenzialmente un trucco magico, usando la stessa tecnologia per esaminare o attraverso oggetti fisici reali intorno a te.

La tecnologia

Se hai combattuto alieni mentre scomponevano le tue pareti in RoboRaid, sbloccava un muro sicuro in Frammenti o era abbastanza fortunato per vedere l'hangar UNSC Infinity nell'esperienza halo 5 a E3 nel 2015, poi hai visto quello che sto parlando. A seconda della tua immaginazione, questo trucco visivo può essere usato per mettere fori temporanei nel tuo muro a secco o nascondere i mondi sotto un pavimento libero.

RoboRaid aggiunge tubi tridimensionali e altre strutture dietro le pareti, visibili solo attraverso fori creati come invasori sfondare.

RoboRaid aggiunge tubi tridimensionali e altre strutture dietro le pareti, visibili solo attraverso fori creati come invasori sfondare.

Usando uno di questi ologrammi univoci in HoloLens, un'app può fornire l'illusione del contenuto dietro le pareti o attraverso il pavimento nello stesso modo in cui la realtà si presenta attraverso una finestra effettiva. Spostarsi a sinistra, e si può vedere qualsiasi cosa sia sul lato destro. Avvicinati, e puoi vedere un po' di più di tutto. La differenza principale è che i buchi reali ti consentono di attraversare, mentre il tuo pavimento non ti permetterà di salire attraverso quel contenuto olografico magico. Aggiungere un'attività al backlog.

Dietro le quinte

Questo trucco è una combinazione di due effetti. Prima di tutto, il contenuto olografico viene aggiunto al mondo usando "ancoraggi spaziali". L'uso di ancoraggi per rendere il contenuto "bloccato al mondo" significa che ciò che si sta guardando non deriva visivamente dagli oggetti fisici vicino, anche quando si sposta o il sistema di mapping spaziale sottostante aggiorna il modello 3D della stanza.

In secondo luogo, il contenuto olografico è visivamente limitato a uno spazio molto specifico, quindi puoi vedere solo attraverso il buco nella tua realtà. Questa occlusione è necessaria per richiedere la ricerca attraverso un buco logico, una finestra o una porta, che vende il trucco. Senza qualcosa che blocca la maggior parte della vista, una crepa nello spazio a una dimensione giurassa segreta potrebbe sembrare un dinosauro poco posizionato.

Questo non è uno screenshot effettivo, ma un'illustrazione del modo in cui il segreto sottoworld di MR Basics 101 sembra HoloLens. L'chassis nero non viene visualizzato, ma è possibile visualizzare il contenuto attraverso un buco virtuale. Quando si guarda un dispositivo effettivo, il pavimento sembra sparire ancora di più perché gli occhi si concentrano su una distanza ulteriore come se non fosse nemmeno lì.

Questo non è uno screenshot effettivo, ma un'illustrazione del modo in cui il sottomondo segreto di MR Basics 101 sembra HoloLens. L'chassis nero non viene visualizzato, ma è possibile visualizzare il contenuto attraverso un buco virtuale. Quando si guarda un dispositivo effettivo, il pavimento sembra sparire ancora di più perché gli occhi si concentrano su una distanza ulteriore come se non fosse nemmeno lì.

Contenuto olografico con blocco mondiale

In Unity il contenuto olografico rimane bloccato al mondo è semplice come aggiungere un componente WorldAnchor:

myObject.AddComponent<WorldAnchor>();

Il componente WorldAnchor regola costantemente la posizione e la rotazione del suo GameObject (e quindi qualsiasi altro oggetto nella gerarchia) per mantenerlo stabile rispetto agli oggetti fisici vicini. Quando si crea il contenuto, crearlo in modo tale che il pivot radice dell'oggetto sia centrato in questo buco virtuale. Se il pivot dell'oggetto è profondo nella parete, le sue lievi modifiche in posizione e rotazione saranno molto più evidenti e il foro potrebbe non sembrare molto stabile.

Occluding tutto ma il buco virtuale

Esistono diversi modi per bloccare in modo selettivo la vista a ciò che è nascosto nelle pareti. Il più semplice sfrutta il fatto che HoloLens usa una visualizzazione additiva, che significa che gli oggetti completamente neri appaiono invisibili. È possibile farlo in Unity senza fare alcun trucco speciale shader o materiale, solo creare un materiale nero e assegnarlo a un oggetto che riquadri nel contenuto. Se non ti piace eseguire la modellazione 3D, usa solo una manciata di oggetti Quad predefiniti e li sovrappone leggermente. Ci sono diversi svantaggi per questo approccio, ma è il modo più veloce per ottenere qualcosa di funzionante e ottenere una prova bassa fedeltà del concetto è grande, anche se si sospetta che si voglia refactorarlo in un secondo momento.

Uno svantaggio principale dell'approccio "black box" precedente è che non fotografa bene. Mentre l'effetto potrebbe essere perfetto attraverso la visualizzazione di HoloLens, qualsiasi screenshot che si prenderà mostrerà un grande oggetto nero anziché quello che rimane del muro o del pavimento. Il motivo è che l'hardware fisico e gli screenshot compositi ologrammi e realtà in modo diverso. Detouriamo per un momento in qualche finta matematica...

Avviso matematico falso! Questi numeri e formule sono destinati a illustrare un punto, non essere un tipo di metrica accurata!

Informazioni visualizzate tramite HoloLens:

( Reality * darkening_amount ) + Holograms

Cosa vedi in screenshot e video:

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

In inglese: cosa vedi attraverso HoloLens è una semplice combinazione di realtà oscurata (come attraverso occhiali da sole) e qualsiasi ologramma che l'app vuole mostrare. Ma quando si prende uno screenshot, l'immagine della fotocamera viene combinata con gli ologrammi dell'app in base al valore di trasparenza per pixel.

Un modo per aggirare questa operazione consiste nel modificare il materiale "black box" in modo da scrivere solo nel buffer di profondità e ordinare con tutti gli altri materiali opachi. Per un esempio di questo, vedere il file WindowOcclusion.shader nel MixedRealityToolkit in GitHub. Le righe pertinenti vengono copiate qui:

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

Si noti che la riga "Offset 50, 100" consiste nell'affrontare problemi non correlati, quindi probabilmente sarebbe consigliabile uscire da tale riga.

Implementazione di un materiale di occlusione invisibile come questo consente all'app di disegnare una casella che sembra corretta nella visualizzazione e negli screenshot di realtà mista. Per i punti bonus, puoi provare a migliorare le prestazioni di quella scatola ancora più avanti facendo cose intelligenti per disegnare ancora meno pixel invisibili, ma che possono davvero entrare nelle weed e in genere non sarà necessario.

Ecco il segreto sottoworld di MR Basics 101 come Unity lo disegna, ad eccezione delle parti esterne della scatola di occluding. Si noti che il pivot per il sottomondo è al centro della scatola, che aiuta a mantenere il foro il più stabile possibile rispetto al piano effettivo.

Ecco il segreto sottoworld di MR Basics 101 come Unity lo disegna, ad eccezione delle parti esterne della scatola di occluding. Si noti che il pivot per il sottomondo è al centro della scatola, che aiuta a mantenere il foro il più stabile possibile rispetto al piano effettivo.

Provare

Hai un HoloLens e vuoi provare l'effetto per te? La cosa più semplice che è possibile eseguire (nessuna codifica necessaria) consiste nell'installare l'app 3D Viewer gratuita e quindi caricare il download del file .fbx fornito in GitHub per visualizzare un modello di vaso a fiori nella tua stanza. Caricarlo su HoloLens e puoi vedere l'illusione sul lavoro. Quando si è davanti al modello, è possibile vedere solo nel piccolo buco, tutto il resto è invisibile. Guarda il modello da qualsiasi altro lato e scompare completamente. Usare i controlli di movimento, rotazione e scala del visualizzatore 3D per posizionare il buco virtuale su qualsiasi superficie verticale che si può pensare di generare alcune idee!

La visualizzazione di questo modello nell'editor di Unity mostrerà una grande scatola nera intorno al fiore. In HoloLens la scatola scompare, dando modo a un effetto della finestra magica.

La visualizzazione di questo modello nell'editor di Unity mostrerà una grande scatola nera intorno al fiore. In HoloLens la scatola scompare, dando modo a un effetto della finestra magica.

Per creare un'app che usa questa tecnica, vedere l'esercitazione di MR Basics 101 nelle esercitazioni di Realtà mista. Il capitolo 7 termina con un'esplosione nel pavimento che rivela un mondo nascosto (come illustrato sopra). Chi ha detto che le esercitazioni devono essere noiose?

Ecco alcune idee di dove è possibile prendere questa idea successiva:

  • Pensa a modi per rendere interattivo il contenuto all'interno del buco virtuale. Lasciare che gli utenti abbiano un impatto oltre le loro pareti possono davvero migliorare il senso di meraviglia che questo trucco può fornire.
  • Pensa a modi per visualizzare gli oggetti in aree note. Ad esempio, come si può mettere un buco olografico nel tavolo del caffè e vedere il pavimento sotto di esso?

Informazioni sull'autore

Immagine di Eric Rehmeyer Eric Rehmeyer
Senior Software Engineer @Microsoft

Vedi anche