Étalonnage oculaire — MRTK2
Vue d’ensemble
Si le suivi oculaire est un élément fondamental de votre expérience d’application, vous pouvez vous assurer que l’étalonnage des yeux de l’utilisateur est valide. La main raison pour laquelle il n’est pas valide est que l’utilisateur a choisi d’ignorer l’étalonnage du suivi oculaire lors de la mise sur l’appareil.
Cette page couvre les éléments suivants :
- Décrit comment détecter qu’un utilisateur est étalonné pour les yeux
- Fournit un exemple de déclenchement d’une notification à l’utilisateur pour demander à l’utilisateur de passer par l’étalonnage oculaire
- Ignorer automatiquement la notification si l’étalonnage oculaire devient valide
- Ignorer manuellement la notification si l’utilisateur choisit de continuer sans étalonnage
Comment détecter l’état d’étalonnage des yeux
La configuration du suivi oculaire dans MRTK est configurée via l’interface IMixedRealityEyeGazeProvider
.
L’utilisation de CoreServices.InputSystem.EyeGazeProvider fournit l’implémentation du fournisseur de regards par défaut inscrite dans le kit de ressources au moment de l’exécution.
IMixedRealityEyeGazeProvider.IsEyeGazeValid
retourne un bool?
qui est null si aucune information du suivi oculaire n’est encore disponible.
Une fois les données reçues, elle retourne true ou false pour indiquer que l’étalonnage du suivi oculaire de l’utilisateur est valide ou non valide.
Exemple de notification d’étalonnage des yeux - étape par étape
Ouvrez le package d’exemple de suivi oculaire MRTK (Assets/MRTK/Examples/Demos/EyeTracking)
Charger la scène EyeTrackingDemo-00-RootScene.unity
Consultez EyeCalibrationChecker :
Dans cette scène, nous avons déjà un exemple pour détecter si l’utilisateur actuel est étalonné sous l’objet de jeu EyeCalibrationChecker. Il crée simplement quelques maillages de texte et comporte des déclencheurs supplémentaires pour fusionner la notification. Cela inclut l’augmentation lente de sa taille et de son opacité lors de l’activation. Une fois la notification ignorée, elle diminue lentement sa taille et disparaît.
Attaché à l’objet de jeu EyeCalibrationChecker est le script EyeCalibrationChecker qui expose deux événements Unity :
OnEyeCalibrationDetected()
OnNoEyeCalibrationDetected()
Ces événements se déclenchent uniquement si le status d’étalonnage change. Par conséquent, si un utilisateur choisit d’ignorer la notification, la notification n’apparaît pas à nouveau tant que
- L’application est redémarrée
- Un utilisateur valide a été détecté, puis un nouvel utilisateur non étalonné a mis l’appareil sur
Pour tester si les animations et les événements sont déclenchés correctement, le script EyeCalibrationChecker possède un
bool editorTestUserIsCalibrated
indicateur. Par exemple, lors de l’exécution dans l’éditeur Unity, vous pouvez tester :- Si la notification s’affiche automatiquement une fois que l’étalonnage status passe de true à false
- Indique s’il ferme automatiquement la notification une fois que le status passe de false à true.
private bool? prevCalibrationStatus = null;
...
void Update()
{
// Get the latest calibration state from the EyeGazeProvider
bool? calibrationStatus = CoreServices.InputSystem?.EyeGazeProvider?.IsEyeCalibrationValid;
...
if (calibrationStatus != null)
{
if (prevCalibrationStatus != calibrationStatus)
{
if (calibrationStatus == false)
{
OnNoEyeCalibrationDetected.Invoke();
}
else
{
OnEyeCalibrationDetected.Invoke();
}
prevCalibrationStatus = calibrationStatus;
}
}