Navigation prise en charge visuelle dans MRTK — MRTK2
Imaginez que vous lisez des informations sur une ardoise et que lorsque vous atteignez la fin du texte affiché, le texte défile automatiquement vers le haut pour révéler plus de contenu. Vous pouvez également effectuer un zoom fluide là où vous regardez. La carte ajuste également automatiquement le contenu pour conserver les éléments intéressants dans votre champ de vision. Une autre application intéressante est l’observation mains libres des hologrammes 3D en plaçant automatiquement les parties de l’hologramme que vous regardez à l’avant. Voici quelques-uns des exemples décrits sur cette page dans le contexte de la navigation prise en charge visuelle.
Les descriptions suivantes supposent que vous êtes déjà familiarisé avec la configuration du suivi oculaire dans votre scène MRTK et avec les principes de base de l’accès aux données de suivi oculaire dans MRTK Unity.
Les exemples présentés ci-dessous font tous partie de la EyeTrackingDemo-03-Navigation
scène (Assets/MRTK/Examples/Demos/EyeTracking/Scenes/EyeTrackingDemo-03-Navigation).
Résumé: Défilement automatique du texte, panoramique pris en charge par les yeux et zoom d’une carte virtuelle, rotation 3D dirigée par le regard libre.
Défilement automatique
Le défilement automatique permet à l’utilisateur de faire défiler les textes sans lever le doigt.
Continuez simplement la lecture et le texte défile automatiquement vers le haut ou vers le bas en fonction de l’endroit où l’utilisateur recherche.
Vous pouvez commencer à partir de l’exemple fourni dans EyeTrackingDemo-03-Navigation
(Assets/MRTK/Examples/Demos/EyeTracking/Scenes).
Cet exemple utilise un composant TextMesh pour permettre le chargement et la mise en forme flexibles du nouveau texte.
Pour activer le défilement automatique, ajoutez simplement les deux scripts suivants à votre composant collider de la zone de texte :
ScrollRectTransf
Pour faire défiler un composant TextMesh ou plus généralement un composant RectTransform , vous pouvez utiliser le script ScrollRectTransf . Si vous souhaitez faire défiler une texture au lieu d’un RectTransform, utilisez ScrollTexture au lieu de ScrollRectTransf. Dans ce qui suit, les paramètres de ScrollRectTransf disponibles dans l’éditeur Unity sont expliqués plus en détail :
Paramètres | Description |
---|---|
LimitPanning | Si cette option est activée, arrête le contenu pouvant faire défiler à sa limite. |
RectTransfToNavigate | Référence à RectTransform à faire défiler. |
RefToViewport | Référence au parent RectTransform du contenu défilant pour déterminer le décalage et la limite corrects. |
AutoGazeScrollIsActive | S’il est activé, le texte défile automatiquement si l’utilisateur regarde une région active (par exemple, la partie supérieure et la partie inférieure de votre panneau de défilement si la vitesse de défilement verticale n’est pas égale à zéro). |
ScrollSpeed_x | Si la valeur est égale à zéro, le défilement horizontal est activé. Les valeurs négatives signifient une modification du sens du défilement : de gauche à droite ou de droite à gauche. |
ScrollSpeed_y | Si la valeur est égale à zéro, le défilement vertical est activé. Les valeurs négatives signifient un changement de sens de défilement : haut vers le bas et bas vers le haut. |
MinDistFromCenterForAutoScroll | Distance minimale normalisée en x et y du centre de la zone d’accès de la cible (0, 0) pour faire défiler. Ainsi, les valeurs doivent être comprises entre 0 (toujours défilement) et 0,5 (aucun défilement). |
UtiliserSkimProofing | S’il est activé, il empêche les mouvements de défilement soudains lors d’une recherche rapide autour de. Cela peut cependant rendre le défilement moins réactif. Il peut être réglé avec la valeur SkimProofUpdateSpeed . |
SkimProofUpdateSpeed | Plus la valeur est faible, plus le défilement est lent après l’écrémage. Valeur recommandée : 5. |
EyeTrackingTarget
L’attachement du composant EyeTrackingTarget permet de gérer de manière flexible les événements liés aux yeux. L’exemple de défilement illustre le défilement du texte qui commence lorsque l’utilisateur regarde le panneau et s’arrête lorsque l’utilisateur le regarde loin de celui-ci.
Panoramique et zoom pris en charge par le regard
Qui n’a jamais utilisé de carte virtuelle auparavant pour rechercher sa maison ou explorer de nouveaux endroits ? Le suivi oculaire vous permet de plonger directement dans les parties qui vous intéressent et une fois zoomé, vous pouvez suivre en douceur le cours d’une rue pour explorer votre quartier ! Cela n’est pas seulement utile pour explorer des cartes géographiques, mais aussi pour consulter des détails dans des photographies, des visualisations de données ou même des images médicales diffusées en direct. Il est facile d’utiliser cette fonctionnalité dans votre application ! Pour le contenu rendu dans une texture (par exemple, une photo, des données diffusées en continu), ajoutez simplement le script PanZoomTexture . Pour un RectTransform , utilisez PanZoomRectTransf. En étendant la fonctionnalité de défilement automatique , nous permettons essentiellement de faire défiler verticalement et horizontalement en même temps et d’agrandir le contenu autour du point de focus actuel de l’utilisateur.
Paramètres | Description |
---|---|
LimitPanning | Si cette option est activée, arrête le contenu pouvant faire défiler à sa limite. |
HandZoomEnabledOnStartup | Indique si les mouvements de la main sont automatiquement activés pour effectuer un mouvement de zoom. Vous souhaiterez peut-être le désactiver au début pour éviter de déclencher accidentellement des actions de zoom. |
RendererOfTextureToBeNavigated | Convertisseur référencé de la texture à parcourir. |
Zoom_Acceleration | Accélération de zoom définissant la pente du mappage de la fonction de vitesse logistique. |
Zoom_SpeedMax | Vitesse de zoom maximale. |
Zoom_MinScale | Échelle minimale de la texture pour le zoom avant, par exemple 0,5f (la moitié de la taille d’origine). |
Zoom_MaxScale | Échelle maximale de la texture pour le zoom arrière , par exemple, 1f (la taille d’origine) ou 2,0f (le double de la taille d’origine). |
Zoom_TimeInSecToZoom | Zoom chronoté : une fois déclenché, un zoom avant/arrière est effectué pour la durée donnée en secondes. |
Zoom_Gesture | Type de mouvement de la main à utiliser pour effectuer un zoom avant/arrière. |
--- | --- |
Pan_AutoScrollIsActive | S’il est activé, le texte défile automatiquement si l’utilisateur regarde une région active (par exemple, la partie supérieure et la partie inférieure de votre panneau de défilement si la vitesse de défilement verticale n’est pas égale à zéro). |
Pan_Speed_x | Si la valeur est égale à zéro, le défilement horizontal est activé. Les valeurs négatives signifient une modification du sens du défilement : de gauche à droite ou de droite à gauche. |
Pan_Speed_y | Si la valeur est égale à zéro, le défilement vertical est activé. Les valeurs négatives signifient un changement de sens de défilement : haut vers le bas et bas vers le haut. |
Pan_MinDistFromCenter | Distance minimale normalisée en x et y du centre de la zone d’accès de la cible (0, 0) pour faire défiler. Ainsi, les valeurs doivent être comprises entre 0 (toujours défilement) et 0,5 (aucun défilement). |
UtiliserSkimProofing | S’il est activé, il empêche les mouvements de défilement soudains lors d’une recherche rapide autour de. Cela peut cependant rendre le défilement moins réactif. Il peut être réglé avec la valeur SkimProofUpdateSpeed . |
SkimProofUpdateSpeed | Plus la valeur est faible, plus le défilement est lent après l’écrémage. Valeur recommandée : 5. |
Rotation 3D basée sur l’attention
Imaginez en regardant un objet 3D et les parties que vous voulez voir de plus près se tournent magiquement vers vous - comme si le système lisait votre esprit et savoir de tourner l’élément vers vous ! C’est l’idée de rotations 3D basées sur l’attention qui vous permettent d’examiner tous les côtés d’un hologramme sans lever le doigt. Pour activer ce comportement, ajoutez simplement le script OnLookAtRotateByEyeGaze à la partie de votre GameObject avec un composant Collider . Vous pouvez ajuster plusieurs paramètres répertoriés ci-dessous pour limiter la vitesse et la direction dans lesquelles l’hologramme va tourner.
Comme vous pouvez l’imaginer, avoir ce comportement actif à tout moment peut rapidement devenir assez distrayant dans une scène bondée.
C’est pourquoi vous pouvez commencer par désactiver ce comportement, puis l’activer rapidement à l’aide de commandes vocales.
Nous avons également ajouté un exemple dans EyeTrackingDemo-03-Navigation
(Assets/MRTK/Examples/Demos/EyeTracking/Scenes) pour utiliser TargetMoveToCamera pour lequel vous pouvez sélectionner une cible ciblée et qui vole devant vous . Dites simplement « Venez à moi ».
Une fois en mode proche, le mode de rotation automatique est automatiquement activé. Dans ce mode, vous pouvez l’observer de tous les côtés, soit simplement en se penchant en arrière et en le regardant, en marchant autour de lui ou en tendant la main pour la saisir et la faire pivoter avec votre main. Lorsque vous ignorez la cible (regardez & pincez ou dites « Renvoyer »), elle retourne à son emplacement d’origine et cesse de vous réagir de loin.
Paramètres | Description |
---|---|
SpeedX | Vitesse de rotation horizontale. |
Rapide | Vitesse de rotation verticale. |
InverseX | Pour inverser la direction de rotation horizontale. |
Inverse | Pour inverser le sens de rotation verticale. |
RotationThreshInDegrees | Si l’angle entre « Regarder sur cible » et « Caméra sur cible » est inférieur à cette valeur, ne faites rien. Cela permet d’éviter les petites rotations instables.. |
MinRotX | Angle de rotation horizontal minimal. Il s’agit de limiter la rotation dans différentes directions. |
MaxRotX | Angle de rotation horizontal maximal. Il s’agit de limiter la rotation dans différentes directions. |
MinRotY | Angle de rotation vertical minimal pour limiter la rotation autour de l’axe X. |
MaxRotY | Angle de rotation vertical maximal pour limiter la rotation autour de l’axe y. |
En résumé, les scripts ci-dessus doivent vous permettre de commencer à utiliser le regard visuel pour diverses tâches de navigation d’entrée, telles que le défilement de textes, le zoom et le mouvement panoramique des textures, ainsi que l’examen par rotation des hologrammes 3D.
Voir aussi
- Configuration mrTK de base pour utiliser le suivi oculaire
- Sélection de la cible prise en charge oculaire