Partager via


Gestion de l’étalonnage et de l’accès au suivi oculaire

Le suivi oculaire sur HoloLens 2 fournit des fonctionnalités puissantes pour supercharger les interactions utilisateur. Toutefois, il existe deux points de contrôle utilisateur qui doivent se terminer correctement pour que le suivi oculaire fonctionne dans votre application. Les deux points de contrôle sont (a) l’approbation de l’accès au suivi oculaire pour votre application et (b) l’étalonnage du suivi oculaire sur l’appareil. Le système invite automatiquement à effectuer ces opérations en fonction des besoins, mais il est possible que l’utilisateur refuse accidentellement quelque chose et se bloque. Ce document décrit les meilleures pratiques pour naviguer dans les points de contrôle de suivi oculaire et aider l’utilisateur à réessayer si nécessaire, garantissant ainsi une expérience fluide et de qualité avec votre application.

Demande d’accès

Pour utiliser le suivi oculaire, votre application doit d’abord demander l’accès. Cela se fait par le biais d’un appel à EyesPose ::RequestAccessAsync, qui est documenté dans le guide de développement du regard visuel. Cette fonction déclenche une case activée système pour voir si l’accès du regard est disponible pour votre application. Lors de la première demande d’accès après l’installation, l’utilisateur est invité à entrer une boîte de dialogue d’autorisations. S’ils cliquent sur « Oui », la fonction retourne GazeInputAccessStatus ::Allowed, et vous pouvez passer à autre chose à votre expérience. Toutefois, si l’utilisateur sélectionne « Non », la fonction retourne GazeInputAccessStatus ::D eniedByUser.

Image de la boîte de dialogue autorisations ET HoloLens 2

La boîte de dialogue de demande d’accès n’apparaît qu’une seule fois, au premier lancement de votre application. Une fois que l’utilisateur a fait son choix, le système mémorise sa préférence et l’applique automatiquement à toutes les futures demandes d’accès pour cet utilisateur connecté. Si l’utilisateur souhaite modifier sa préférence ultérieurement, il peut le faire via la section « Autorisations de l’application » de la page « Confidentialité » de l’application « Paramètres » HoloLens. Étant donné que la préférence est collante, l’utilisateur peut malheureusement entrer dans un état où le suivi oculaire est désactivé et il ne sait pas comment le corriger. Si le suivi oculaire est une partie importante de votre expérience d’application et que vous détectez que l’accès au suivi oculaire a été refusé, vous pouvez aider l’utilisateur en lançant directement l’application paramètres sur la page appropriée. Cela se fait par le biais d’un appel à Launcher ::LaunchUriAsync avec la chaîne « ms-settings :privacy-eyetracker ».

using namespace winrt::Windows::System::Launcher;
using namespace winrt::Windows::Foundation;

LaunchUriAsync(Uri(L"ms-settings:privacy-eyetracker"));

Vous devez éviter de lancer automatiquement l’application de paramètres ou d’inviter l’utilisateur à plusieurs reprises. Au lieu de cela, recherchez un emplacement approprié dans votre interface utilisateur où vous pouvez communiquer l’état actuel de l’accès à l’ET, expliquer la valeur du suivi oculaire pour votre application et fournir un bouton permettant à l’utilisateur de la lancer lui-même.

Retard de la demande d’accès

Une raison courante de refuser accidentellement la demande d’accès est que l’utilisateur est spammé par plusieurs fenêtres contextuelles lors du premier lancement de l’application. Une bonne pratique consiste à attendre et à demander l’accès uniquement au premier moment où le suivi oculaire sera utilisé par votre application. Par exemple, la première fois qu’un menu optimisé pour ET s’affiche. Par conséquent, l’utilisateur aura plus de contexte et moins de distraction lors de son choix, ce qui réduit le risque de devoir le modifier ultérieurement.

Considérations relatives à OpenXR

Si vous utilisez OpenXR, les mêmes règles s’appliquent, mais les API qui déclenchent la demande d’accès sont légèrement différentes. Les applications OpenXR demandent automatiquement des autorisations après l’appel à xrCreateSession lors de l’utilisation d’un instance sur lequel l’extension de suivi oculaire (XR_EXT_eye_gaze_interaction) est activée. Pour en savoir plus sur l’utilisation du suivi oculaire via OpenXR, consultez la documentation sur l’extension du regard dans la spécification OpenXR.

Étalonnage des utilisateurs

Une fois que votre application a accès au suivi oculaire, le point de contrôle suivant est l’étalonnage des utilisateurs. À l’instar de la demande d’accès, il existe une API spécifique qui peut déclencher une invite d’interface utilisateur d’étalonnage lorsqu’elle est appelée. L’API est SpatialPointerPose ::Eyes. Notez qu’il s’agit de la même API utilisée pour récupérer les données de pose du regard sur chaque image. En effet, l’accès aux données de suivi oculaire déclenche l’invite d’étalonnage. Pour cette raison, les applications doivent attendre qu’elles ont réellement l’intention d’utiliser les données de pose de suivi oculaire avant d’appeler cette API et éventuellement de déclencher l’invite.

Image de l’invite d’étalonnage ET HoloLens 2

HoloLens met en cache les étalonnages et s’échange automatiquement lorsqu’il détecte qu’un utilisateur étalonné a mis l’appareil sur. Par conséquent, cette invite s’affiche uniquement pour les utilisateurs qui n’ont pas étalonné leur regard sur l’appareil. Si un utilisateur non étalonné appuie sur « Annuler » à l’invite pour refuser l’étalonnage, son regard ne sera disponible pour aucune application sur l’appareil. HoloLens mémorise leur sélection et ne s’invite pas à nouveau tant que l’appareil n’est pas supprimé et remis sous l’appareil. Bien qu’il soit important à des fins de confidentialité, cela peut créer une confusion pour les utilisateurs s’ils annulent accidentellement l’invite ne sont alors pas en mesure d’utiliser le suivi oculaire dans votre application.

Pour case activée si l’utilisateur actuel est étalonné, appelez EyesPose ::IsCalibrationValid. Si l’utilisateur actuel n’est pas étalonné, vous devez idéalement revenir aux interactions qui ne dépendent pas du regard. Toutefois, si le regard est essentiel pour votre expérience et que vous devez vous assurer que tous vos utilisateurs sont étalonnés, vous pouvez appeler manuellement l’application d’étalonnage à l’aide de Launcher ::LaunchUriForResultsAsync avec la chaîne « ms-hololenssetup ://EyeTracking ».

using namespace winrt::Windows::System::Launcher;
using namespace winrt::Windows::Foundation;

winrt::Windows::System::LauncherOptions options;
auto package = winrt::Windows::ApplicationModel::Package::Current();
options.TargetApplicationPackageFamilyName(L"Microsoft.HoloLensSetup_8wekyb3d8bbwe");
winrt::Windows::System::Launcher::LaunchUriForResultsAsync(winrt::Windows::Foundation::Uri(L"ms-hololenssetup://EyeTracking"), options);

LaunchUriForResultsAsync est un frère de l’API LaunchUriAsync, plus connue, qui a déjà été suggérée comme méthode de lancement de l’application d’étalonnage. Toutefois, la méthode LaunchUriAsync ne garantit pas un retour à votre application une fois l’étalonnage terminé. Dans la plupart des cas, il retourne simplement à l’interpréteur de commandes. L’API LaunchUriForResultsAsync garantit un retour à votre application et constitue donc une bien meilleure expérience pour l’utilisateur.

LaunchUriForResultsAsync nécessite un paramètre « options » supplémentaire avec la propriété « TargetApplicationPackageFamilyName » définie pour correspondre à l’application d’installation HoloLens. Si vous avez besoin de la chaîne de nom de famille de packages pour une application installée sur votre HoloLens, vous pouvez la trouver dans la section « Applications : applications installées » du portail d’appareil Windows sous « PackageRelativeId ». Il suffit de supprimer le " ! App » caractères de la fin de la chaîne.

Image d’une partie de la page des applications installées dans le port d’appareil Windows

Les applications ne doivent jamais lancer l’étalonnage du regard automatiquement et sans intervention de l’utilisateur. Comme pour la demande d’accès, nous vous recommandons de trouver un emplacement approprié dans votre interface utilisateur où vous pouvez afficher les status d’étalonnage, communiquer la valeur du suivi oculaire pour votre application et fournir un bouton permettant à l’utilisateur de lancer lui-même l’étalonnage.

Considérations relatives à OpenXR

Si vous utilisez OpenXR, les mêmes modèles s’appliquent, mais l’API qui déclenche l’invite d’étalonnage est légèrement différente. Dans OpenXR, l’invite se déclenche pour les utilisateurs non calibrés lors du premier appel à xrSyncActions avec une action de regard oculaire activée. Pour en savoir plus sur l’utilisation du suivi oculaire via OpenXR, consultez la documentation sur l’extension du regard dans la spécification OpenXR.