Gaze – MRTK2

Gaze är en form av indata som interagerar med världen baserat på var användaren letar. Blicken finns i två olika smaker

Huvud blick

Denna typ av blick baseras på den riktning som huvudet / kameran tittar på. Huvud blick är aktiv på system som inte stöder ögon blick, eller i fall där maskinvaran kan stödja ögon blick, men rätt uppsättning behörigheter och installation har inte utförts.

Huvud blick är vanligtvis associerad med HoloLens 1 stil interaktioner som innebär att titta på objekt genom att placera den i mitten av den holografiska ramen och sedan utföra luft kran gest.

Ögonöga

Den här typen av blick baseras på var användarens ögon ser ut. Ögonögon finns bara på system som stöder ögonspårning. Mer information om hur du använder ögonögonblick finns i dokumentationen för ögonspårning .

GazeProvider

Gaze-funktionen (både huvud och öga) tillhandahålls av GazeProvider. Den här providern kan konfigureras i avsnittet Pekare i indatasystemprofilen:

Gaze-konfigurationspostpunkt

Precis som andra indatakällor interagerar blickprovidern med objekt i scenen med hjälp av en pekare (se det här dokumentet för information om pekare). När det gäller blickprovidern implementeras dess pekare via InternalGazePointer och konfigureras inte via en profil.

Det är möjligt att ersätta lagret GazeProvider med en alternativ implementering genom att ändra Gaze Provider Type för att referera till en annan klass som implementerar IMixedRealityGazeProvider och IMixedRealityEyeGazeProvider. Vi rekommenderar vanligtvis att du använder lagret GazeProvider (och rapporterar problem när du hittar buggar) eftersom det inte är helt enkelt att implementera GazeProvider igen.

Alternativa blickpositioner som tillhandahålls av plattformen

Som standard använder MRTK GazeProvider mitten av kamerans ram som blickens ursprung. Vissa plattformar, till exempel Windows Mixed Reality på HoloLens 2, tillhandahåller en alternativt definierad blickställning. Detta hanteras via Use Head Gaze Override inställningen i blickinställningarna. När den är aktiverad används den alternativa åsidosättningen av blicken. När den är inaktiverad används standardplatsen för ramcenter. Mer specifikt, för HoloLens 2, kommer blickvinkeln att höjas flera grader för att ta hänsyn till användarkomforten i att använda huvudet för målinriktning.

Användning

Hur får du det aktuella blickmålet

Det här exemplet visar hur du hämtar det aktuella spelobjektet som är mål för användarens blick.

void LogCurrentGazeTarget()
{
    if (CoreServices.InputSystem.GazeProvider.GazeTarget)
    {
        Debug.Log("User gaze is currently over game object: "
            + CoreServices.InputSystem.GazeProvider.GazeTarget)
    }
}

Hur man får den aktuella blicken riktning och ursprung

Det här exemplet visar hur du hämtar Vector3 som representerar riktningen för användarens blick och ursprunget (den punkt från vilken riktningen går).

void LogGazeDirectionOrigin()
{
    Debug.Log("Gaze is looking in direction: "
        + CoreServices.InputSystem.GazeProvider.GazeDirection);

    Debug.Log("Gaze origin is: "
        + CoreServices.InputSystem.GazeProvider.GazeOrigin);
}