Ögonstödd navigering i MRTK – MRTK2

MRTK

Anta att du läser information på en skiffer och när du når slutet av den visade texten rullar texten automatiskt uppåt för att visa mer innehåll. Eller så kan du zooma in där du tittar. Kartan justerar också innehållet automatiskt för att hålla saker av intresse inom ditt synfält. Ett annat intressant program är handsfree-observationen av 3D-hologram genom att automatiskt ta med de delar av hologrammet som du tittar på framtill. Det här är några av de exempel som beskrivs på den här sidan i samband med navigering med ögonstöd.

Följande beskrivningar förutsätter att du redan är bekant med hur du konfigurerar ögonspårning i MRTK-scenen och grunderna i att komma åt ögonspårningsdata i MRTK Unity. Exemplen som beskrivs i följande är alla en del av EyeTrackingDemo-03-Navigation scenen (Assets/MRTK/Examples/Demos/EyeTracking/Scenes/EyeTrackingDemo-03-Navigation).

Sammanfattning: Automatisk rullning av text, blickstödd panorering och zoomning av en virtuell karta, handsfree blickstyrd 3D-rotation.

Rulla automatiskt

Automatisk rullning gör det möjligt för användaren att bläddra igenom texter utan att lyfta ett finger. Fortsätt bara att läsa så rullas texten automatiskt uppåt eller nedåt beroende på var användaren letar. Du kan börja med exemplet i EyeTrackingDemo-03-Navigation (Assets/MRTK/Examples/Demos/EyeTracking/Scenes). I det här exemplet används en TextMesh-komponent för att flexibelt läsa in och formatera ny text. Om du vill aktivera automatisk rullning lägger du helt enkelt till följande två skript i din collider-komponent i textrutan:

ScrollRectTransf

Om du vill bläddra igenom en TextMesh eller mer allmänt sett en RectTransform-komponent kan du använda ScrollRectTransf-skriptet . Om du vill bläddra igenom en struktur i stället för en RectTransform använder du ScrollTexture i stället för ScrollRectTransf. I följande förklaras parametrarna för ScrollRectTransf som är tillgängliga i Unity Editor i detalj:

Parametrar Description
LimitPanning Om det här alternativet är aktiverat stoppas det rullningsbara innehållet vid gränsen.
RectTransfToNavigate Referens till RectTransform för att rulla in.
RefToViewport Referens till den överordnade rectTransformen för det rullningsbara innehållet för att fastställa rätt förskjutning och gräns.
AutoGazeScrollIsActive Om den är aktiverad rullas texten automatiskt om användaren tittar på en aktiv region (t.ex. den övre och nedre delen av rullningspanelen om den lodräta rullningshastigheten inte är noll).
ScrollSpeed_x Om värdet har angetts till ett värde som inte är lika med noll aktiveras vågrät rullning. Negativa värden innebär en ändring i rullningsriktningen: Från vänster till höger jämfört med höger till vänster.
ScrollSpeed_y Om värdet är ojämnt inställt på noll aktiveras lodrät rullning. Negativa värden innebär en ändring i rullningsriktningen: Upp till ned jämfört med upp till uppåt.
MinDistFromCenterForAutoScroll Normaliserade minimalt avstånd i x och y från mitten av målets träffruta (0, 0) för att rulla. Därför måste värdena ligga mellan 0 (rulla alltid) och 0,5 (ingen rullning).
UseSkimProofing Om det här alternativet är aktiverat förhindrar det plötsliga rullningsrörelser när du snabbt ser dig omkring. Detta kan dock göra att rullningen känns mindre responsiv. Den kan finjusteras med värdet SkimProofUpdateSpeed .
SkimProofUpdateSpeed Ju lägre värde desto långsammare blir rullningen snabbare efter skimming. Rekommenderat värde: 5.

Rullningskonfiguration med ögonstöd i Unity

EyeTrackingTarget

Genom att koppla EyeTrackingTarget-komponenten kan du hantera ögonögarelaterade händelser på ett flexibelt sätt. Rullningsexemplet visar rullningstext som startar när användaren tittar på panelen och stoppar när användaren tittar bort från den. Rullningskonfiguration med ögonstöd i Unity: EyeTrackingTarget

Blickstödd panorering och zoomning

Vem har inte använt en virtuell karta tidigare för att söka efter sitt hem eller för att utforska helt nya platser? Ögonspårning gör att du direkt kan dyka in i exakt de delar som du är intresserad av och när du väl zoomat in, kan du smidigt följa en gata för att utforska ditt grannskap! Detta är inte bara användbart för att utforska geografiska kartor, utan också för att kolla in detaljer i fotografier, datavisualiseringar eller till och med live-strömmade medicinska bilder. Det är enkelt att använda den här funktionen i din app! För innehåll som återges i en textur (t.ex. ett foto, strömmade data) lägger du helt enkelt till PanZoomTexture-skriptet . För en RectTransform använder du PanZoomRectTransf. Genom att utöka funktionen Autorullning kan vi i princip rulla både lodrätt och vågrätt samtidigt och förstora innehållet runt användarens aktuella fokuspunkt.

Parametrar Description
LimitPanning Om det här alternativet är aktiverat stoppas det rullningsbara innehållet vid gränsen.
HandZoomEnabledOnStartup Anger om handgester aktiveras automatiskt för att utföra en zoomgest. Du kanske vill inaktivera det först för att undvika att zoomåtgärder utlöses av misstag.
RendererOfTextureToBeNavigated Refererad renderare av den textur som ska navigeras.
Zoom_Acceleration Zoomacceleration som definierar brantheten i mappningen av funktionen för logistisk hastighet.
Zoom_SpeedMax Maximal zoomhastighet.
Zoom_MinScale Minsta skala för textur för zoomning - t.ex. 0,5f (hälften av den ursprungliga storleken).
Zoom_MaxScale Maximal skala för textur för utzoomning - t.ex. 1f (ursprunglig storlek) eller 2,0f (dubbelt så stor som originalstorleken).
Zoom_TimeInSecToZoom Timerad zoom: När den har utlösts utförs en in-/utzoomning under den angivna tiden i sekunder.
Zoom_Gesture Typ av handgest som ska användas för att zooma in/ut.
--- ---
Pan_AutoScrollIsActive Om den är aktiverad rullas texten automatiskt om användaren tittar på en aktiv region (t.ex. den övre och nedre delen av rullningspanelen om den lodräta rullningshastigheten inte är noll).
Pan_Speed_x Om värdet har angetts till ett värde som inte är lika med noll aktiveras vågrät rullning. Negativa värden innebär en ändring i rullningsriktningen: Från vänster till höger jämfört med höger till vänster.
Pan_Speed_y Om värdet är ojämnt inställt på noll aktiveras lodrät rullning. Negativa värden innebär en ändring i rullningsriktningen: Upp till ned jämfört med upp till uppåt.
Pan_MinDistFromCenter Normaliserade minimalt avstånd i x och y från mitten av målets träffruta (0, 0) för att rulla. Därför måste värdena ligga mellan 0 (rulla alltid) och 0,5 (ingen rullning).
UseSkimProofing Om det här alternativet är aktiverat förhindrar det plötsliga rullningsrörelser när du snabbt ser dig omkring. Detta kan dock göra att rullningen känns mindre responsiv. Den kan finjusteras med värdet SkimProofUpdateSpeed .
SkimProofUpdateSpeed Ju lägre värde desto långsammare blir rullningen snabbare efter skimming. Rekommenderat värde: 5.

Ögonstödd panorering och zoomkonfiguration i Unity

Uppmärksamhetsbaserad 3D-rotation

Tänk dig att titta på ett 3D-objekt och de delar du vill se mer magiskt vända sig mot dig - som om systemet skulle läsa ditt sinne och veta att vända objektet mot dig! Det är idén till uppmärksamhetsbaserade 3D-rotationer som gör att du kan undersöka hela sidan av ett hologram utan att lyfta ett finger. Om du vill aktivera det här beteendet lägger du helt enkelt till skriptet OnLookAtRotateByEyeGaze i delen av ditt GameObject med en Collider-komponent . Du kan justera flera parametrar som anges nedan för att begränsa hur snabbt och i vilka riktningar hologrammet ska vändas.

Som du kan föreställa dig kan det här beteendet vara aktivt hela tiden snabbt bli ganska distraherande i en fullsatt scen. Det är därför du kanske vill börja med det här beteendet inaktiverat och sedan aktivera det snabbt med röstkommandon. Alternativt har vi lagt till ett exempel i EyeTrackingDemo-03-Navigation (Assets/MRTK/Examples/Demos/EyeTracking/Scenes) för att använda TargetMoveToCamera där du kan välja ett fokuserat mål och det flyger framför dig – säg bara "Kom till mig".

När du är i nära läge aktiveras automatiskt autoroteringsläget. I det läget kan du observera det från alla sidor antingen helt enkelt luta sig tillbaka och titta på det, gå runt det eller sträcka ut för att ta tag i och rotera det med handen. När du stänger målet (se & nyp eller säg "Skicka tillbaka") återgår det till sin ursprungliga plats och slutar reagera på dig på avstånd.

Parametrar Description
SpeedX Horisontell rotationshastighet.
Snabb Vertikal rotationshastighet.
InverseX För att invertera den vågräta rotationsriktningen.
Invertera För att invertera den lodräta rotationsriktningen.
RotationThreshInDegrees Om vinkeln mellan "Blick till mål" och "Kamera till mål" är mindre än det här värdet, gör ingenting. Detta är för att förhindra små jittery rotationer..
MinRotX Minsta vågräta rotationsvinkel. Detta är för att begränsa rotationen i olika riktningar.
MaxRotX Maximal vågrät rotationsvinkel. Detta är för att begränsa rotationen i olika riktningar.
MinRotY Minimal vertikal rotationsvinkel för att begränsa rotationen runt x-axeln.
MaxRotY Maximal vertikal rotationsvinkel för att begränsa rotationen runt y-axeln.

Ögonstödd 3D-rotationskonfiguration i Unity

Sammanfattningsvis bör skripten ovan göra det möjligt för dig att komma igång med att använda blick för olika indatanavigeringsuppgifter, till exempel rulla texter, zooma och panorera texturer samt rotera undersöka 3D-hologram.

Se även


Tillbaka till "Ögonspårning i MixedRealityToolkit"