Door ogen ondersteunde navigatie in MRTK — MRTK2
Stel dat u informatie op een lei leest en wanneer u het einde van de weergegeven tekst bereikt, schuift de tekst automatisch omhoog om meer inhoud weer te geven. Of u kunt vloeiend inzoomen waar u naar kijkt. De kaart past ook automatisch de inhoud aan om de interessante dingen binnen uw gezichtsveld te houden. Een andere interessante toepassing is het handsfree observeren van 3D-hologrammen door de delen van het hologram die u bekijkt automatisch naar voren te brengen. Dit zijn enkele voorbeelden die op deze pagina worden beschreven in de context van door ogen ondersteunde navigatie.
In de volgende beschrijvingen wordt ervan uitgegaan dat u al bekend bent met het instellen van oogtracering in uw MRTK-scène en met de basisbeginselen van het openen van oogtraceringsgegevens in MRTK Unity.
De voorbeelden die hieronder worden besproken, maken allemaal deel uit van de EyeTrackingDemo-03-Navigation
scène (Assets/MRTK/Examples/Demos/EyeTracking/Scenes/EyeTrackingDemo-03-Navigation).
Samenvatting: Automatisch schuiven van tekst, door ogen kijken ondersteund pannen en zoomen van een virtuele kaart, hands-free star-gerichte 3D-draaiing.
Automatisch schuiven
Met Automatisch schuiven kan de gebruiker door teksten schuiven zonder een vinger op te tillen.
Ga gewoon door met lezen en de tekst schuift automatisch omhoog of omlaag, afhankelijk van waar de gebruiker naar op zoek is.
U kunt beginnen met het voorbeeld in EyeTrackingDemo-03-Navigation
(Assets/MRTK/Examples/Demos/EyeTracking/Scenes).
In dit voorbeeld wordt een TextMesh-onderdeel gebruikt om flexibel nieuwe tekst te laden en op te maken.
Als u automatisch schuiven wilt inschakelen, voegt u de volgende twee scripts toe aan het collider-onderdeel van het tekstvak:
ScrollRectTransf
Als u door een TextMesh of meer in het algemeen een RectTransform-onderdeel wilt schuiven, kunt u het script ScrollRectTransf gebruiken. Als u door een patroon wilt schuiven in plaats van door een RectTransform, gebruikt u ScrollTexture in plaats van ScrollRectTransf. In het volgende worden de parameters van ScrollRectTransf die beschikbaar zijn in de Unity-editor gedetailleerder uitgelegd:
Parameters | Description |
---|---|
LimitPanning | Als deze optie is ingeschakeld, wordt de schuifbare inhoud bij de grens gestopt. |
RectTransfToNavigate | Verwijzing naar de RectTransform om in te schuiven. |
RefToViewport | Verwijzing naar de bovenliggende RectTransform van de schuifbare inhoud om de juiste verschuiving en grens te bepalen. |
AutoGazeScrollIsActive | Als deze optie is ingeschakeld, schuift de tekst automatisch als de gebruiker naar een actief gebied kijkt (bijvoorbeeld het bovenste en onderste deel van het schuifvenster als de verticale schuifsnelheid niet nul is). |
ScrollSpeed_x | Als deze waarde is ingesteld op een waarde die niet gelijk is aan nul, wordt horizontaal schuiven ingeschakeld. Negatieve waarden betekenen een wijziging in de schuifrichting: van links naar rechts versus van rechts naar links. |
ScrollSpeed_y | Als dit is ingesteld op een waarde die niet gelijk is aan nul, wordt verticaal schuiven ingeschakeld. Negatieve waarden betekenen een wijziging in de schuifrichting: omhoog naar beneden versus omlaag naar omhoog. |
MinDistFromCenterForAutoScroll | Genormaliseerde minimale afstand in x en y van het midden van het treffervak van het doel (0, 0) om te schuiven. Waarden moeten dus liggen tussen 0 (altijd schuiven) en 0,5 (geen schuif). |
UseSkimProofing | Als deze optie is ingeschakeld, voorkomt u plotselinge schuifbewegingen bij snel rondkijken. Hierdoor voelt scrollen mogelijk minder snel aan. Deze kan worden afgestemd op de waarde SkimProofUpdateSpeed . |
SkimProofUpdateSpeed | Hoe lager de waarde, hoe langzamer het schuiven wordt na het skimmen. Aanbevolen waarde: 5. |
EyeTrackingTarget
Door het onderdeel EyeTrackingTarget te koppelen, kunnen gebeurtenissen met betrekking tot het oog flexibel worden verwerkt. In het schuifvoorbeeld ziet u schuiftekst die wordt gestart wanneer de gebruiker het deelvenster bekijkt en stopt wanneer de gebruiker er weg kijkt .
Met blik ondersteund pannen en zoomen
Wie heeft nog niet eerder een virtuele kaart gebruikt om te zoeken naar hun huis of om volledig nieuwe plaatsen te verkennen? Oogtracering stelt u in staat om direct in de onderdelen te duiken waarin u geïnteresseerd bent en eenmaal ingezoomd, kunt u soepel de loop van een straat volgen om uw buurt te verkennen! Dit is niet alleen handig voor het verkennen van geografische kaarten, maar ook voor het bekijken van details in foto's, gegevensvisualisaties of zelfs live gestreamde medische beelden. U kunt deze mogelijkheid eenvoudig gebruiken in uw app. Voor inhoud die wordt weergegeven in een patroon (bijvoorbeeld een foto, gestreamde gegevens), voegt u het script PanZoomTexture toe. Voor een RectTransform gebruikt u PanZoomRectTransf. Door de mogelijkheid voor automatisch schuiven uit te breiden, kunnen we in feite zowel verticaal als horizontaal tegelijk schuiven en inhoud vergroten rond het huidige focuspunt van de gebruiker.
Parameters | Description |
---|---|
LimitPanning | Als deze optie is ingeschakeld, wordt de schuifbare inhoud bij de grens gestopt. |
HandZoomEnabledOnStartup | Hiermee wordt aangegeven of handbewegingen automatisch worden ingeschakeld om een zoombeweging uit te voeren. U kunt deze optie in eerste instantie uitschakelen om te voorkomen dat er per ongeluk zoomacties worden geactiveerd. |
RendererOfTextureToBeNavigated | Renderer waarnaar wordt verwezen van het patroon dat moet worden genavigeerd. |
Zoom_Acceleration | Zoomversnelling die de steilheid van de toewijzing van logistieke snelheidsfuncties definieert. |
Zoom_SpeedMax | Maximale zoomsnelheid. |
Zoom_MinScale | Minimale schaal van het patroon voor inzoomen, bijvoorbeeld 0,5f (de helft van de oorspronkelijke grootte). |
Zoom_MaxScale | Maximale schaal van het patroon voor uitzoomen, bijvoorbeeld 1f (de oorspronkelijke grootte) of 2,0f (het dubbele van de oorspronkelijke grootte). |
Zoom_TimeInSecToZoom | Zoomen met een time-out: zodra deze is geactiveerd, wordt in-/uitzoomen uitgevoerd voor de opgegeven hoeveelheid tijd in seconden. |
Zoom_Gesture | Type handbeweging dat moet worden gebruikt om in/uit te zoomen. |
--- | --- |
Pan_AutoScrollIsActive | Als deze optie is ingeschakeld, schuift de tekst automatisch als de gebruiker naar een actief gebied kijkt (bijvoorbeeld het bovenste en onderste deel van het schuifvenster als de verticale schuifsnelheid niet nul is). |
Pan_Speed_x | Als deze waarde is ingesteld op een waarde die niet gelijk is aan nul, wordt horizontaal schuiven ingeschakeld. Negatieve waarden betekenen een wijziging in de schuifrichting: van links naar rechts versus van rechts naar links. |
Pan_Speed_y | Als dit is ingesteld op een waarde die niet gelijk is aan nul, wordt verticaal schuiven ingeschakeld. Negatieve waarden betekenen een wijziging in de schuifrichting: omhoog naar beneden versus omlaag naar omhoog. |
Pan_MinDistFromCenter | Genormaliseerde minimale afstand in x en y van het midden van het treffervak van het doel (0, 0) om te schuiven. Waarden moeten dus liggen tussen 0 (altijd schuiven) en 0,5 (geen schuif). |
UseSkimProofing | Als deze optie is ingeschakeld, voorkomt u plotselinge schuifbewegingen bij snel rondkijken. Hierdoor voelt scrollen mogelijk minder snel aan. Deze kan worden afgestemd op de waarde SkimProofUpdateSpeed . |
SkimProofUpdateSpeed | Hoe lager de waarde, hoe langzamer het schuiven wordt na het skimmen. Aanbevolen waarde: 5. |
Op aandacht gebaseerde 3D-rotatie
Stel u voor dat u naar een 3D-object kijkt en de onderdelen die u meer wilt zien, zich op magische wijze naar u toe keren - alsof het systeem uw gedachten zou lezen en weet dat u het item naar u toe moet draaien! Dat is het idee voor op aandacht gebaseerde 3D-rotaties waarmee u alle kanten van een hologram kunt onderzoeken zonder een vinger op te tillen. Als u dit gedrag wilt inschakelen, voegt u het script OnLookAtRotateByEyeGaze toe aan het deel van uw GameObject met een Collider-onderdeel . U kunt verschillende parameters die hieronder worden vermeld aanpassen om te beperken hoe snel en in welke richting het hologram wordt uitgevoerd.
Zoals u zich kunt voorstellen, kan het hebben van dit gedrag te allen tijde behoorlijk afleidend worden in een drukke scène.
Daarom wilt u mogelijk beginnen met dit gedrag uitgeschakeld en vervolgens snel inschakelen met behulp van spraakopdrachten.
We hebben ook een voorbeeld toegevoegd in EyeTrackingDemo-03-Navigation
(Assets/MRTK/Examples/Demos/EyeTracking/Scenes) om TargetMoveToCamera te gebruiken, waarvoor u een gericht doel kunt selecteren en het voor u in de gaten wordt geslagen. Zeg gewoon 'Kom naar mij'.
Eenmaal in de bijna-modus wordt de modus voor automatisch draaien automatisch ingeschakeld. In die modus kun je het van alle kanten observeren, ofwel gewoon achterover leunend en ernaar kijken, er omheen lopen of ernaartoe reiken om het te pakken en te draaien met je hand. Wanneer u het doel negeert (kijk & knijpen of 'Terugsturen' zeggen), keert het terug naar de oorspronkelijke locatie en reageert het van veraf niet meer op u.
Parameters | Description |
---|---|
SpeedX | Horizontale draaisnelheid. |
Snelle | Verticale draaisnelheid. |
InverseX | De horizontale draairichting omkeren. |
Inversey | De verticale draairichting omkeren. |
RotationThreshInDegrees | Als de hoek tussen 'Staren naar doel' en 'Camera naar doel' kleiner is dan deze waarde, doet u niets. Dit is om kleine jittery rotaties te voorkomen.. |
MinRotX | Minimale horizontale draaihoek. Dit is om de rotatie in verschillende richtingen te beperken. |
MaxRotX | Maximale horizontale draaihoek. Dit is om de rotatie in verschillende richtingen te beperken. |
MinRoty | Minimale verticale draaihoek om de rotatie rond de x-as te beperken. |
MaxRotY | Maximale verticale draaihoek om de rotatie rond de y-as te beperken. |
Samengevat moeten de bovenstaande scripts u in staat stellen om ogen staren te gebruiken voor verschillende invoernavigatietaken, zoals het schuiven van tekst, zoomen en pannen, en het roteren van 3D-hologrammen.