Göz kalibrasyonu — MRTK2
Genel Bakış
Gözle izleme uygulama deneyiminizin temel bir parçasıysa, kullanıcının göz kalibrasyonunun geçerli olduğundan emin olmak isteyebilirsiniz. Geçersiz olmasının temel nedeni, kullanıcının cihazı koyarken göz izleme kalibrasyonunu atlamayı seçmiş olmasıdır.
Bu sayfa aşağıdakileri kapsar:
- Bir kullanıcının göz kalibre edilmiş olduğunu algılamayı açıklar
- Kullanıcıya göz ayarından geçmesi talimatını veren bir kullanıcı bildiriminin nasıl tetiklenmesine yönelik bir örnek sağlar
- Gözle kalibrasyon geçerli hale gelirse bildirimi otomatik olarak kapat
- Kullanıcı ayarlama olmadan devam etmeyi seçerse bildirimi el ile kapatma
Göz kalibrasyon durumunu algılama
MRTK'de gözle izleme yapılandırması arabirim aracılığıyla IMixedRealityEyeGazeProvider
yapılandırılır.
CoreServices.InputSystem.EyeGazeProvider kullanılarak çalışma zamanında araç setinde kayıtlı varsayılan bakış sağlayıcısı uygulaması sağlanır. IMixedRealityEyeGazeProvider.IsEyeGazeValid
henüz göz izleyicisinden herhangi bir bilgi yoksa null olan bir bool?
döndürür.
Veriler alındıktan sonra, kullanıcının göz izleme kalibrasyonunun geçerli veya geçersiz olduğunu belirtmek için true veya false döndürür.
Örnek göz kalibrasyonu bildirimi - adım adım
MRTK göz izleme örnek paketini açın (Assets/MRTK/Examples/Demos/EyeTracking)
EyeTrackingDemo-00-RootScene.unity sahnesini yükleme
EyeCalibrationChecker'a göz atın:
Bu sahnede, geçerli kullanıcının EyeCalibrationChecker oyun nesnesi altında ayarlanıp ayarlanmadığını algılamaya yönelik bir örneğimiz zaten var. Yalnızca birkaç metin kısa çizgiyle besler ve bildirimin içine ve dışına karıştırılması için bazı ek tetikleyiciler içerir. Bu, etkinleştirmede boyutunu ve opaklığını yavaşça artırmayı içerir. Bildirim kapatıldıktan sonra boyutunu yavaşça küçültecek ve kaybolacaktır.
EyeCalibrationChecker oyun nesnesine eklenmiş olan EyeCalibrationChecker betiği iki Unity Olayını kullanıma sunar:
OnEyeCalibrationDetected()
OnNoEyeCalibrationDetected()
Bu olaylar yalnızca kalibrasyon durumu değiştiğinde tetiklenir. Bu nedenle, kullanıcı bildirimi kapatmayı seçerse, bildirim
- Uygulama yeniden başlatılır
- Geçerli bir kullanıcı algılandı ve ardından yeni bir hesaplanmamış kullanıcı cihazı
Animasyonların ve olayların doğru tetiklenip tetiklenmediğini test için EyeCalibrationChecker betiğinde bir
bool editorTestUserIsCalibrated
bayrak bulunur. Örneğin, Unity Düzenleyicisi'nde çalışırken test edilebilir:- Ayar durumu true'dan false'a değiştiğinde bildirimin otomatik olarak açılıp görünmediği
- Durum false yerine true olarak değiştiğinde bildirimin otomatik olarak kapatılıp kapatılmayacağı.
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;
}
}