EyeGazeProvider равен нулю даже после того, как поставщик будет доступен

#unity3d #hololens #mrtk

Вопрос:

Я пытаюсь зарегистрировать Вектор3, соответствующий данным взгляда глаз на Hololens 2. Мой вывод .csv в редакторе в порядке, но, работая на реальном HL2, я могу проверить, что мой EyeGazeProvider равен нулю, и, следовательно, данные не регистрируются. В приведенном ниже коде (пример сценария MS, который я изменяю) я никогда не вхожу в цикл после проверки «eyeGazeProvider != null».

Я включил эту функцию в Unity для EyeGaze и проверил ее в файле .appxmanifest. Кроме того, у меня есть как поставщик XRSDK Windows для смешанной реальности, так и его аналог OpenXR в качестве части моих поставщиков входных данных. У меня также есть профиль EyeGazeInteraction, как и требуется. Я действительно в тупике.

Поставщики пристального взгляда
Настройки OpenXR

 var eyeGazeProvider = CoreServices.InputSystem?.EyeGazeProvider;
            if (eyeGazeProvider != null)
            {
                gameObject.transform.position = eyeGazeProvider.GazeOrigin   eyeGazeProvider.GazeDirection.normalized * defaultDistanceInMeters;

                EyeTrackingTarget lookedAtEyeTarget = EyeTrackingTarget.LookedAtEyeTarget;

                // Update GameObject to the current eye gaze position at a given distance
                if (lookedAtEyeTarget != null)
                {
                    // Show the object at the center of the currently looked at target.
                    if (lookedAtEyeTarget.EyeCursorSnapToTargetCenter)
                    {
                        Ray rayToCenter = new Ray(CameraCache.Main.transform.position, lookedAtEyeTarget.transform.position - CameraCache.Main.transform.position);
                        RaycastHit hitInfo;
                        UnityEngine.Physics.Raycast(rayToCenter, out hitInfo);
                        gameObject.transform.position = hitInfo.point;
                    }
                    else
                    {
                        // Show the object at the hit position of the user's eye gaze ray with the target.
                        gameObject.transform.position = eyeGazeProvider.GazeOrigin   eyeGazeProvider.GazeDirection.normalized * defaultDistanceInMeters;
                    }
                }
                else
                {
                    // If no target is hit, show the object at a default distance along the gaze ray.
                    gameObject.transform.position = eyeGazeProvider.GazeOrigin   eyeGazeProvider.GazeDirection.normalized * defaultDistanceInMeters;
                }
            }
 

Комментарии:

1. В качестве теста, не могли бы вы попробовать развернуть примеры EyeTrackingDemo, которые находятся по адресу Assets/MRTK/Примеры/Демонстрации/EyeTracking/Сцены на вашем устройстве? Вы видите такое же поведение? Это поможет сузить круг вопросов, связанных с вашей конфигурацией или с вашей сценой.

2. Работает нормально. Проследил за взглядом, но я не пытался ничего регистрировать. Серая иконка также показывала, куда я смотрю. Это также происходит, когда я запускаю свою программу, и я могу смотреть и выбирать объекты жестом «ущипнуть». Однако по-прежнему не удается войти в систему.

3. Как бы то ни было, я думаю, что взломал его. Это был вовсе не газетчик. Это проблема с тем, как я пишу в свой файл .csv. Что-то связанное с нарезанием резьбы. Ценю вашу помощь, этот вопрос помог заставить соки течь.