Přístup k datům sledování očí ve skriptu Unity – MRTK2
Tento článek předpokládá, že někdo rozumí nastavení sledování očí ve scéně MRTK (viz Základní nastavení MRTK pro použití sledování očí). Přístup k datům sledování očí ve skriptu MonoBehaviour je snadný! Jednoduše použijte CoreServices.InputSystem.EyeGazeProvider.
IMixedRealityEyeGazeProvider
Konfigurace sledování očí v MRTK se konfiguruje prostřednictvím IMixedRealityEyeGazeProvider
rozhraní . Použití CoreServices.InputSystem.EyeGazeProvider poskytuje výchozí implementaci zprostředkovatele pohledu zaregistrovanou v sadě nástrojů za běhu.
Užitečné vlastnosti objektu EyeGazeProvider
jsou popsány níže.
IsEyeTrackingEnabled: Hodnota True, pokud uživatel zvolil použití sledování očí pro pohled.
IsEyeCalibrationValid: Označuje, jestli je kalibrace sledování očí uživatele platná nebo ne. Pokud hodnota ještě nepřijala data ze systému sledování očí, vrátí hodnotu null. Může být neplatná, protože uživatel vynechal kalibraci sledování očí.
IsEyeTrackingEnabledAndValid: Určuje, jestli se aktuální data sledování očí aktuálně používají pro pohled.
IsEyeTrackingDataValid: Hodnota True, pokud jsou k dispozici data sledování očí. Může být nedostupná kvůli překročení časového limitu (měl by být robustní pro blikání uživatele) nebo kvůli chybějícímu hardwaru nebo oprávnění ke sledování. Podívejte se na vzorek oznámení o chybějící kalibraci očí , který vysvětluje, jak zjistit, jestli je uživatel kalibrovaný oko, a jak zobrazit příslušné oznámení.
GazeOrigin: Původ paprsku pohledu. Upozorňujeme, že pokud isEyeGazeValid je false, vrátí se počátek pohledu do hlavy .
GazeDirection: Směr paprsku pohledu. Pokud isEyeGazeValid je false, vrátí se směr pohledu hlavou .
HitInfo, HitPosition, HitNormal atd.: Informace o aktuálně hledaném cíli. Opět platí, že pokud
IsEyeGazeValid
je hodnota false, bude tato hodnota založena na pohledu uživatele .
Příklady použití CoreServices.InputSystem.EyeGazeProvider
Tady je příklad z souboru FollowEyeGaze.cs:
- Získání bodu hologramu, na který se uživatel dívá:
// Show the object at the hit position of the user's eye gaze ray with the target.
gameObject.transform.position = CoreServices.InputSystem.EyeGazeProvider.HitPosition;
- Zobrazení vizuálního assetu v pevné vzdálenosti od místa, kde se uživatel právě dívá:
// If no target is hit, show the object at a default distance along the gaze ray.
gameObject.transform.position =
CoreServices.InputSystem.EyeGazeProvider.GazeOrigin +
CoreServices.InputSystem.EyeGazeProvider.GazeDirection.normalized * defaultDistanceInMeters;