Když nosíte náhlavní soupravu hybridní reality, stane se středem vašeho holografického světa. Komponenta Unity Camera bude automaticky zpracovávat stereoskopické vykreslování a sledovat pohyb a otáčení hlavy. Pokud ale chcete plně optimalizovat vizuální kvalitu a stabilitu hologramu, měli byste nastavit nastavení kamery popsané níže.
HoloLens vs. imerzivní náhlavní soupravy VR
Výchozí nastavení komponenty Unity Camera jsou určená pro tradiční 3D aplikace, které potřebují pozadí podobné skyboxu, protože nemají skutečný svět.
Při spouštění na imerzivní náhlavní soupravě vykreslujete všechno, co uživatel vidí, a proto budete pravděpodobně chtít skybox zachovat.
Když ale běží na holografické náhlavní soupravě , jako je HoloLens, skutečný svět by se měl objevit za vším, co fotoaparát vykresluje. Nastavte pozadí fotoaparátu tak, aby bylo průhledné (v HoloLens, černé vykreslení jako průhledné) místo textury Skyboxu:
Výběr hlavní kamery na panelu Hierarchie
Na panelu inspektoru najděte komponentu Kamera a změňte rozevírací seznam Vymazat příznaky z Skyboxu na Plnou barvu.
Vyberte výběr barvy pozadí a změňte hodnoty RGBA na (0, 0, 0, 0)
Pokud tuto možnost nastavíte z kódu, můžete použít Unity. Color.clear
Kód skriptu můžete použít k určení, jestli je náhlavní souprava za běhu imerzivní nebo holografická, kontrolou displayOpaque na aktivně spuštěném XRDisplaySubsystem.
Obor názvů:UnityEngine.XR.WSA Typ:HolographicSettings
Kód skriptu můžete použít k určení, jestli je náhlavní souprava za běhu imerzivní nebo holografická, a to tak, že zkontrolujete HolographicSettings.IsDisplayOpaque.
Nastavení kamery
Bez ohledu na to, jaké zkušenosti vyvíjíte, je hlavní kamera vždy primární stereo vykreslovací komponentou připojenou k displeji připojenému k hlavnímu displeji vašeho zařízení. Pokud si představte počáteční pozici uživatele jako (X: 0, Y: 0, Z: 0, Z: 0, Z: 0, Z: 0, bude jednodušší. Vzhledem k tomu, že hlavní kamera sleduje pohyb hlavy uživatele, může být počáteční pozice uživatele nastavena nastavením počáteční pozice hlavní kamery.
Centrální volbou, kterou musíte udělat, je to, jestli vyvíjíte pro HoloLens nebo imerzivní náhlavní soupravy VR. Jakmile to získáte, přeskočte na oddíl nastavení, který se použije.
Nastavení kamery HoloLens
U aplikací HoloLens musíte použít kotvy pro všechny objekty, které chcete zamknout do prostředí scény. K maximalizaci stability a vytváření ukotvení ve více místnostech doporučujeme použít nevázaný prostor.
Podle tohoto podrobného kurzu přidáte a automaticky nakonfigurujete sadu nástrojů Mixed Reality v projektu Unity. Je také možné pracovat přímo se třídou MixedRealityPlayspace z MRTK pro Unity a nastavit cílové škálování na svět:
MRTK by měl zvládnout pozici playspace a kamery automaticky, ale je dobré pečlivě zkontrolovat:
Na panelu Hierarchie rozbalte objekt MixedRealityPlayspace GameObject a vyhledejte podřízený objekt hlavní kamery.
Na panelu inspektoru najděte součást Transformace a změňte pozici na (X: 0, Y: 0, Z: 0)
xrInputSubsystem.TrySetTrackingOriginMode(TrackingOriginModeFlags.Device);
xrInputSubsystem.TrySetTrackingOriginMode(TrackingOriginModeFlags.Unbounded); // Recommendation for OpenXR
ArSession můžete použít pro aplikace HoloLens, které fungují lépe s kotvami a ARKit/ARCore.
Důležité
Relace rozšířené reality a související funkce vyžadují instalaci AR Foundation.
Změny fotoaparátu je také možné použít ručně bez použití arsession:
Výběr hlavní kamery na panelu Hierarchie
Na panelu inspektoru najděte součást Transformace a změňte pozici na (X: 0, Y: 0, Z: 0)
Kamera v podokně inspektoru v Unity
Přidání trackedPoseDriveru do hlavní kamery
Výběr hlavní kamery na panelu Hierarchie
Na panelu inspektoru najděte součást Transformace a změňte pozici na (X: 0, Y: 0, Z: 0)
Kamera v podokně inspektoru v Unity
Přejděte do části Další nastavení v nastavení přehrávače Windows Store.
Jako zařízení zvolte Windows Mixed Reality , která může být uvedená jako Windows Holographic ve starších verzích Unity.
Vyberte podporovanou virtuální realitu.
Vzhledem k tomu, že objekt hlavní kamery je automaticky označen jako fotoaparát, Unity pohání veškerý pohyb a překlad.
Poznámka:
Tato nastavení je potřeba použít na kameru v každé scéně aplikace.
Když ve výchozím nastavení vytvoříte novou scénu v Unity, bude obsahovat objekt Main Camera GameObject v hierarchii, který obsahuje komponentu Kamera, ale nemusí mít správně použitá nastavení.
Nastavení kamery VR
Windows Mixed Reality podporuje aplikace napříč širokou škálou prostředí, od aplikací jen pro orientaci a sesazených aplikací směrem nahoru prostřednictvím aplikací na úrovni místnosti. Na HoloLensu můžete pokračovat a vytvářet aplikace ve velkém měřítku, které uživatelům umožňují chodit po 5 metrech a zkoumat celé patro budovy a dál.
Prvním krokem při vytváření prostředí hybridní reality v Unity je určení, na které prostředí bude vaše aplikace cílit:
Přejděte do části Další nastavení v nastavení přehrávače Windows Store.
Jako zařízení zvolte Windows Mixed Reality , která může být uvedená jako Windows Holographic ve starších verzích Unity.
Vyberte podporovanou virtuální realitu.
Vzhledem k tomu, že objekt hlavní kamery je automaticky označen jako fotoaparát, Unity pohání veškerý pohyb a překlad.
Poznámka:
Tato nastavení je potřeba použít na kameru v každé scéně aplikace.
Když ve výchozím nastavení vytvoříte novou scénu v Unity, bude obsahovat Objekt GameObject hlavní kamery v hierarchii, který obsahuje komponentu Kamera, ale nemá níže uvedená nastavení správně použitá.
Obor názvů:UnityEngine.XR Typ:XRDevice
Pokud chcete mít zkušenosti s trvalým nebo prostorovým měřítkem, budete muset umístit obsah vzhledem k podlaze. Důvodem je prostorová fáze uživatele, která představuje definovaný původ na úrovni podlahy uživatele a volitelnou hranici místnosti nastavenou při prvním spuštění.
Pokud chcete zajistit, aby Unity fungovala se svým světovým souřadnicovým systémem na úrovni podlahy, můžete nastavit a otestovat, že Unity používá typ prostoru sledování RoomScale:
if (XRDevice.SetTrackingSpaceType(TrackingSpaceType.RoomScale))
{
// RoomScale mode was set successfully. App can now assume that y=0 in Unity world coordinate represents the floor.
}
else
{
// RoomScale mode was not set successfully. App cannot make assumptions about where the floor plane is.
}
Pokud SetTrackingSpaceType vrátí hodnotu true, Unity úspěšně přepnula svůj světový souřadnicový systém ke sledování rámce fáze odkazu.
Pokud SetTrackingSpaceType vrátí hodnotu false, Unity nemohla přepnout na rámeček fáze odkazu, pravděpodobně proto, že uživatel ve svém prostředí nenastavil podlahu. I když nepravdivá návratová hodnota není běžná, může k tomu dojít v případě, že je fáze nastavená v jiné místnosti a zařízení se přesune do aktuální místnosti bez nastavení nové fáze.
Jakmile aplikace úspěšně nastaví typ prostoru sledování RoomScale, zobrazí se obsah umístěný na rovině y=0 na podlaze. Původ na 0, 0, 0 bude specifické místo na podlaze, kde uživatel stál během nastavování místnosti, a -Z představující směr dopředu, ke kterému došlo během nastavení.
Přejděte do části Další nastavení v nastavení přehrávače Windows Store.
Jako zařízení zvolte Windows Mixed Reality , která může být uvedená jako Windows Holographic ve starších verzích Unity.
Vyberte podporovanou virtuální realitu.
Vzhledem k tomu, že objekt hlavní kamery je automaticky označen jako fotoaparát, Unity pohání veškerý pohyb a překlad.
Poznámka:
Tato nastavení je potřeba použít na kameru v každé scéně aplikace.
Když ve výchozím nastavení vytvoříte novou scénu v Unity, bude obsahovat Objekt GameObject hlavní kamery v hierarchii, který obsahuje komponentu Kamera, ale nemá níže uvedená nastavení správně použitá.
Obor názvů:UnityEngine.XR Typ:XRDevice
Chcete-li vytvořit prostředí pouze pro orientaci nebo sesaděné měřítko, je nutné nastavit Unity na typ prostoru pro sledování statického sledování. Statický sledovací prostor nastavuje světovou souřadnicovou soustavu Unity pro sledování statického rámce odkazu. V režimu statického sledování se obsah umístěný v editoru přímo před výchozím umístěním kamery (vpřed je -Z) zobrazí před uživatelem při spuštění aplikace.
Pro čistě orientaci pouze zážitek , jako je 360stupňový video viewer (kde by poziční hlava aktualizace by zničila iluzi), můžete pak nastavit XR. InputTracking.disablePositionalTracking na true:
InputTracking.disablePositionalTracking = true;
V případě prostředí sesaděného prostředí můžete později nechat uživatele, aby se později vysadí sedělí původ, můžete volat XR. Metoda InputTracking.Recenter :
Pokud používáte MRTK, pozadí kamery se automaticky nakonfiguruje a spravuje. Pro projekty XR SDK nebo starší verze WSA doporučujeme nastavit pozadí kamery na plnou černou barvu na HoloLens a zachovat skybox pro VR.
Použití více fotoaparátů
Pokud je ve scéně více komponent fotoaparátu, Unity ví, kterou kameru použít pro stereoskopické vykreslování na základě toho, který GameObject má značku MainCamera. Ve starší verzi XR používá tato značka také k synchronizaci sledování hlavy. V sadě XR SDK je sledování hlavy řízeno skriptem TrackedPoseDriver připojeným ke kameře.
Vyrovnávací paměti hloubky sdílení
Sdílení hloubkové vyrovnávací paměti vaší aplikace s Windows každý rámec poskytne vaší aplikaci jednu ze dvou zvýšení stability hologramu na základě typu náhlavní soupravy, pro kterou vykreslujete:
Imerzivní náhlavní soupravy VR se můžou postarat o poziční přeprojektování, když je k dispozici vyrovnávací paměť hloubky, a upravit hologramy pro chybné diktování v poloze i orientaci.
Náhlavní soupravy HoloLens mají několik různých metod. HoloLens 1 automaticky vybere fokus , když je k dispozici vyrovnávací paměť hloubky, optimalizuje stabilitu hologramu podél roviny, která protíná nejvíce obsahu. HoloLens 2 stabilizuje obsah pomocí hloubky LSR (viz poznámky).
Konfigurační dialog MRTK se pokusí nastavit nastavení hloubkové vyrovnávací paměti pro sadu SDK XR i starší verzi WSA, ale je dobré zkontrolovat tyto karty a ověřit nastavení v Unity.
Nastavení, jestli bude aplikace Unity poskytovat hloubkovou vyrovnávací paměť pro Windows:
Přejděte na Upravit>nastavení projektu>XR – Správa modulů plug-in a ujistěte se, že je položka nabídky rozbalená.
Klikněte na položku nabídky odpovídající modulu runtime XR, který jste zvolili, buď Windows Mixed Reality, nebo OpenXR. Kromě toho se ujistěte, že je vybraná správná platforma sestavení, protože jsou k dispozici karty pro samostatnou platformu Windows i pro Univerzální platforma Windows.
Povolení a konfigurace:
V případě OpenXR vyberte v rozevíracím seznamu Režim odeslání hloubky formát hloubky nebo Žádný.
Ve Windows Mixed Reality zaškrtněte nebo zrušte zaškrtnutí políčka Vyrovnávací paměť sdílené hloubky . Potom v rozevíracím seznamu Formát vyrovnávací paměti hloubky vyberte formát.
Poznámka:
Obecně se doporučuje použít 16bitové vyrovnávací paměti pro zvýšení výkonu. Pokud však používáte 16bitový formát hloubky, požadované efekty vyrovnávací paměti vzorníku (například některé panely posouvání uživatelského rozhraní Unity) nebudou fungovat, protože Unity v tomto nastavení nevytvoří vyrovnávací paměť vzorníku. Výběr 24bitového formátu hloubky naopak obecně vytvoří 8bitovou vyrovnávací paměť vzorníku, pokud je k dispozici na grafické platformě koncového bodu.
Nastavení, jestli bude aplikace Unity poskytovat hloubkovou vyrovnávací paměť pro Windows:
Přejděte na Upravit>přehrávač> nastavení>projektu Univerzální platforma Windows kartu>Nastavení XR.
Rozbalte položku sady Windows Mixed Reality SDK.
Zaškrtněte políčko Povolit sdílení vyrovnávací paměti hloubky nebo jeho zaškrtnutí zrušte. Povolit sdílení vyrovnávací paměti hloubky je ve výchozím nastavení zaškrtnuté v nových projektech, ale ve starších projektech je ve výchozím nastavení nezaškrtnuté.
Vyrovnávací paměť hloubky může zlepšit kvalitu vizuálu, pokud windows dokáže přesně mapovat normalizované hodnoty hloubky na pixely v hloubkové vyrovnávací paměti zpět na vzdálenosti v metrech pomocí blízkých a vzdálených rovin, které jste nastavili v Unity na hlavním fotoaparátu. Pokud vykreslení předává hodnoty hloubky zpracování obvyklými způsoby, měli byste být zde obecně v pořádku, i když průsvitné vykreslení předává tento zápis do hloubkové vyrovnávací paměti při zobrazení do existujících barevných pixelů může zmást přeprojektování. Pokud víte, že průchody vykreslování opustí mnoho pixelů konečné hloubky s nepřesnými hodnotami hloubky, pravděpodobně získáte lepší vizuální kvalitu zrušením zaškrtnutí políčka Povolit sdílení vyrovnávací paměti hloubky.
Poznámka:
Obecně se doporučuje použít 16bitové vyrovnávací paměti pro zvýšení výkonu. Pokud však používáte 16bitový formát hloubky, požadované efekty vyrovnávací paměti vzorníku (například některé panely posouvání uživatelského rozhraní Unity) nebudou fungovat, protože Unity v tomto nastavení nevytvoří vyrovnávací paměť vzorníku. Výběr 24bitového formátu hloubky naopak obecně vytvoří 8bitovou vyrovnávací paměť vzorníku, pokud je k dispozici na grafické platformě koncového bodu.
Použití rovin výřezů
Vykreslování obsahu příliš blízko uživatele může být v hybridní realitě nepříjemné. Na komponentě Kamera můžete upravit roviny blízkého a vzdáleného klipu.
Výběr hlavní kamery na panelu Hierarchie
Na panelu Inspektor najděte komponentu Kamera Výřez roviny a změňte textové pole Near z 0.3 na 0.85. Obsah vykreslený ještě blíž může vést k nepříjemnému chování uživatele a měl by se vyhnout pokynům pro vykreslení vzdálenosti.
MRTK poskytuje systém teleportu v balení, který automaticky funguje napříč kloubovými rukama a ovladači.
Doporučujeme použít implementaci teleportace MRTK.
Pokud se rozhodnete použít MRTK, Unity poskytuje teleportační implementaci v sadě nástrojů XR Interaction Toolkit.
Pokud se rozhodnete implementovat vlastní, je dobré mít na paměti, že fotoaparát nemůžete přesunout přímo. Vzhledem k tomu, že unity řídí kameru pro sledování hlavy, budete muset dát kameře nadřazenou v hierarchii a přesunout objekt GameObject. Toto je ekvivalent playspace MRTK.
Doporučujeme použít implementaci teleportace MRTK.
Pokud se rozhodnete implementovat vlastní, je dobré mít na paměti, že fotoaparát nemůžete přesunout přímo. Vzhledem k tomu, že unity řídí kameru pro sledování hlavy, budete muset dát kameře nadřazenou v hierarchii a přesunout objekt GameObject. Toto je ekvivalent playspace MRTK.
Režimy opětovného projektu
HoloLens i i imerzivní náhlavní soupravy přeprojektují jednotlivé snímky, které aplikace vykresluje, aby se při vygenerování fotonů upravily tak, aby se při vygenerování fotek zobrazovaly nesprávné diktování skutečné pozice hlavy uživatele.
Standardně:
Imerzivní náhlavní soupravy VR se postarají o poziční reprojektování, pokud aplikace poskytuje hloubkovou vyrovnávací paměť pro daný rámec. Imerzivní náhlavní soupravy také upraví hologramy pro chybné diktování v poloze i orientaci. Pokud není k dispozici hloubková vyrovnávací paměť, systém opraví pouze nesprávné předpoklady v orientaci.
Holografické náhlavní soupravy , jako je HoloLens 2, se postará o poziční reprojektování bez ohledu na to, jestli aplikace poskytuje hloubkovou vyrovnávací paměť nebo ne. Poziční reprojektování je možné bez vyrovnávacích pamětí hloubky na HoloLensu, protože vykreslování je často zhuštěné se stabilním pozadím poskytovaným skutečným světem.
Pokud například vytváříte prostředí jen pro orientaci s pevně uzamčeným obsahem těla (například 360stupňový videoobsáh), můžete režim opětovného projektu explicitně nastavit na orientaci pouze nastavením na ReprojectionMode.OrientationOnly.
Pokud například vytváříte prostředí jen pro orientaci s pevně uzamčeným obsahem těla (například 360stupňovým videoobsáhem), můžete explicitně nastavit režim přeprojektování na orientaci pouze nastavením na HolographicReprojectionMode.OrientationOnly.
Kontrolní bod dalšího vývoje
Pokud sledujete cestu vývoje Unity, kterou jsme vytvořili, jste uprostřed zkoumání základních stavebních bloků MRTK. Odtud můžete pokračovat k dalšímu stavebnímu bloku: