Ögonstödd navigering i MRTK – MRTK2
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. |
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.
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. |
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. |
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.