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 adds three-dimensional pipes and other structure behind your walls, visible only through holes created as the invaders break through.

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 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 znajduje się po prawej stronie. Bliżej i 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ć przeglądania logicznej dziury, okna 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.

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.)

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 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 wyświetlaczu HoloLens, wszystkie zrzuty ekranu, które zrobisz, pokażą duży czarny obiekt zamiast tego, co pozostaje w ś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 zobaczysz za pośrednictwem 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 HoloLens, jest prostą kombinacją zaciemnionej rzeczywistości (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 MixedRealityToolkit w 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.

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.

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 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 dostarczonego na GitHub, aby wyświetlić model garnka kwiatów w pokoju. Załaduj go na 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!

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.

Wyświetlenie tego modelu w edytorze aparatu Unity spowoduje wyświetlenie dużego czarnego pudełka wokół doniczki. Na HoloLens pole znika, dając drogę do magicznego efektu 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). KtoTo powiedział 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

Picture of Eric Rehmeyer Eric Rehmeyer
Starszy inżynier oprogramowania @Microsoft

Zobacz też