Analiza przypadku — przeglądanie dziur w rzeczywistości

Kiedy ludzie myślą o rzeczywistości mieszanej i co mogą zrobić z Microsoft HoloLens, zwykle trzymają się pytań takich jak "Jakie obiekty mogę dodać do mojego pokoju?" lub "Co mogę warstwować na mojej przestrzeni?" Chciałbym podkreślić inny obszar, który można rozważyć — zasadniczo magiczną sztuczkę — przy użyciu tej samej technologii, aby przyjrzeć się lub przez prawdziwe obiekty fizyczne wokół ciebie.

Technologia

Jeśli walczysz z obcymi, gdy przebiją się przez ściany w RoboRaid, odblokowano ścianę bezpieczną w Fragmentach lub mieli szczęście zobaczyć hangar UNSC Infinity w doświadczenie Halo 5 w E3 w 2015 roku, to widziałeś, o czym mówię. W zależności od wyobraźni ta sztuczka wizualna może służyć do umieszczania tymczasowych otworów w suchej ścianie lub ukrywania światów pod luźną deską podłogową.

RoboRaid dodaje trójwymiarowe rury i inną strukturę za ścianami, widoczne tylko przez otwory utworzone, gdy najeźdźcy przebiją się.

RoboRaid dodaje trójwymiarowe rury i inną strukturę za ścianami, widoczne tylko przez otwory utworzone, gdy najeźdźcy przebiją się.

Korzystając z jednego z tych unikatowych hologramów na urządzeniu HoloLens, aplikacja może zapewnić iluzję zawartości za ścianami lub przez podłogę w taki sam sposób, jak rzeczywistość przedstawia się przez rzeczywiste okno. Przenieś się w lewo i możesz zobaczyć, co jest po prawej stronie. Bliżej, a zobaczysz nieco więcej wszystkiego. Główną różnicą jest to, że prawdziwe dziury pozwalają ci przez, podczas gdy podłoga uparcie nie pozwoli wspiąć się do tej magicznej zawartości holograficznej. (Dodasz zadanie do listy prac).

Za kulisami

Ta sztuczka jest połączeniem dwóch efektów. Po pierwsze, zawartość holograficzna jest przypięta do świata przy użyciu "kotwic przestrzennych". Użycie kotwic w celu zakotwiczenia tej zawartości "zablokowanej na świecie" oznacza, że to, co patrzysz, nie odchodzi wizualnie od obiektów fizycznych w pobliżu, nawet w miarę przenoszenia lub bazowego systemu mapowania przestrzennego aktualizuje model 3D pokoju.

Po drugie, ta zawartość holograficzna jest wizualnie ograniczona do bardzo konkretnej przestrzeni, więc można zobaczyć tylko przez dziurę w rzeczywistości. To okluzji jest konieczne, aby wymagać spojrzenia przez logiczną dziurę, okno lub drzwi, która sprzedaje sztuczkę. Bez czegoś blokującego większość widoku, pęknięcie w przestrzeni do tajnego wymiaru jurajskiego może po prostu wyglądać jak słabo umieszczony dinozaur.

To nie jest rzeczywisty zrzut ekranu, ale ilustracja tego, jak tajny underworld z MR Basics 101 wygląda na HoloLens. Czarna obudowa nie jest wyświetlana, ale można zobaczyć zawartość za pośrednictwem wirtualnej dziury. (Patrząc przez rzeczywiste urządzenie, podłoga wydaje się zniknąć jeszcze bardziej, ponieważ oczy koncentrują się na dalszej odległości, jakby nie było nawet tam.

To nie jest rzeczywisty zrzut ekranu, ale ilustracja tego, jak tajny underworld z MR Basics 101 wygląda na HoloLens. Czarna obudowa nie jest wyświetlana, ale można zobaczyć zawartość za pośrednictwem wirtualnej dziury. (Patrząc przez rzeczywiste urządzenie, podłoga wydaje się zniknąć jeszcze bardziej, ponieważ oczy koncentrują się na dalszej odległości, jakby nie było nawet tam.

Światowe blokowanie zawartości holograficznej

W środowisku Unity, co powoduje, że zawartość holograficzna pozostaje zablokowana na świecie, jest tak prosta, jak dodanie składnika WorldAnchor:

myObject.AddComponent<WorldAnchor>();

Składnik WorldAnchor będzie stale dostosowywać położenie i rotację obiektu GameObject (a tym samym wszystkie inne obiekty w hierarchii), aby zachować stabilność względem pobliskich obiektów fizycznych. Podczas tworzenia zawartości utwórz ją w taki sposób, aby główny element przestawny obiektu był wyśrodkowany na tej wirtualnej dziurze. (Jeśli element przestawny obiektu znajduje się głęboko w ścianie, jego niewielkie poprawki w pozycji i rotacji będą znacznie bardziej zauważalne, a dziura może nie wyglądać bardzo stabilnie.

Okluding wszystko, ale wirtualna dziura

Istnieje wiele sposobów selektywnego blokowania widoku do tego, co jest ukryte w ścianach. Najprostszym z nich jest fakt, że urządzenie HoloLens używa wyświetlacza addytywnego, co oznacza, że w pełni czarne obiekty wydają się niewidoczne. Możesz to zrobić w środowisku Unity bez wykonywania specjalnych sztuczek cieniowania lub materiału — wystarczy utworzyć czarny materiał i przypisać go do obiektu, który pola w zawartości. Jeśli nie czujesz się jak w przypadku modelowania 3D, po prostu użyj kilku domyślnych obiektów Quad i nakładaj się na nie nieznacznie. Istnieje wiele wad tego podejścia, ale jest to najszybszy sposób, aby coś pracować, a uzyskanie niskiego poziomu wierności weryfikacji koncepcji działa świetnie, nawet jeśli podejrzewasz, że możesz chcieć go refaktoryzować później.

Jedną z głównych wad powyższego podejścia "czarnej skrzynki" jest to, że nie fotografuje dobrze. Chociaż efekt może wyglądać idealnie na ekranie urządzenia HoloLens, wszystkie zrzuty ekranu, które zrobisz, pokażą duży czarny obiekt zamiast tego, co pozostaje na ścianie lub podłodze. Przyczyną tego jest to, że sprzęt fizyczny i zrzuty ekranu złożone hologramy i rzeczywistość inaczej. Objadźmy chwilę w trochę fałszywej matematyki...

Fałszywy alert matematyczny! Te liczby i formuły mają na celu zilustrowanie punktu, a nie dokładnej metryki!

Co widzisz za pośrednictwem urządzenia HoloLens:

( Reality * darkening_amount ) + Holograms

Co widać na zrzutach ekranu i filmie wideo:

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

W języku angielskim: To, co widzisz za pośrednictwem urządzenia HoloLens, to proste połączenie rzeczywistości zaciemnionej (na przykład za pomocą okularów przeciwsłonecznych) i niezależnie od hologramów, które aplikacja chce pokazać. Ale po utworzeniu zrzutu ekranu obraz aparatu jest w połączeniu z hologramami aplikacji zgodnie z wartością przezroczystości na piksel.

Jednym ze sposobów poruszania się po tym jest zmiana materiału "czarnej skrzynki", aby zapisać tylko w buforze głębokości i posortować ze wszystkimi innymi nieprzezroczystymi materiałami. W tym przykładzie zapoznaj się z plikiem WindowOcclusion.shader w zestawie narzędzi MixedRealityToolkit w witrynie GitHub. Odpowiednie wiersze są kopiowane tutaj:

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

(Zwróć uwagę, że wiersz "Przesunięcie 50, 100" polega na radzeniu sobie z niepowiązanymi problemami, więc prawdopodobnie warto pominąć ten problem).

Zaimplementowanie niewidocznego materiału okluzji w taki sposób pozwoli aplikacji narysować pole, które wygląda poprawnie na ekranie i na zrzutach ekranu rzeczywistości mieszanej. W przypadku punktów dodatkowych możesz spróbować poprawić wydajność tego pola jeszcze dalej, robiąc sprytne rzeczy, aby wyciągnąć jeszcze mniej niewidocznych pikseli, ale to naprawdę może dostać się do chwastów i zwykle nie będzie konieczne.

Oto tajny underworld z MR Basics 101, jak unity rysuje go, z wyjątkiem zewnętrznych części pola okluding. Należy pamiętać, że element przestawny dla underworld znajduje się w środku pudełka, co pomaga utrzymać dziurę tak stabilną, jak to możliwe w stosunku do rzeczywistej podłogi.

Oto tajny underworld z MR Basics 101 , jak unity rysuje go, z wyjątkiem zewnętrznych części pola okluding. Należy pamiętać, że element przestawny dla underworld znajduje się w środku pudełka, co pomaga utrzymać dziurę tak stabilną, jak to możliwe w stosunku do rzeczywistej podłogi.

Zrób to samodzielnie

Masz urządzenie HoloLens i chcesz wypróbować efekt dla siebie? Najprostszą rzeczą, jaką można zrobić (bez wymaganego kodowania) jest zainstalowanie bezpłatnej aplikacji 3D Viewer, a następnie załadowanie pliku fbx udostępnionego w witrynie GitHub w celu wyświetlenia modelu puli kwiatów w twoim pokoju. Załaduj go na urządzeniu HoloLens i możesz zobaczyć iluzję w pracy. Gdy jesteś przed modelem, możesz zobaczyć tylko mały otwór — wszystko inne jest niewidoczne. Spójrz na model z każdej innej strony i znika całkowicie. Użyj kontrolek ruchu, rotacji i skalowania podglądu 3D, aby ustawić wirtualny otwór na dowolną pionową powierzchnię, o której można pomyśleć, aby wygenerować kilka pomysłów!

Wyświetlenie tego modelu w edytorze aparatu Unity spowoduje wyświetlenie dużego czarnego pudełka wokół doniczki. Na holoLens pole znika, dając sposób na magiczny efekt okna.

Wyświetlenie tego modelu w edytorze aparatu Unity spowoduje wyświetlenie dużego czarnego pudełka wokół doniczki. Na holoLens pole znika, dając sposób na magiczny efekt okna.

Jeśli chcesz utworzyć aplikację korzystającą z tej techniki, zapoznaj się z samouczkiem MR Basics 101 w samouczkach Mixed Reality. Rozdział 7 kończy się eksplozją na podłodze, która ujawnia ukryty podświat (jak pokazano powyżej). Kto powiedział, że samouczki musiały być nudne?

Oto kilka pomysłów, w których możesz podjąć ten pomysł dalej:

  • Pomyśl o sposobach interaktywnego tworzenia zawartości wewnątrz wirtualnej dziury. Umożliwienie użytkownikom pewnego wpływu poza ich ściany może naprawdę poprawić poczucie cudu, że ta sztuczka może zapewnić.
  • Pomyśl o sposobach przeglądania obiektów z powrotem do znanych obszarów. Jak na przykład umieścić holografię w stole do kawy i zobaczyć podłogę pod nią?

Informacje o autorze

Zdjęcie Erica Rehmeyera Eric Rehmeyer
Starszy inżynier oprogramowania @Microsoft

Zobacz też