Stabilita hologramu

K dosažení stabilních hologramů HoloLens integrovaný kanál pro stabilizaci obrazu. Stabilizační kanál funguje na pozadí automaticky, takže ho nemusíte povolovat žádnými dodatečnými kroky. Měli byste si ale procvičit techniky, které zlepšují stabilitu hologramů a vyhýbat se scénářům, které snižují stabilitu.

Terminologie kvality hologramů

Kvalita hologramů je výsledkem dobrého prostředí a dobrého vývoje aplikací. Aplikace běžící na konstantních 60 snímcích za sekundu v prostředí, kde HoloLens může sledovat okolí, zajišťuje synchronizaci hologramu a vyhovujícího souřadnicového systému. Z pohledu uživatele se hologramy, které mají být stacionární, nebudou posunuty 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 rychlostech vykreslování nebo cokoli jiného.

  • Přesnost. Jakmile je hologram uzamknutý 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 měl by být nezávislý na pohybu uživatelů nebo malých a zhuštěné změně prostředí. Pokud se hologram později zobrazí v neočekávaném umístění, jedná se o problém s přesností. K takovým scénářům může dojít v případě, že dvě samostatné místnosti vypadají identicky.
  • Kolísání. Uživatelé pozorují jitter s vysokou frekvencí zatřesení hologramu, ke kterému může dojít při degradování sledování prostředí. Pro uživatele řešení používá ladění senzorů.
  • Judder. Nízké frekvence vykreslování mají za následek nerovnoměrný pohyb a dvojité obrázky hologramů. Judder je obzvláště patrný v hologramech s pohybem. Vývojáři musí udržovat konstantní hodnotu 60 FPS.
  • Drift. Uživatelům se jako hologram zdá, že se posune od místa, kde byl původně umístěn. K posunu dochází, když hologramy umístěte daleko od prostorových ukotvení,zejména v nenačtené části prostředí. Vytváření hologramů blízko prostorových ukotvení snižuje pravděpodobnost posunu.
  • Jumpiness (Jumpiness). Když hologram "vyskočí" nebo "občas vyskočí" z jeho místa. K jumpiness může dojít, když sledování upravuje hologramy tak, aby odpovídaly aktualizovanému porozumění vašemu prostředí.
  • Plavat. Když se hologram jeví jako pohyb odpovídající pohybu hlavy uživatele. Když aplikace není plně implementovaná přeprojektování a pokud se HoloLens nenakalibruje pro aktuálního uživatele, dojde k plaveckým proudem. Uživatel může problém vyřešit tak, že znovu spusťte aplikaci pro aplikace. Vývojáři mohou aktualizovat stabilizační rovinu, aby dále vylepšovala stabilitu.
  • Oddělení barev. Displeje v HoloLens jsou barevně sekvenční displeje, které barevnými kanály s barvami blesku červená-zelená-modrá-zelená při 60 Hz (jednotlivá barevná pole se zobrazují na frekvenci 240 Hz). Kdykoli uživatel sleduje pohyblivý hologram pohledem, počáteční a koncové hrany hologramu se oddělí ve svých základních barvách a vytváří duhový efekt. Stupeň oddělení závisí na rychlosti hologramu. V některých vzácnějších případech rychle zamíří pohyby při pohledu na stationární hologram, což může také vést k duhovém efektu, kterému se říká oddělení barev.

Kmitočet

Snímková frekvence je prvním pilířem stability hologramu. Aby se hologramy ve světě jeví jako stabilní, musí být na každém obrázku prezentované uživateli hologramy nakreslené na správném místě. Na displeji se HoloLens 240krát za sekundu a pro každý nově vykreslený obrázek se zobrazí čtyři samostatná barevná pole, což má za následek uživatelské prostředí s 60 FPS (snímky za sekundu). Aby bylo možné zajistit co nejlepší prostředí, musí vývojáři aplikací udržovat 60 FPS, což znamená konzistentní poskytování nové image operačnímu systému každých 16 milisekund.

60 FPS Pokud chcete nakreslit hologramy tak, aby vypadaly, jako by seděly v reálném světě, HoloLens vykreslovat obrázky z pozice uživatele. Vzhledem k tomu, že vykreslování HoloLens času, předpovídá, kde bude hlavička uživatele, když se obrázky zobrazí na displejích. Tento algoritmus predikce je ale aproximace. HoloLens hardware, který upraví vykreslený obrázek tak, aby zohlednil nesrovnalosti mezi předpovězenou pozicí hlavy a skutečnou pozicí hlavy. Díky úpravě se obrázek, který uživatel vidí, je zobrazovaný ze správného umístění a hologramy jsou stabilní. Aktualizace obrázku fungují nejlépe s malými změnami a na vykresleném obrázku není možné úplně opravit určité věci, jako jsou pohybové paraxixy.

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 vykreslením obrázku a zobrazením obrázku uživatelem Ve stroji s hrami a vykreslovacím vláknem běžící v lockstepu může spuštění při 30FPS přidat 33,3 ms dodatečné latence. Snížení latence snižuje chybu předpovědi a zvyšuje stabilitu hologramu.
  2. Díky tomu bude mít každý obrázek, který se blíží pohledu uživatele, konzistentní latenci. Při vykreslení při 30 fps se na displeji stále zobrazují obrázky s 60 FPS, což znamená, že stejný obrázek se zobrazí dvakrát za sebou. Druhý snímek bude mít o 16,6 ms větší latenci než první snímek a bude muset opravit výraznější množství chyb. Tato nekonzistence v rozsahu chyby může způsobit nežádoucí vychytávku 60 Hz.
  3. Zmenšení vzhledu judderu, který je charakterizován nerovnoměrným pohybem a dvojitými obrázky. Rychlejší pohyb hologramu a nižší rychlost vykreslování jsou spojené s výraznějším judderem. Snaha udržet 60 FPS za všech okolností vám pomůže vyhnout se judderu pro daný hologram s pohybem.

Konzistence snímkové frekvence Konzistence snímkové frekvence je stejně důležitá jako vysoká míra snímků za sekundu. Občas jsou vyřazené snímky nevyhnutelné pro libovolnou aplikaci s bohatým obsahem a HoloLens implementuje některé sofistikované algoritmy pro zotavení z občasných závad. Neustálé kolísání snímkové rychlosti je ale pro uživatele mnohem patrnější než konzistentní spouštění s nižší snímkovou frekvence. Například aplikace, která se plynule vykreslí po dobu pěti snímků (60 FPS po dobu těchto pěti snímků) a pak zahodí každý druhý snímek pro dalších 10 snímků (30 FPS po dobu těchto 10 snímků), bude vypadat nestabilní než aplikace, která se konzistentně vykresluje při 30 FPS.

V související poznámce operační systém při spuštění zachytávání hybridní reality omešká aplikace na 30 FPS.

Analýza výkonu Existují různé druhy nástrojů, které je možné použít ke srovnávacím testům frekvence snímků aplikace, například:

  • GPUView
  • Visual Studio grafického ladicího programu
  • Profilátory integrované do 3D modulů, jako je Unity

Hologram – vykreslování vzdáleností

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

  • Zaměřte se na jednotlivá oka.
  • Konvergence – dva pohledy se pohybují směrem dovnitř nebo ven k středu objektu.
  • Binocular vision – rozdíly mezi obrázky levého a pravého oka, které jsou závislé na vzdálenosti objektu od fixního bodu.
  • Stínování, relativní velikost úhlu a další monokální (jednooční) podněty.

Konvergence a depeší jsou jedinečné, protože jejich vnější podněty souvisejí s tím, jak se oči mění, aby vnímaly objekty v různých vzdálenostech. V přirozeném zobrazení jsou konvergence a mimy propojené. Když se pohledem na něco podobného (například nosu) zkříže a přizpůsobí se blízkou bodům. Když se oči na něco zobrazí v nekonečnu, stanou se oči paralelní a oko se přizpůsobí nekonečnu.

Uživatelé s HoloLens se vždy přizpůsobí 2,0 m, aby si zachovali jasný obrázek, protože displeje HoloLens jsou pevně pevné v optické vzdálenosti přibližně 2,0 m od uživatele. Vývojáři aplikací řídí, kde se pohled uživatelů konverguje, a to 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 konvergují na různé vzdálenosti, přirozené propojení mezi těmito dvěma podněty se přeruší, což může vést k vizuálnímu zraku nebo únavě, zejména v případě velikosti konfliktu.

Před konfliktem typu vecice-conflict je možné se vyhnout nebo minimalizovat tak, že se konvergovaný obsah co nejvíce blíží 2,0 m (to znamená, že ve scéně s velkým množstvím hloubky se oblasti zájmu nachází v blízkosti 2,0 m, pokud je to možné). Když obsah nelze umístit do 2,0 m, je největší, 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 stacionární hologram, který zůstává 50 cm daleko, než se podívat na hologram o 50 cm dál, který se v průběhu času pohybuje směrem k vám a od něj.

Umístění obsahu do 2,0 m je také výhodné, protože tyto dva 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 posunou ze strany holografického rámce, zobrazí se z jednoho zobrazení, zatímco jsou stále viditelné na druhém. Tato binokilární postřeh může narušovat vnímání hloubky 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

Oříznutí rovin Pro maximální komfort doporučujeme oříznutí vzdálenosti vykreslení na 85 cm s prolnutím obsahu začínajícím 1 m. V aplikacích, kde jsou hologramy i uživatelé stárnoucí, je možné hologramy zobrazit v blízkosti 50 cm. V takových případech by aplikace měly umístit rovinu klipu o 30 cm blíže a zeslábnutí by mělo od roviny klipu odstartovat minimálně 10 cm. Kdykoli je obsah blíž než 85 cm, je důležité zajistit, aby se uživatelé často neposouzeli blíž k hologramům nebo aby se hologramy často neposoužily blíž k uživateli ani k němu nepocházely, protože v těchto situacích je nejpravděpodobnější, že dojde ke konfliktu ve vecice-conflict. Obsah by měl být navržený tak, aby minimalizoval potřebu interakce, která je od uživatele blíž než 85 cm, ale když se obsah musí vykreslit blíže než 85 cm, je pro vývojáře dobrým pravidlem návrh scénářů, ve kterých se uživatelé nebo hologramy neposouou do hloubky více než 25 % času.

Osvědčené postupy Pokud hologramy nelze umístit ve 2 m a nelze se vyhnout konfliktům mezi konvergencí a mihotou, optimální zóna umístění hologramu je 1,25 m až 5 m. V každém případě by návrháři měli strukturovat obsah, aby uživatele přiměi k interakci 1+m (například k úpravě velikosti obsahu a výchozích parametrů umístění).

Přeprojekce

HoloLens má sofistikovanou holografický stabilizační techniku s asistencí hardwaru, která se označuje jako přeprojekce. Při změně projektování se bere v úvahu pohyb a změna bodu zobrazení (CameraPose) při animace scény a uživatel posouvá svou hlavičku. Aplikace musí provést konkrétní akce, aby se co nejlépe využívala reprojekce.

Existují čtyři hlavní typy reprojekce.

  • Reprojekce hloubky: Vytvoří nejlepší výsledky s minimálním úsilím z aplikace. Všechny části vykreslené scény se nezávisle ustálí na základě jejich vzdálenosti od uživatele. Některé artefakty vykreslování můžou být viditelné v případě ostrých změn v hloubkě. tato možnost je dostupná jenom pro HoloLens 2 a moderní sluchátka.
  • Reprojekce planární: Umožňuje aplikaci přesnou kontrolu stabilizace. Rovina je nastavena aplikací a vše na této rovině bude největší stabilní částí scény. Další hologram je pryč od roviny, tím méně stabilní bude. tato možnost je k dispozici na všech Windowsch platformách MR.
  • Automatické reprojekce planární: Systém nastaví ustálenou rovinu pomocí informací v vyrovnávací paměti hloubky. tato možnost je k dispozici na HoloLens generace 1 a HoloLens 2.
  • Žádné: Pokud aplikace neprovede žádnou akci, planární reprojekce se používá s ustálenou rovinou stanovenou ve 2 metrech ve směru hlavice uživatele pohledu, obvykle produkuje základní výsledky.

Aplikace musí provést konkrétní akce, aby bylo možné povolit různé typy reprojekce.

  • Reprojekce hloubky: Aplikace odešle do systému svou hloubkovou vyrovnávací paměť pro každý vykreslený snímek. v Unity je reprojekce hloubky provedena s možností vyrovnávací paměti shared depth v podokně Windows Mixed Reality Nastavení v části správa modulů plug-in XR. Rozhraní DirectX CommitDirect3D11DepthBuffer volání. Aplikace by neměla volat SetFocusPoint.
  • Reprojekce planární: V každém rámci aplikace říká systému umístění roviny, která se má stabilizovat. Aplikace Unity volají SetFocusPointForFrame a mají zakázanou sdílenou hloubkovou vyrovnávací paměť . Aplikace DirectX volají SetFocusPoint a neměly by volat CommitDirect3D11DepthBuffer.
  • Automatické reprojekce planární: Aby bylo možné povolit, musí aplikace odeslat do systému svou hloubkovou vyrovnávací paměť, protože by mohla deaktivovat hloubku. aplikace, které používají MRTK (Mixed Reality Toolkit), můžou nakonfigurovat poskytovatele nastavení kamery tak, aby používal reprojekci AutoPlanar. Nativní aplikace by měly u DepthReprojectionMode jednotlivých snímků DepthReprojectionMode nastavit HolographicCameraRenderingParameters AutoPlanar . v případě HoloLens generace 1 by aplikace neměla volat SetFocusPoint.

Výběr techniky reprojekce

Typ stabilizace Moderní sluchátka HoloLens generace 1 HoloLens 2
Reprojekce hloubky Doporučeno Doporučeno

Aplikace Unity musí používat Unity 2018.4.12 +, Unity 2019.3 + nebo Unity 2020.3 +. V opačném případě použijte automatické planární reprojekce.
Automatické reprojekce planární Doporučená výchozí Doporučuje se, pokud neposkytuje nejlepší výsledky v případě reprojekce hloubky.

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.
Reprojekce planární Nedoporučuje se Doporučuje se, pokud automatické planární nedávají nejlepší výsledky. Tuto možnost použijte, pokud žádné z možností hloubky neposkytují požadované výsledky.

Ověření hloubky je správně nastavené.

Když metoda reprojekce používá vyrovnávací paměť hloubky, je důležité ověřit obsah vyrovnávací paměti hloubky, která představuje vykreslenou scénu aplikace. Několik faktorů může způsobovat problémy. Pokud je k dispozici druhá kamera pro vykreslování překryvů uživatelského rozhraní, může například přepsat všechny informace o hloubkě ze skutečného zobrazení. Transparentní objekty často nenastavuje hloubku. Některé vykreslování textu ve výchozím nastavení hloubku nenastaví. V vykreslování budou viditelné histogramu, pokud se hloubka neshoduje se vykreslenými hologramy.

HoloLens 2 má vizualizér k zobrazení, kde hloubka je a není nastavená, což se dá povolit z portálu zařízení. Na kartě zobrazenístability hologramu vyberte zaškrtávací políčko Zobrazit vizualizaci hloubky v případě sluchátek . Oblasti, které mají správně nastavenou hloubku, budou modré. Vykreslené položky, které nemají nastavenou hloubku, jsou označeny červeně a je třeba je opravit.

Poznámka

Vizualizace hloubky se nezobrazí v rámci hybridního zachycení realit. Zobrazuje se jenom přes zařízení.

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

Použití reprojekce planární

Poznámka

V případě poutavých sluchátek pro stolní počítače je nastavení ustálené roviny obvykle produktivní, protože nabízí méně vizuální kvalitu než poskytování hloubkové vyrovnávací paměti vaší aplikace systému za účelem zajištění opětovného rozkladu na hloubkové pixely. pokud neběží na HoloLens, měli byste se obecně vyhnout nastavení ustálené roviny.

Stabilizace roviny pro 3D objekty

Zařízení se automaticky pokusí zvolit tuto plochu, ale aplikace by měla pomoct tím, že vybere bod výběru ve scéně. aplikace Unity běžící na HoloLens by měly zvolit nejlepší bod výběru na základě scény a předávat je do SetFocusPoint (). Příkladem nastavení zaměření v rozhraní DirectX je zahrnutí do výchozí šablony otáčející se datové krychle.

Unity pošle vyrovnávací paměť hloubky do Windows, aby se při spuštění aplikace na moderní sluchátka připojená k stolnímu počítači zajistila reprojekce na pixely, která poskytuje ještě lepší kvalitu obrazu bez explicitního fungování aplikace. fokus byste měli zadat jenom v případě, že vaše aplikace běží na HoloLens, nebo opětovné prokládání po pixelech bude přepsáno.

// 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í detailního bodu závisí na tom, co se na hologramu díváte. Aplikace má pohledu vektor pro referenci a Návrhář aplikací ví, jaký obsah chtějí uživatel sledovat.

Jedním z nejdůležitějších věcí, které může vývojář provádět při stabilizaci hologramů, je vykreslování na 60 FPS. Vyřazení nižších než 60 snímků za sekundu významně sníží stabilitu hologramů, a to bez ohledu na optimalizaci stabilizace.

Osvědčené postupy Neexistuje univerzální způsob, jak nastavit stabilizační rovinu a která je specifická pro danou aplikaci. Naše hlavní doporučení je experimentovat a zjistit, co nejlépe vyhovuje vašemu scénáři. Nicméně se snažte sjednotit stabilizační rovinu co nejvíc obsahu, protože veškerý obsah této plochy je dokonale stabilizovaný.

Například:

  • Pokud máte jenom planární obsah (čtení aplikace, aplikace pro přehrávání videa), zarovnejte stabilizační plochu s rovinou, která má váš obsah.
  • Pokud existují tři malé koule, které jsou zablokované po celém světě, udělejte stabilizaci "vyjmout", i když jsou na středích všech oblastí, které jsou aktuálně v zobrazení uživatele.
  • Pokud má vaše scéna obsah v podstatě různých hloubek, upřednostnit další objekty.
  • Nezapomeňte upravit ustálený bod každého snímku tak, aby se shodoval s hologramem, na kterém se uživatel díváte.

Věci, které je potřeba zabránit Stabilizace roviny je skvělým nástrojem pro dosahování stabilních hologramů, ale v případě, že je zneužitný, může způsobit nestabilitu obrazu.

  • Nepoužívejte možnost "Fire" a zapomenout ". Můžete ukončit ustálenou rovinu uživatele nebo připojit k objektu, který již není v zobrazení uživatele. Ujistěte se, že normální úroveň stabilizace je nastavená na opačnou dobu (například-kamera. dopředně).
  • Neprovádějte rychlé změny stabilizace zadní roviny mezi extrémními hodnotami.
  • Nenechávejte stabilizační rovinu nastavenou na pevnou vzdálenost nebo orientaci.
  • Nedovolit stabilizaci stabilizačních ploch uživatelem
  • nevytvářejte fokus při spuštění na stolním počítači, nikoli na HoloLens a místo toho se spoléhá na hloubkovou reprojekci na základě hloubkové velikosti pixelu.

Oddělení barev

vzhledem k povaze HoloLens zobrazení může být někdy zjištěn artefakt nazvaný "separace barev". Manifestuje se jako obrázek oddělující jednotlivé základní barvy – červená, zelená a modrá. Artefakt může být obzvláště viditelný při zobrazení bílých objektů, protože mají velké množství červené, zelené a modré. Je nejvýraznější, když uživatel vizuálně sleduje hologram, který se pohybuje v holografickém horním rámci. Další způsob, jakým může artefakt manifestovat, je deformace a deformace objektů. Pokud má objekt vysoký kontrast a/nebo čistě barvy, jako je například červená, zelená, modrá, separace barev se zobrazí jako pokřivení různých částí objektu.

Příklad, jakým způsobem může oddělení barev v podobě bílého kulatého ukazatele na pozici, vypadat jako uživatel, otočit jeho hlavní stranu:

Příklad, jakým způsobem může oddělení barev v podobě bílého kulatého ukazatele na pozici, vypadat jako uživatel, otočit svou hlavu na stranu.

I když je obtížné zcela vyhnout se separaci barev, je k dispozici několik technik pro jejich zmírnění.

Separace barev se dá vidět na:

  • Objekty, které se rychle pohybují, včetně objektů uzamčených objekty, jako je například kurzor.
  • Objekty, které jsou v podstatě daleko od ustálené roviny.

Chcete-li odzeslabení vlivu separace barev:

  • Nastaví objekt jako prodlevu pohledu uživatele. Mělo by se zobrazit jako, pokud má nějaký setrvačná a je připojen k pohledu "na pružinách". Tento přístup zpomaluje kurzor (zmenšení vzdálenosti) a umístí ho za pravděpodobný pohledu bod uživatele. Pokud se tak rychle zachytí, když uživatel přestane přecházet k pohledui, považuje se za jeho přirozený.
  • Pokud chcete přesunout hologram, zkuste zachovat rychlost pohybu pod 5 stupn za sekundu, pokud očekáváte, že se uživatel bude řídit jeho očima.
  • Použijte světlo namísto geometrie pro kurzor. Zdrojem virtuálního osvětlení připojeného k pohledu se bude vnímat jako interaktivní ukazatel, ale nezpůsobí separaci barev.
  • Nastavte stabilizační rovinu tak, aby odpovídala hologramům, na kterých je uživatel gazing.
  • Nastavte objekt jako červený, zelený nebo modrý.
  • Přepněte na rozmazaný verzi obsahu. Například zaoblený bílý ukazatel může být změněn na mírně rozmazaný řádek orientovaný ve směru pohybu.

Stejně jako dřív je vykreslování na 60 FPS a nastavení stabilizacé roviny nejdůležitějšími techniky pro stabilitu hologramů. Pokud je potřeba oddělit barvy, nejprve se ujistěte, že frekvence snímků splňuje očekávání.

Viz také