Oogkalibratie — MRTK2

Schermopname van de melding voor oogkalibratie

Overzicht

Als oogtracering een fundamenteel onderdeel van uw app-ervaring is, kunt u ervoor zorgen dat de oogkalibratie van de gebruiker geldig is. De belangrijkste reden waarom het ongeldig is, is dat de gebruiker ervoor heeft gekozen om de kalibratie van ogentracering over te slaan bij het plaatsen van het apparaat.

Deze pagina bevat de volgende onderwerpen:

  • Beschrijft hoe u detecteert dat een gebruiker ooggekalibreerd is
  • Biedt een voorbeeld voor het activeren van een gebruikersmelding om de gebruiker te instrueren de ogenkalibratie te doorlopen
    • Melding automatisch sluiten als oogkalibratie geldig wordt
    • Melding handmatig sluiten als de gebruiker ervoor kiest om door te gaan zonder kalibratie

De status van de oogkalibratie detecteren

De oogtraceringsconfiguratie in MRTK wordt geconfigureerd via de IMixedRealityEyeGazeProvider interface.

CoreServices.InputSystem.EyeGazeProvider biedt de standaard implementatie van de gaze-provider die tijdens runtime in de toolkit is geregistreerd. IMixedRealityEyeGazeProvider.IsEyeGazeValid retourneert een bool? die null is als er nog geen informatie van de oogtracering beschikbaar is. Zodra de gegevens zijn ontvangen, wordt true of false geretourneerd om aan te geven dat de oogtracering van de gebruiker geldig of ongeldig is.

Voorbeeldmelding voor oogkalibratie - stap voor stap

  1. Open het MRTK-voorbeeldpakket voor oogtracering (Assets/MRTK/Examples/Demos/EyeTracking)

  2. Scène EyeTrackingDemo-00-RootScene.unity laden

  3. Bekijk EyeCalibrationChecker:

    • In deze scène hebben we al een voorbeeld voor het detecteren of de huidige gebruiker is gekalibreerd onder het gameobject EyeCalibrationChecker. Er worden eenvoudigweg een paar tekstmetjes bovenliggend en er zijn enkele extra triggers voor het in- en uitvloeien van de melding. Dit omvat het langzaam vergroten van de grootte en ondoorzichtigheid bij activering. Zodra de melding is gesloten, wordt deze langzaam kleiner en wordt deze uitgevaagd.

    • Gekoppeld aan het gameobject EyeCalibrationChecker is het EyeCalibrationChecker-script dat twee Unity-gebeurtenissen beschikbaar maakt:

      • OnEyeCalibrationDetected()
      • OnNoEyeCalibrationDetected()
    • Deze gebeurtenissen worden alleen geactiveerd als de kalibratiestatus verandert. Als een gebruiker ervoor kiest om de melding te sluiten, wordt de melding pas weer weergegeven als

      • De app wordt opnieuw opgestart
      • Er is een geldige gebruiker gedetecteerd en vervolgens heeft een nieuwe niet-gekalibreerde gebruiker het apparaat ingeschakeld
    • Om te testen of de animaties en gebeurtenissen correct worden geactiveerd, beschikt het Script EyeCalibrationChecker over een bool editorTestUserIsCalibrated vlag. Wanneer u bijvoorbeeld uitvoert in de Unity-editor, kunt u het volgende testen:

      1. Of de melding automatisch wordt weergegeven zodra de kalibratiestatus verandert van true in false
      2. Hiermee wordt aangegeven of de melding automatisch opnieuw wordt gesloten zodra de status is gewijzigd van false in 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;
      }
   }

Zie ook