Přehled holografického vykreslování
Holografické vykreslování umožňuje vaší aplikaci nakreslit hologram v přesném umístění ve světě kolem uživatele, ať už je přesně umístěný ve fyzickém světě nebo ve virtuální realitě, kterou jste vytvořili. Hologramy jsou objekty vytvořené ze zvuku a světla. Vykreslování umožňuje aplikaci přidat světlo.
Podpora zařízení
Funkce | HoloLens (první generace) | HoloLens 2 | Imerzivní náhlavní soupravy |
Vykreslování | ✔️ | ✔️ | ✔️ |
Holografické vykreslování
Klíčem k holografickému vykreslování je znalost používaného typu zařízení. Zařízení s průchozími displeji, jako je HoloLens, přidají světu světlo. Černé pixely jsou zcela průhledné, zatímco jasnější pixely jsou stále neprůhlednější. Vzhledem k tomu, že světlo z obrazovek je přidáno do světla z reálného světa, jsou bílé pixely průsvitné.
I když stereoskopické vykreslování poskytuje jedno hloubkové upozornění pro hologramy, přidání zemňujících efektů může uživatelům usnadnit přehled o tom, v jaké blízkosti se hologram nachází. Jednou z metod uzemnění je přidání záře kolem hologramu na okolním povrchu a vykreslení stínu proti této záři. Tímto způsobem se zdá, že stín odečítá světlo od prostředí. Prostorový zvuk je další důležitou hloubkovou pomůckou, která uživatelům umožňuje uvažovat o vzdálenosti a relativním umístění hologramu.
Zařízení s neprůhlhlými displeji, jako jsou Windows Mixed Reality imerzivní náhlavní soupravy, blokují svět. Černé pixely jsou plné černé a jakákoli jiná barva se uživateli zobrazí jako tato barva. Vaše aplikace zodpovídá za vykreslení všeho, co uživatel uvidí. Díky tomu je ještě důležitější udržovat konstantní obnovovací frekvenci, aby uživatelé měli pohodlné prostředí.
Predikované parametry vykreslování
Náhlavní soupravy pro hybridní realitu (holoLens i imerzivní náhlavní soupravy) neustále sledují polohu a orientaci hlavy uživatele vzhledem k jeho okolí. Když vaše aplikace začne připravovat další rámec, systém předpovídá, kde bude hlava uživatele v budoucnosti v okamžiku, kdy se rámeček zobrazí na displejích. Na základě této předpovědi systém vypočítá zobrazení a projekce se transformuje, aby se použila pro daný rámec. Aplikace musí tyto transformace použít k vytvoření správných výsledků. Pokud se transformace poskytované systémem nepoužívají, výsledný obrázek nebude odpovídat skutečnému světu, což vede k nepohodlí uživatelů.
Poznámka
Aby systém přesně předpověděl, kdy se nový rámec dostane k displejům, neustále měří efektivní koncovou latenci vykreslovacího kanálu vaší aplikace. I když se systém přizpůsobuje délce vykreslovacího kanálu, můžete zlepšit stabilitu hologramů tím, že kanál bude co nejkratší.
Aplikace, které používají pokročilé techniky k rozšíření predikce systému, mohou přepsat systémové zobrazení a transformace projekce. Tyto aplikace musí stále používat transformace poskytované systémem jako základ pro své vlastní transformace, aby bylo možné dosáhnout smysluplných výsledků.
Další parametry vykreslování
Při vykreslování rámce systém určuje zobrazení zpětné vyrovnávací paměti, do kterého by měla aplikace kreslit. Toto zobrazení je často menší než plná velikost vyrovnávací paměti rámce. Bez ohledu na velikost oblasti zobrazení systém po vykreslení rámečku aplikací obrázek zvětšuje, aby vyplnil celou oblast displejů.
U aplikací, které se nemůžou vykreslovat s požadovanou obnovovací frekvencí, je možné nakonfigurovat parametry vykreslování systému tak, aby se snížily nároky na paměť a náklady na vykreslování za cenu zvýšeného aliasování pixelů. Formát zpětné vyrovnávací paměti lze také změnit, což může u některých aplikací pomoct zlepšit šířku pásma paměti a propustnost pixelů.
Velikost vykreslování, rozlišení a snímková frekvence, ve kterých je vaše aplikace požádána o vykreslení, se také můžou měnit mezi snímky a můžou se lišit u levého a pravého oka. Pokud je například aktivní funkce záznamu hybridní reality (MRC) a není zapnutá konfigurace zobrazení fotek a videokamery , může se jedno oko vykreslit s větším FOV nebo rozlišením.
Pro každý daný rámec musí aplikace vykreslovat pomocí transformace zobrazení, transformace projekce a rozlišení oblasti zobrazení, které poskytuje systém. Aplikace navíc nesmí nikdy předpokládat, že všechny parametry vykreslování nebo zobrazení zůstanou pevné mezi snímky. Moduly, jako je Unity, zvládnou všechny tyto transformace za vás ve svých vlastních objektech fotoaparátu, aby byl vždy respektován fyzický pohyb vašich uživatelů a stav systému. Pokud vaše aplikace umožňuje virtuální pohyb uživatele po celém světě (například pomocí thumbsticku na gamepadu), můžete přidat nadřazený objekt rig nad kameru, která ho bude pohybovat. To způsobí, že kamera bude odrážet virtuální i fyzický pohyb uživatele. Pokud vaše aplikace upraví transformaci zobrazení, transformaci projekce nebo dimenzi zobrazení poskytovanou systémem, musí informovat systém voláním příslušného rozhraní API pro přepsání.
Aby se zlepšila stabilita holografického vykreslování, měla by vaše aplikace poskytnout systému Windows každý snímek hloubkovou vyrovnávací paměť používanou pro vykreslování. Pokud vaše aplikace poskytuje hloubkovou vyrovnávací paměť, měla by mít koherentní hodnoty hloubky s hloubkou vyjádřenou v metrech od kamery. To umožňuje systému používat data o hloubce podle pixelu k lepší stabilizaci obsahu, pokud se hlava uživatele nakonec mírně posune od předpokládaného umístění. Pokud nemůžete poskytnout hloubkovou vyrovnávací paměť, můžete zadat bod fokusu a normální a definovat rovinu, která prochází většinu vašeho obsahu. Pokud je k dispozici hloubková vyrovnávací paměť i rovina fokusu, systém může použít obojí. Zejména je užitečné poskytnout hloubkovou vyrovnávací paměť a bod zaostření, který zahrnuje vektor rychlosti, když vaše aplikace zobrazuje hologramy, které jsou v pohybu.
Podrobnosti o tomto tématu najdete v článku Vykreslování v rozhraní DirectX .
Holografické kamery
Windows Mixed Reality představuje koncept holografické kamery. Holografické kamery jsou podobné tradiční fotoaparát nalezen v 3D grafické texty; definují vnější (polohu a orientaci) i vnitřní vlastnosti kamery. (Například zorné pole se používá k zobrazení virtuální 3D scény.) Na rozdíl od tradičních 3D kamer nemá aplikace kontrolu nad polohou, orientací a vnitřními vlastnostmi kamery. Poloha a orientace holografické kamery je implicitně řízena pohybem uživatele. Pohyb uživatele se předává do aplikace v jednotlivých rámcích prostřednictvím transformace zobrazení. Stejně tak vnitřní vlastnosti kamery jsou definovány kalibrovanou optikou zařízení a reléovým snímkem po snímku prostřednictvím transformace projekce.
Obecně platí, že aplikace bude vykreslovat jeden stereofonní fotoaparát. Robustní vykreslovací smyčka bude podporovat více kamer a bude podporovat mono i stereo kamery. Systém může například v závislosti na tvaru náhlavní soupravy požádat vaši aplikaci, aby vykreslila z alternativní perspektivy, když uživatel aktivuje funkci, jako je zachytávání hybridní reality (MRC). Aplikace, které můžou podporovat více kamer, je získají tak, že se přihlásí k tomu, jaký druh kamer můžou podporovat.
Vykreslování svazků
Při vykreslování lékařských mri nebo technických objemů ve 3D se často používají techniky vykreslování objemu . Tyto techniky mohou být zajímavé v hybridní realitě, kde uživatelé mohou přirozeně zobrazit takový objem z klíčových úhlů jednoduše pohybem hlavy.
Podporovaná řešení na HoloLensu (první generace)
- Maximální velikost oblasti zobrazení je vlastnost HolographicDisplay. HoloLens je ve výchozím nastavení nastavená na maximální velikost oblasti zobrazení, což je 720p (1268 × 720).
- Velikost oblasti zobrazení lze změnit nastavením ViewportScaleFactor na HolographicCamera. Tento faktor škálování je v rozsahu od 0 do 1.
- Nejnižší podporovaná velikost zobrazení na HoloLensu (první generace) je 50 % z 720p, což je 360p (634 × 360). Toto je ViewportScaleFactor 0,5.
- Cokoli nižší než 540p se nedoporučuje z důvodu snížení výkonu vizuálu, ale dá se použít k identifikaci kritických bodů v míře zaplnění pixelů.
Podporovaná řešení na HoloLens 2
- Aktuální a maximální podporovaná velikost cíle vykreslení jsou vlastnosti konfigurace zobrazení. HoloLens 2 je ve výchozím nastavení nastavená na maximální cílovou velikost vykreslení, což je 1440 × 936.
- Aplikace můžou změnit velikost cílových vyrovnávacích pamětí vykreslování voláním metody RequestRenderTargetSize, která požaduje novou cílovou velikost vykreslení. Zvolí se nová cílová velikost vykreslení, která odpovídá nebo překračuje požadovanou cílovou velikost vykreslení. Toto rozhraní API mění velikost cílové vyrovnávací paměti vykreslování, což vyžaduje přerozdělení paměti na GPU. To má tyto důsledky: Velikost cíle vykreslování je možné vertikálně snížit, aby se snížil zatížení paměti gpu, a tato metoda by se neměla volat s vysokou frekvencí.
- Aplikace můžou velikost oblasti zobrazení stále měnit stejným způsobem jako u HoloLensu 1. Na GPU není žádné nové přidělení paměti, takže ji lze měnit při vysoké frekvenci, ale nelze ji použít ke snížení zatížení paměti GPU.
- Nejnižší podporovaná velikost oblasti zobrazení na HoloLens 2 je 634 × 412, pokud se používá výchozí cílová velikost vykreslení, ViewportScaleFactor přibližně 0,44.
- Pokud je k dispozici cílová velikost vykreslení, která je menší než nejnižší podporovaná velikost oblasti zobrazení, bude faktor měřítka oblasti zobrazení ignorován.
- Cokoli nižší než 540p se nedoporučuje z důvodu snížení výkonu vizuálu, ale dá se použít k identifikaci kritických bodů v míře zaplnění pixelů.