Sdílet prostřednictvím


Navigace s podporou očí v MRTK – MRTK2

MRTK

Představte si, že čtete informace na tabuli a když se dostanete na konec zobrazeného textu, text se automaticky posune nahoru, aby se zobrazil další obsah. Nebo můžete plynule přiblížit místo, kde se díváte. Mapa také automaticky upraví obsah tak, aby věci, které vás zajímají, zůstaly ve vašem zorném poli. Další zajímavou aplikací je hands-free pozorování 3D hologramů tím, že se části hologramu, na které se díváte, automaticky přenese dopředu. Tady je několik příkladů popsaných na této stránce v kontextu navigace s podporou očí.

Následující popisy předpokládají, že už máte zkušenosti s nastavením sledování očí ve scéně MRTK a se základy přístupu k datům sledování očí v MRTK Unity. Všechny příklady probírané v následujícím příkladu jsou součástí EyeTrackingDemo-03-Navigation scény (Assets/MRTK/Examples/Demos/EyeTracking/Scene/EyeTrackingDemo-03-Navigation).

Shrnutí: Automatické posouvání textu, posouvání s podporou pohledem očí a přiblížení virtuální mapy, 3D otočení orientované pohledem bez použití rukou.

Automatické posouvání

Automatické posouvání umožňuje uživateli procházet texty bez zvedání prstu. Jednoduše pokračujte ve čtení a text se automaticky posune nahoru nebo dolů podle toho, kde uživatel hledá. Můžete začít z příkladu uvedeného v EyeTrackingDemo-03-Navigation tématu (Assets/MRTK/Examples/Demos/EyeTracking/Scenes). Tento příklad používá komponentu TextMesh umožňující flexibilní načítání a formátování nového textu. Pokud chcete povolit automatické posouvání, jednoduše přidejte následující dva skripty do komponenty s collider textového pole:

ScrollRectTransf

Chcete-li procházet TextMesh nebo obecně řečeno RectTransform komponentu, můžete použít skript ScrollRectTransf . Pokud chcete procházet texturu místo RectTransform, použijte ScrollTexture místo ScrollRectTransf. V následujícím článku jsou podrobněji vysvětleny parametry ScrollRectTransf , které jsou k dispozici v Unity Editoru:

Parametry Description
LimitPanning Pokud je povoleno, zastaví posouvatelný obsah na jeho hranici.
RectTransfToNavigate Odkaz na RectTransform pro posouvání.
RefToViewport Odkaz na nadřazený RectTransform posouvatelného obsahu k určení správného posunu a hranice.
AutoGazeScrollIsActive Pokud je tato možnost povolená, text se automaticky posune, pokud se uživatel podívá na aktivní oblast (například horní a dolní část posuvníku, pokud rychlost svislého posouvání není nulová).
ScrollSpeed_x Pokud je nastavená hodnota nerovná na nulu, povolí se vodorovné posouvání. Záporné hodnoty znamenají změnu směru posouvání: zleva doprava vs. zprava doleva.
ScrollSpeed_y Pokud je nastavená hodnota nerovná na nulu, povolí se svislé posouvání. Záporné hodnoty znamenají změnu směru posouvání: Nahoru dolů vs. dolů nahoru.
MinDistFromCenterForAutoScroll Normalizovaná minimální vzdálenost v x a y od středu pole zásahu cíle (0, 0) pro posouvání. Hodnoty proto musí být v rozsahu od 0 (vždy se posouvat) až 0,5 (bez posouvání).
UseSkimProofing Pokud je tato možnost povolená, zabrání náhlým pohybům posouvání při rychlém rozhlédnutí. To ale může mít za to, že posouvání bude méně reagovat. Dá se doladit s hodnotou SkimProofUpdateSpeed .
SkimProofUpdateSpeed Nižší hodnota, tím pomaleji se posouvání po skimmingu zrychlí. Doporučená hodnota: 5.

Nastavení posouvání s podporou očí v Unity

EyeTrackingTarget

Připojení komponenty EyeTrackingTarget umožňuje pružně zpracovávat události související s pohledem očí. Ukázka posouvání ukazuje posouvání textu, které začíná, když se uživatel podívá na panel, a zastaví se, když se z něj uživatel dívá. Nastavení posouvání s podporou očí v Unity: EyeTrackingTarget

Posouvání a lupa s podporou pohledu

Kdo ještě nepoužíval virtuální mapu k hledání svého domova nebo k prozkoumávání zcela nových míst? Sledování očí vám umožní ponořit se přímo do přesně částí, které vás zajímají, a jakmile je přiblížíte, můžete plynule sledovat trasu ulice a prozkoumat své okolí! To je užitečné nejen při zkoumání geografických map, ale také při prohlížení podrobností na fotografiích, vizualizacích dat nebo dokonce živě streamovaných lékařských snímků. Použití této funkce v aplikaci je snadné! Pro obsah vykreslený na texturu (např. fotku nebo streamovaná data) stačí přidat skript PanZoomTexture . Pro RectTransform použijte PanZoomRectTransf. Rozšíření funkce automatického posouvání v podstatě umožňuje posouvání svisle i vodorovně současně a zvětšení obsahu přímo kolem aktuálního zaostřovacího bodu uživatele.

Parametry Description
LimitPanning Pokud je povoleno, zastaví posouvatelný obsah na jeho hranici.
HandZoomEnabledOnStartup Označuje, jestli jsou gesta rukou automaticky povolená pro provedení gesta přiblížení. Nejdřív ho možná budete chtít zakázat, abyste se vyhnuli náhodné aktivaci akcí přiblížení.
RendererOfTextureToBeNavigated Odkazovaný renderer textury, na který se má navigovat.
Zoom_Acceleration Akcelerace přiblížení definující strmost mapování logistických funkcí rychlosti.
Zoom_SpeedMax Maximální rychlost přiblížení.
Zoom_MinScale Minimální měřítko textury pro přiblížení – například 0,5f (polovina původní velikosti).
Zoom_MaxScale Maximální měřítko textury pro oddálení – například 1f (původní velikost) nebo 2,0f (dvojnásobek původní velikosti).
Zoom_TimeInSecToZoom Načasované přiblížení: Po aktivaci se provede přiblížení/oddálení pro danou dobu v sekundách.
Zoom_Gesture Typ gesta rukou, které se má použít k přiblížení nebo oddálení
--- ---
Pan_AutoScrollIsActive Pokud je tato možnost povolená, text se automaticky posune, pokud se uživatel podívá na aktivní oblast (například horní a dolní část posuvníku, pokud rychlost svislého posouvání není nulová).
Pan_Speed_x Pokud je nastavená hodnota nerovná na nulu, povolí se vodorovné posouvání. Záporné hodnoty znamenají změnu směru posouvání: zleva doprava vs. zprava doleva.
Pan_Speed_y Pokud je nastavená hodnota nerovná na nulu, povolí se svislé posouvání. Záporné hodnoty znamenají změnu směru posouvání: Nahoru dolů vs. dolů nahoru.
Pan_MinDistFromCenter Normalizovaná minimální vzdálenost v x a y od středu pole zásahu cíle (0, 0) pro posouvání. Hodnoty proto musí být v rozsahu od 0 (vždy se posouvat) až 0,5 (bez posouvání).
UseSkimProofing Pokud je tato možnost povolená, zabrání náhlým pohybům posouvání při rychlém rozhlédnutí. To ale může mít za to, že posouvání bude méně reagovat. Dá se doladit s hodnotou SkimProofUpdateSpeed .
SkimProofUpdateSpeed Nižší hodnota, tím pomaleji se posouvání po skimmingu zrychlí. Doporučená hodnota: 5.

Nastavení posouvání a přiblížení s podporou očí v Unity

3D otočení na základě pozornosti

Představte si, že se díváte na 3D objekt a části, které chcete vidět, se magicky otočí k vám – jako by systém četl vaši mysl a věděl, že se má položka otočit k vám. To je myšlenka 3D otočení založené na pozornosti, které vám umožní prozkoumat všechny strany hologramu bez zvedání prstu. Chcete-li toto chování povolit, jednoduše přidejte skript OnLookAtRotateByEyeGaze do části objektu GameObject s komponentou Collider . Můžete upravit několik níže uvedených parametrů, abyste omezili rychlost a směry otáčení hologramu.

Jak si dokážete představit, když budete mít toto chování neustále aktivní, může se v přeplněné scéně rychle stát docela rušivým. Proto můžete začít se zakázaným chováním a pak ho rychle povolit pomocí hlasových příkazů. Případně jsme přidali příklad v EyeTrackingDemo-03-Navigation souboru (Assets/MRTK/Examples/Demos/EyeTracking/Scenes) pro použití TargetMoveToCamera, pro který můžete vybrat cíle s fokusem a ten letí před vámi – jednoduše řekněte "Come to me" (Přijďte ke mně).

Jakmile budete v režimu blízké, režim automatického otáčení se automaticky povolí. V takovém režimu ho můžete sledovat ze všech stran, buď se jednoduše naklonit a dívat se na něj, procházet se kolem něj nebo se natáhnout a chytit ho a otočit ho rukou. Když cíl zavřete (podívejte se & stažením nebo vyslovením příkazu "Poslat zpět"), vrátí se do původního umístění a přestane na vás z dálky reagovat.

Parametry Description
SpeedX Rychlost horizontálního otáčení.
Rychlé Rychlost vertikálního otáčení.
InverseX Chcete-li inverzní směr vodorovného otočení.
Inverzní funkce Inverzní směr otočení.
RotationThreshInDegrees Pokud je úhel mezi "Pohled na cíl" a "Kamera k cíli" menší než tato hodnota, nedělejte nic. To je proto, aby nedocházelo k malému kolísání otáček.
MinRotX Minimální úhel vodorovného otočení. To znamená omezit otáčení v různých směrech.
MaxRotX Maximální úhel vodorovného otočení. To znamená omezit otáčení v různých směrech.
MinRoty Minimální úhel svislého otočení, aby se omezilo otočení kolem osy x.
MaxRoty Maximální úhel svislého otočení, aby se omezilo otáčení kolem osy Y.

Nastavení otáčení 3D s podporou očí v Unity

Stručně řečeno, výše uvedené skripty by vám měly umožnit začít používat upřený pohled pro různé vstupní navigační úkoly, jako je posouvání textu, přiblížení a posouvání textur, a také otáčení zkoumání 3D hologramů.

Viz také


Zpět na "Sledování očí v mixedrealityToolkit"