Door ogen ondersteunde navigatie in MRTK
Imagine u informatie leest op een lei en wanneer u het einde van de weergegeven tekst bereikt, schuift de tekst automatisch omhoog om meer inhoud weer te geven. U kunt ook vloeiend inzoomen waar u naar kijkt. De kaart past ook automatisch de inhoud aan om de interesse in uw weergaveveld te behouden. Een andere interessante toepassing is de handsfree observatie van 3D-hologrammen door automatisch de onderdelen van het hologram te brengen die u aan de voorzijde bekijkt. Dit zijn enkele van de voorbeelden die op deze pagina worden beschreven in de context van navigatie die door het oog wordt ondersteund.
In de volgende beschrijvingen wordt ervan uitgegaan dat u al bekend bent met het instellen van oogtracking in uw MRTK-scène en met de basisbeginselen van het openen van oogtrackinggegevens in MRTK Unity.
De voorbeelden die in het volgende worden besproken, maken 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 ondersteunde pan en zoom van een virtuele kaart, handsfree 3D-draaiing.
Automatisch schuiven
Met automatisch schuiven kan de gebruiker door teksten schuiven zonder een vinger op te heffen.
Ga gewoon verder met lezen en de tekst schuift automatisch omhoog of omlaag, afhankelijk van waar de gebruiker zoekt.
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 nieuwe tekst flexibel te laden en op te maken.
Als u automatisch schuiven wilt inschakelen, voegt u de volgende twee scripts toe aan uw collideronderdeel van het tekstvak:
ScrollRectTransf
Als u door een TextMesh of meer algemeen een RectTransform-onderdeel wilt schuiven, kunt u het ScrollRectTransf-script gebruiken. Als u door een patroon wilt schuiven in plaats van 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 | Beschrijving |
---|---|
LimitPanning | Als deze optie is ingeschakeld, stopt u de schuifbare inhoud op de grens. |
RectTransfToNavigate | Verwijzing naar het RectTransform om in te schuiven. |
RefToViewport | Verwijzing naar het 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 schuifpaneel als de verticale schuifsnelheid niet nul is). |
ScrollSpeed_x | Als deze optie is ingesteld op een waarde die niet gelijk is aan nul, wordt horizontaal schuiven ingeschakeld. Negatieve waarden betekenen een wijziging in schuifrichting: van links naar rechts versus van rechts naar links. |
ScrollSpeed_y | Als deze optie is ingesteld op een waarde die niet gelijk is aan nul, wordt verticaal schuiven ingeschakeld. Negatieve waarden betekenen een wijziging in schuifrichting: omhoog naar beneden versus omlaag tot omhoog. |
MinDistFromCenterForAutoScroll | Genormaliseerde minimale afstand in x en y van het midden van het drukvak van het doel (0, 0) om te schuiven. Waarden moeten dus variëren tussen 0 (altijd schuiven) en 0,5 (geen schuif). |
UseSkimProofing | Als deze optie is ingeschakeld, voorkomt u plotselinge scrollbewegingen wanneer u snel rondklikken. Hierdoor kan het schuiven minder responsief zijn. Het kan worden afgestemd met de SkimProofUpdateSpeed-waarde . |
SkimProofUpdateSpeed | Hoe lager de waarde, hoe langzamer het schuiven na het schuiven zal versnellen. Aanbevolen waarde: 5. |
EyeTrackingTarget
Door het EyeTrackingTarget-onderdeel te koppelen, kunnen oogklikken gerelateerde gebeurtenissen flexibel worden verwerkt.
Het voorbeeld van het scrollen toont het schuiven van tekst die begint wanneer de gebruiker naar het deelvenster kijkt en stopt wanneer de gebruiker wegklikken .
Pannen en zoomen die worden ondersteund
Wie heeft nog geen virtuele kaart gebruikt om naar hun huis te zoeken of om volledig nieuwe plaatsen te verkennen? Met oogtracering kunt u direct inzoomen op de delen waarin u geïnteresseerd bent en eenmaal ingezoomd, kunt u de loop van een straat soepel 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 gestreamde medische beelden. Als u deze mogelijkheid in uw app wilt gebruiken, is dit eenvoudig. Voor inhoud die wordt weergegeven in een bitmappatroon (bijvoorbeeld een foto, gestreamde gegevens), voegt u het PanZoomTexture-script toe. Gebruik PanZoomRectTransf voor een RectTransform. Door de functie Automatisch schuiven uit te breiden, kunnen we in feite zowel verticaal als horizontaal tegelijk schuiven en inhoud direct rond het huidige focuspunt van de gebruiker vergroten.
Parameters | Beschrijving |
---|---|
LimitPanning | Als deze optie is ingeschakeld, stopt u de schuifbare inhoud op de grens. |
HandZoomEnabledOnStartup | Hiermee wordt aangegeven of handbewegingen automatisch zijn ingeschakeld om een zoombeweging uit te voeren. Misschien wilt u deze in eerste instantie uitschakelen om te voorkomen dat per ongeluk zoomacties worden geactiveerd. |
RendererOfTextureToBeNavigated | Verwijst naar renderer van het patroon dat moet worden genavigeerd. |
Zoom_Acceleration | Zoomversnelling die de steilheid van logistieke snelheidsfunctietoewijzing 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 (dubbel de oorspronkelijke grootte). |
Zoom_TimeInSecToZoom | Getimede zoom: zodra deze is geactiveerd, wordt een in-/uitzoom 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 schuifpaneel als de verticale schuifsnelheid niet nul is). |
Pan_Speed_x | Als deze optie is ingesteld op een waarde die niet gelijk is aan nul, wordt horizontaal schuiven ingeschakeld. Negatieve waarden betekenen een wijziging in schuifrichting: van links naar rechts versus van rechts naar links. |
Pan_Speed_y | Als deze optie is ingesteld op een waarde die niet gelijk is aan nul, wordt verticaal schuiven ingeschakeld. Negatieve waarden betekenen een wijziging in schuifrichting: omhoog naar beneden versus omlaag tot omhoog. |
Pan_MinDistFromCenter | Genormaliseerde minimale afstand in x en y van het midden van het drukvak van het doel (0, 0) om te schuiven. Waarden moeten dus variëren tussen 0 (altijd schuiven) en 0,5 (geen schuif). |
UseSkimProofing | Als deze optie is ingeschakeld, voorkomt u plotselinge scrollbewegingen wanneer u snel rondklikken. Hierdoor kan het schuiven minder responsief zijn. Het kan worden afgestemd met de SkimProofUpdateSpeed-waarde . |
SkimProofUpdateSpeed | Hoe lager de waarde, hoe langzamer het schuiven na het schuiven zal versnellen. Aanbevolen waarde: 5. |
Op aandacht gebaseerde 3D-draaiing
Imagine kijken naar een 3D-object en de onderdelen die u dichter bij u wilt zien, keren zich naar u toe, 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 zijden 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 aanpassen die hieronder worden vermeld om te beperken hoe snel en in welke richting het hologram wordt omgedraaid.
Zoals u zich kunt voorstellen, kan het feit dat dit gedrag altijd actief is, snel leidend worden in een drukke scène.
Daarom wilt u misschien beginnen met dit gedrag uitgeschakeld en vervolgens snel inschakelen met behulp van spraakopdrachten.
U kunt ook een voorbeeld toevoegen in EyeTrackingDemo-03-Navigation
(Assets/MRTK/Examples/Demos/EyeTracking/Scènes) om TargetMoveToCamera te gebruiken waarvoor u een gericht doel kunt selecteren en het vliegt voor u - gewoon 'Kom naar mij'.
Eenmaal in de nabije modus wordt de modus voor automatisch draaien ingeschakeld. In die modus kunt u het van alle kanten bekijken door gewoon terug te leunen en ernaar te kijken, er rond te lopen of om het met uw hand te pakken en te draaien. Wanneer u het doel negeert (knijp of &"Terugsturen"), keert deze terug naar de oorspronkelijke locatie en reageert u niet meer van ver.
Parameters | Beschrijving |
---|---|
SpeedX | Horizontale draaisnelheid. |
Snelle | Verticale draaisnelheid. |
InverseX | De horizontale draairichting omkeren. |
InverseY | De verticale draairichting omkeren. |
RotationThreshInDegrees | Als de hoek tussen 'Gaze to Target' en 'Camera to Target' kleiner is dan deze waarde, doet u niets. Dit is om kleine jittery rotaties te voorkomen.. |
MinRotX | Minimale horizontale draaihoek. Dit is om de draaiing in verschillende richtingen te beperken. |
MaxRotX | Maximale horizontale draaihoek. Dit is om de draaiing 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. |
Kortom, met de bovenstaande scripts kunt u aan de slag gaan met het gebruik van oogklikken voor verschillende invoernavigatietaken, zoals het schuiven van teksten, zoomen en pannen van patronen en het draaien van 3D-hologrammen.