Stabilita hologramu

Aby bylo dosaženo stabilních hologramů, má HoloLens integrovaný kanál pro stabilizaci obrazu. Kanál stabilizace funguje automaticky na pozadí, takže k jeho povolení nemusíte provádět žádné další kroky. Měli byste ale cvičit techniky, které zlepšují stabilitu hologramu a vyhýbají se scénářům, které stabilitu snižují.

Terminologie kvality hologramu

Kvalita hologramů je výsledkem dobrého prostředí a dobrého vývoje aplikací. Aplikace běžící při konstantních 60 snímcích za sekundu v prostředí, kde HoloLens může sledovat okolí, zajišťuje synchronizaci hologramu a odpovídajícího souřadnicového systému. Z pohledu uživatele se hologramy, které mají být nehybné, nebudou pohybovat vzhledem k prostředí.

Následující terminologie vám může pomoct při identifikaci problémů s prostředím, nekonzistentních nebo nízkých rychlostí vykreslování nebo čehokoli jiného.

  • Přesnost. Jakmile je hologram uzamčený a umístěný ve skutečném světě, měl by zůstat tam, kde je umístěn vzhledem k okolnímu prostředí a nezávisle na pohybu uživatele nebo malých a řídkých změnách prostředí. Pokud se hologram později zobrazí na neočekávaném místě, jedná se o problém s přesností . K takovým scénářům může dojít, pokud dvě odlišné místnosti vypadají identicky.
  • Kolísání. Uživatelé pozorují kolísání při vysoké frekvenci třesení hologramu, ke kterému může dojít při snížení výkonu sledování prostředí. Pro uživatele je řešením spuštěné ladění senzorů.
  • Judder. Nízké frekvence vykreslování mají za následek nerovnoměrný pohyb a dvojité snímky hologramů. Judder je obzvláště patrný u hologramů s pohybem. Vývojáři musí udržovat konstantní 60 FPS.
  • Drift. Uživatelům se zobrazí posun, protože hologram vypadá, že se posune z místa, kde byl původně umístěn. K posunu dochází, když umístíte hologramy daleko od prostorových ukotvení, zejména v nezmapovaných částech prostředí. Vytváření hologramů v blízkosti prostorových ukotvení snižuje pravděpodobnost posunu.
  • Skákavost. Když hologram občas "vyskočí" nebo "přeskočí" ze svého umístění. K jumpiness může dojít, když sledování upraví hologramy tak, aby odpovídaly aktualizovanému porozumění prostředí.
  • Plavat. Když se zdá, že se hologram hýbá, odpovídá pohybu hlavy uživatele. Funkce Plavat nastane, když aplikace nemá plně implementovanou reprojekci a pokud holoLens není kalibrovaný pro aktuálního uživatele. Uživatel může problém vyřešit opětovně spuštěním aplikace kalibrace . Vývojáři můžou aktualizovat rovinu stabilizace, aby se stabilita dále zlepšila.
  • Oddělení barev. Displeje v HoloLensu jsou barevné sekvenční displeje, které blikají barevné kanály červeno-zelená-modro-zelená při 60 Hz (jednotlivá barevná pole se zobrazují na 240 Hz). Kdykoli uživatel sleduje pohyblivý hologram očima, jeho úvodní a koncové hrany se oddělují ve svých základních barvách, což vytváří duhový efekt. Stupeň separace závisí na rychlosti hologramu. V některých vzácnějších případech může mít při pohledu na nehybný hologram také duhový efekt, který se nazývá oddělení barev.

Kmitočet

Snímková frekvence je prvním pilířem stability hologramu. Aby se hologramy na světě zobrazovaly stabilně, musí mít každý obrázek, který se uživateli zobrazí, hologramy nakreslené na správném místě. Zobrazení v HoloLensu se aktualizují 240krát za sekundu a zobrazují čtyři samostatná barevná pole pro každý nově vykreslený obrázek, což vede k uživatelskému prostředí s 60 snímky za sekundu. Aby vývojáři aplikací zajistili co nejlepší možnosti, musí udržovat 60 snímků za sekundu, což znamená konzistentní poskytování nové image operačnímu systému každých 16 milisekund.

60 SNÍMKŮ ZA SEKUNDU Aby hologramy vypadaly jako v reálném světě, musí HoloLens vykreslit obrázky z pozice uživatele. Vzhledem k tomu, že vykreslování obrázků nějakou dobu trvá, HoloLens předpovídá, kde bude hlava uživatele, když se obrázky zobrazí na displejích. Tento prediktivní algoritmus je ale aproximace. HoloLens má hardware, který upravuje vykreslený obrázek tak, aby zohlednil nesrovnalosti mezi predikovanou polohou hlavy a skutečnou polohou hlavy. Úprava způsobí, že obrázek, který vidí uživatel, vypadá, jako by byl vykreslený ze správného umístění, a hologramy jsou stabilní. Aktualizace obrázku fungují nejlépe s malými změnami a nemůžou úplně opravit určité věci ve vykresleném obrázku, jako je pohybová paralaxa.

Vykreslováním při 60 fps děláte tři věci, které vám pomůžou vytvořit stabilní hologramy:

  1. Minimalizace celkové latence mezi vykreslováním obrázku a obrázkem, který vidí uživatel. V modulu s hrou a vláknem vykreslování běžícím v lockstepu může spuštění při 30FPS přidat latenci o 33,3 ms navíc. Snížení latence snižuje predikci chyb a zvyšuje stabilitu hologramu.
  2. Aby každý obrázek, který se dostane do očí uživatele, měl konzistentní latenci. Pokud vykreslujete rychlostí 30 snímků za sekundu, zobrazí se na displeji obrázky při 60 FPS, což znamená, že se stejný obrázek zobrazí dvakrát za sebou. Druhý snímek bude mít o 16,6 ms vyšší latenci než první snímek a bude muset opravit výraznější množství chyb. Tato nekonzistence v rozsahu chyb může způsobit nežádoucí 60 Hz hodnocení.
  3. Snížení vzhledu judder, který je charakterizován nerovnoměrným pohybem a dvojitými obrázky. Rychlejší pohyb hologramu a nižší rychlost vykreslování jsou spojeny s výraznějším hodnocením. Úsilí o zachování 60 FPS po celou dobu pomůže vyhnout se hodnocení pro daný pohybující se hologram.

Konzistence snímkové frekvence Konzistence snímkové frekvence je stejně důležitá jako vysoká frekvence snímků za sekundu. Občas vynechané snímky jsou nevyhnutelné pro všechny aplikace s bohatým obsahem a HoloLens implementuje některé sofistikované algoritmy, které se zotaví z občasných chyb. Neustále kolísající snímková frekvence je však pro uživatele mnohem patrnější než konzistentně při nižších snímkových frekvencích. Například aplikace, která se hladce vykresluje pro pět snímků (60 snímků za sekundu po dobu trvání těchto pěti snímků) a pak zahodí každý druhý snímek pro dalších 10 snímků (30 snímků za sekundu po dobu trvání těchto 10 snímků), bude vypadat nestabilní než aplikace, která konzistentně vykresluje při 30 snímcích FPS.

V související poznámce operační systém omezuje aplikace na 30 snímků za sekundu, když je spuštěno zachycení hybridní reality .

Analýza výkonu Existují různé druhy nástrojů, které je možné použít k srovnávacímu testování snímkové frekvence aplikace, například:

  • GPUView
  • Visual Studio Graphics Debugger
  • Profilátory integrované do 3D modulů, jako je Unity

Vzdálenosti vykreslování hologramu

Lidský vizuální systém integruje více signálů závislých na vzdálenosti, když fixuje a zaměřuje se na objekt.

  • Ubytování - fokus individuálního oka.
  • Konvergence – dvě oči pohybující se směrem dovnitř nebo ven na střed objektu.
  • Binokulární vidění – rozdíly mezi levým a pravým okem, které jsou závislé na vzdálenosti objektu od bodu fixace.
  • Stínování, relativní úhlová velikost a další monokulární (jednooká) upozornění.

Konvergence a ubytování jsou jedinečné, protože jejich extra-sítnicové signály souvisí s tím, jak se oči mění, aby vnímat objekty v různých vzdálenostech. V přirozeném zobrazení jsou konvergence a ubytování propojeny. Když oči pohlédnou na něco blízko (například na váš nos), oči se zkříží a přizpůsobí se k blízkému bodu. Když oči pohlédnou na něco v nekonečnu, oči se stanou paralelně a oko se přizpůsobí nekonečnu.

Uživatelé, kteří mají HoloLens, se vždy přizpůsobí vzdálenosti 2,0 m, aby si zachovali jasný obraz, protože displeje HoloLens jsou fixovány v optické vzdálenosti přibližně 2,0 m od uživatele. Vývojáři aplikací řídí, kde se oči uživatelů sbíhají, umístěním obsahu a hologramů do různých hloubk. Když se uživatelé přizpůsobí různým vzdálenostem a sbližují se do různých vzdáleností, dojde k přerušení přirozeného propojení mezi těmito dvěma upozorněními, což může vést k vizuálnímu nepohodlí nebo únavě, zejména pokud je rozsah konfliktu velký.

Nepohodlí z konfliktu s ubytováním lze vyhnout nebo minimalizovat udržováním konvergovaného obsahu co nejblíže 2,0 m (to znamená, že ve scéně s velkou hloubkou umístěte oblasti zájmu v blízkosti 2,0 m, pokud je to možné). Pokud obsah není možné umístit poblíž vzdálenosti 2,0 m, je největší nepohodlí z konfliktu s ubytováním a ubytováním, když se uživatel dívá tam a zpět mezi různými vzdálenostmi. Jinými slovy, je mnohem pohodlnější podívat se na statický hologram, který zůstává 50 cm daleko, než se podívat na hologram vzdálený 50 cm, který se v průběhu času pohybuje směrem k vám a od vás.

Umístění obsahu na 2,0 m je také výhodné, protože oba displeje jsou navrženy tak, aby se v této vzdálenosti plně překrývaly. U obrázků umístěných mimo tuto rovinu se při pohybu od boku holografického rámce zobrazí z jednoho displeje, zatímco na druhém budou stále viditelné. Tato binokulární rivalita může narušit hloubkové vnímání hologramu.

Optimální vzdálenost pro umístění hologramů od uživatele

Optimální vzdálenost pro umístění hologramů od uživatele

Roviny klipů Pro maximální pohodlí doporučujeme vystřihování vzdálenosti vykreslování na 85 cm s vyblednutím obsahu od 1 m. V aplikacích, kde jsou hologramy i uživatelé nehybné, je možné hologramy pohodlně zobrazit až na 50 cm. V těchto případech by aplikace měly umístit rovinu klipu blíže než 30 cm a vyblednutí by mělo začít nejméně 10 cm od roviny spony. Vždy, když je obsah blíže než 85 cm, je důležité zajistit, aby se uživatelé často neposunuli blíž nebo dál od hologramů nebo aby se hologramy často neposouvají blíž nebo dál od uživatele, protože tyto situace s největší pravděpodobností způsobují nepohodlí z konfliktu s místem ubytování. Obsah by měl být navržený tak, aby minimalizoval potřebu interakce blíže než 85 cm od uživatele, ale pokud se obsah musí vykreslit blíž než 85 cm, je dobrým pravidlem pro vývojáře navrhovat scénáře, ve kterých se uživatelé nebo hologramy nepohybují do hloubky déle než 25 % času.

Osvědčené postupy Pokud hologramy nelze umístit na 2 m a nelze se vyhnout konfliktům mezi konvergencí a umístěním, je optimální zóna pro umístění hologramu mezi 1,25 m a 5 m. V každém případě by návrháři měli strukturovat obsah tak, aby uživatele podporovali v interakci 1+ m daleko (například upravit velikost obsahu a výchozí parametry umístění).

Opětovné projekci

HoloLens má sofistikovanou hardwarově asistovanou techniku holografické stabilizace, která se označuje jako reprojekce. Reprojekce bere v úvahu pohyb a změnu úhlu pohledu (CameraPose), jak scéna animuje a uživatel pohybuje hlavou. Aplikace musí provést konkrétní akce, aby co nejlépe využívaly reprojekci.

Existují čtyři hlavní typy reprojekce

  • Hloubkové přeprojektování: Dosáhne nejlepších výsledků s nejmenším úsilím aplikace. Všechny části vykreslené scény jsou nezávisle stabilizovány na základě jejich vzdálenosti od uživatele. Některé artefakty vykreslování můžou být viditelné tam, kde dochází k ostrým změnám v hloubce. Tato možnost je dostupná jenom u HoloLens 2 a asistivních náhlavních souprav.
  • Planární reprojekce: Umožňuje aplikaci přesnou kontrolu nad stabilizací. Rovina je nastavena aplikací a vše v této rovině bude nejstabilnější částí scény. Čím dál je hologram od roviny, tím méně stabilní bude. Tato možnost je k dispozici na všech platformách Windows MR.
  • Automatická planární reprojekce: Systém nastaví stabilizační rovinu pomocí informací v hloubkové vyrovnávací paměti. Tato možnost je k dispozici pro HoloLens generace 1 a HoloLens 2.
  • Žádný: Pokud aplikace nic neudělá, planar reprojection se používá s stabilizační rovinou pevnou na 2 metry ve směru pohledu na hlavu uživatele, což obvykle vede k nestandardním výsledkům.

Aplikace musí přijmout konkrétní akce, které umožní různé typy reprojekcí.

  • Hloubkové přeprojektování: Aplikace odešle do systému hloubkovou vyrovnávací paměť pro každý vykreslený snímek. V Unity se hloubková reprojektace provádí pomocí možnosti Sdílená hloubková vyrovnávací paměť v podokně nastavení Windows Mixed Reality v části Správa modulů plug-in XR. Aplikace DirectX volají CommitDirect3D11DepthBuffer. Aplikace by neměla volat SetFocusPoint.
  • Planární reprojekce: Na každém rámu aplikace sdělují systému umístění roviny, která se má stabilizovat. Aplikace Unity volají SetFocusPointForFrame a měly by mít zakázanou sdílenou hloubkovou vyrovnávací paměť . Aplikace DirectX volají SetFocusPoint a neměly by volat CommitDirect3D11DepthBuffer.
  • Automatická planární reprojekce: Aby to bylo možné, musí aplikace odeslat do systému hloubkovou vyrovnávací paměť stejně jako při opětovném projekci hloubky. Aplikace používající sadu Mixed Reality Toolkit (MRTK) můžou nakonfigurovat poskytovatele nastavení kamery tak, aby používal přeprojekt automatického plánování. Nativní aplikace by měly nastavit v DepthReprojectionModeHolographicCameraRenderingParameters na AutoPlanar každý snímek. Pro HoloLens generace 1 by aplikace neměla volat SetFocusPoint.

Volba techniky reprojekce

Typ stabilizace Imerzivní náhlavní soupravy HoloLens generace 1 HoloLens 2
Hloubková reprojekce Doporučeno Doporučeno

Aplikace Unity musí používat Unity 2018.4.12+, Unity 2019.3 nebo novější nebo Unity 2020.3+. V opačném případě použijte automatické přeprojektování planárních plánů.
Automatická planární reprojekce Doporučené výchozí nastavení Doporučuje se, pokud opětovné projekci hloubky nepřidává nejlepší výsledky.

Pro aplikace Unity se doporučuje používat Unity 2018.4.12+, Unity 2019.3+ nebo Unity 2020.3+. Předchozí verze Unity budou fungovat s mírně sníženými výsledky reprojekce.
Planar Reprojection Nedoporučuje se Doporučuje se, pokud automatický planar nedává nejlepší výsledky. Použijte, pokud žádná z možností hloubky nedává požadované výsledky.

Ověření hloubky je správně nastaveno

Pokud metoda reprojekce používá hloubkovou vyrovnávací paměť, je důležité ověřit, že obsah hloubkové vyrovnávací paměti představuje vykreslenou scénu aplikace. Problémy může způsobovat řada faktorů. Pokud se například k vykreslení překrytí uživatelského rozhraní používá druhá kamera, pravděpodobně přepíše všechny informace o podrobnostech ze skutečného zobrazení. Průhledné objekty často nenastavují hloubku. Některé vykreslování textu ve výchozím nastavení nenastaví hloubku. Pokud hloubka neodpovídá vykreslovaným hologramům, budou ve vykreslování viditelné chyby.

HoloLens 2 má vizualizér, který ukazuje, kde je hloubka a kde se nenastavuje, což je možné povolit na portálu Device Portal. Na kartě Stabilita hologramu zobrazení> zaškrtněte políčko Zobrazit vizualizaci hloubky v náhlavní soupravě. Oblasti, které mají správně nastavenou hloubku, budou modré. Vykreslené položky, které nemají nastavenou hloubku, jsou označené červeně a je potřeba je opravit.

Poznámka

Vizualizace hloubky se v Mixed Reality Capture nezobrazí. Je viditelný jenom prostřednictvím zařízení.

Některé nástroje pro zobrazení GPU umožňují vizualizaci hloubkové vyrovnávací paměti. Vývojáři aplikací můžou pomocí těchto nástrojů zajistit správné nastavení hloubky. Projděte si dokumentaci k nástrojům aplikace.

Použití planárního reprojekce

Poznámka

U stolních imerzivních náhlavních souprav je nastavení roviny stabilizace obvykle kontraproduktivní, protože nabízí menší vizuální kvalitu než poskytnutí hloubkové vyrovnávací paměti aplikace systému, aby bylo možné přeprojektování na základě hloubky podle pixelů. Pokud neběžíte na HoloLensu, měli byste se obecně vyhnout nastavení stabilizační roviny.

Rovina stabilizace pro 3D objekty

Zařízení se automaticky pokusí zvolit tuto rovinu, ale aplikace by měla pomoct výběrem zaostřovacího bodu ve scéně. Aplikace Unity běžící na HoloLensu by měly zvolit nejlepší zaostřovací bod na základě vaší scény a předat ho do SetFocusPoint(). Příklad nastavení fokusového bodu v Rozhraní DirectX je součástí výchozí šablony rotující datové krychle.

Unity odešle hloubkovou vyrovnávací paměť do Systému Windows, aby při spuštění aplikace na imerzivní náhlavní soupravě připojené ke stolnímu počítači umožnil reprojekci podle pixelů, což poskytuje ještě lepší kvalitu obrazu bez explicitní práce aplikace. Pokud je aplikace spuštěná na HoloLensu, měli byste zadat pouze bod zaostření, jinak se přepíše přeprojektování pro jednotlivé pixely.

// SetFocusPoint informs the system about a specific point in your scene to
// prioritize for image stabilization. The focus point is set independently
// for each holographic camera.
// You should set the focus point near the content that the user is looking at.
// In this example, we put the focus point at the center of the sample hologram,
// since that is the only hologram available for the user to focus on.
// You can also set the relative velocity and facing of that content; the sample
// hologram is at a fixed point so we only need to indicate its position.
renderingParameters.SetFocusPoint(
    currentCoordinateSystem,
    spinningCubeRenderer.Position
    );

Umístění zaostřování do značné míry závisí na tom, na co se hologram dívá. Aplikace má vektor pohledu pro referenci a návrhář aplikace ví, jaký obsah má uživatel sledovat.

Nejdůležitější věcí, kterou může vývojář udělat pro stabilizaci hologramů, je vykreslení při 60 FPS. Pokles pod 60 snímků za sekundu výrazně sníží stabilitu hologramu bez ohledu na optimalizaci roviny stabilizace.

Osvědčené postupy Neexistuje univerzální způsob, jak nastavit rovinu stabilizace a je specifická pro aplikaci. Naším hlavním doporučením je experimentovat a zjistit, co je pro váš scénář nejvhodnější. Pokuste se však stabilizační rovinu sladit s co největším obsahem, protože veškerý obsah v této rovině je dokonale stabilizovaný.

Příklad:

  • Pokud máte pouze rovinný obsah (aplikaci pro čtení, aplikaci pro přehrávání videa), zarovnejte rovinu stabilizace s rovinou, která obsahuje váš obsah.
  • Pokud existují tři malé koule, které jsou uzamčeny světem, aby stabilizační rovina "vyřízla" středy všech koulí, které jsou aktuálně v zobrazení uživatele.
  • Pokud má vaše scéna obsah v podstatně odlišných hloubkách, upřednostněte další objekty.
  • Nezapomeňte upravit stabilizační bod každého snímku tak, aby se shodoval s hologramem, na který se uživatel dívá

Co je třeba se vyhnout Stabilizační rovina je skvělým nástrojem pro dosažení stabilních hologramů, ale pokud je zneužita, může to vést k vážné nestabilitě obrazu.

  • "Nestřílejte a zapomeňte". Můžete skončit s rovinou stabilizace za uživatelem nebo připojenou k objektu, který už není v zobrazení uživatele. Ujistěte se, že je normální rovina stabilizace nastavená protisměrně dopředu (například -camera.forward).
  • Neměňte rychle stabilizační rovinu tam a zpět mezi extrémy.
  • Nenechávejte stabilizační rovinu nastavenou na pevnou vzdálenost nebo orientaci.
  • Nedovolte, aby stabilizační rovina prořízla uživatele
  • Nenastavujte bod fokusu, když běžíte na stolním počítači místo HoloLensu, a místo toho se spoléháte na přeprojekci na základě hloubky podle pixelů.

Separace barev

Vzhledem k povaze zobrazení HoloLensu je někdy možné vnímat artefakt označovaný jako "oddělení barev". Manifestuje se jako obrázek oddělený do jednotlivých základních barev – červené, zelené a modré. Artefakt může být viditelný zejména při zobrazení bílých objektů, protože mají velké množství červené, zelené a modré. Nejvýraznější je, když uživatel vizuálně sleduje hologram, který se pohybuje přes holografický rámec vysokou rychlostí. Dalším způsobem, jak se může artefakt manifestovat, je deformace nebo deformace objektů. Pokud má objekt vysoký kontrast nebo čisté barvy, jako je červená, zelená, modrá, bude oddělení barev vnímáno jako deformace různých částí objektu.

Příklad toho, jak by barevné oddělení bílého kulatého kurzoru uzamčeného hlavou mohlo vypadat, když uživatel otáčí hlavu do strany:

Příklad, jak by barevné oddělení bílého kulatého kurzoru uzamčeného hlavou mohlo vypadat, když uživatel otáčí hlavu na stranu.

I když je obtížné se zcela vyhnout separaci barev, existuje několik technik, jak ho zmírnit.

Barevné oddělení je vidět na:

  • Objekty, které se rychle pohybují, včetně objektů uzamčených hlavou, jako je kurzor.
  • Objekty, které jsou podstatně daleko od stabilizační roviny.

Pokud chcete zeslabit efekty barevného oddělení:

  • Zajistěte, aby objekt zaostával pohled uživatele. Měl by vypadat, jako by měl určitou setrvačnost a je připevněn k pohledu "na prameny". Tento přístup zpomalí kurzor (zmenšuje vzdálenost oddělování) a umístí ho za pravděpodobný bod pohledu uživatele. Pokud se to rychle dožene, když uživatel přestane posouvat svůj pohled, je to přirozené.
  • Pokud chcete hologram přesunout, zkuste jeho rychlost pohybu udržet pod 5 stupni za sekundu, pokud očekáváte, že ho uživatel bude sledovat očima.
  • Místo geometrie kurzoru použijte světlo. Zdroj virtuálního osvětlení připojený k pohledu bude vnímán jako interaktivní ukazatel, ale nezpůsobí oddělení barev.
  • Upravte rovinu stabilizace tak, aby odpovídala hologramům, na které se uživatel dívá.
  • Nastavte objekt na červenou, zelenou nebo modrou.
  • Přepněte na rozmazanou verzi obsahu. Například kruhový bílý kurzor může být změněn na mírně rozmazanou čáru orientovanou ve směru pohybu.

Stejně jako předtím jsou vykreslování na 60 FPS a nastavení stabilizační roviny nejdůležitějšími technikami pro stabilitu hologramu. Pokud dochází ke znatelnému barevnému oddělení, nejprve se ujistěte, že snímková frekvence splňuje očekávání.

Viz také