首页 > 解决方案 > 即使在确保提供程序可用之后,EyeGazeProvider 仍为 null

问题描述

我正在尝试在 Hololens 2 上记录与眼睛注视数据对应的 Vector3。我的 .csv 输出在编辑器中很好,但在实际 HL2 上运行,我可以验证我的 EyeGazeProvider 是否为空,因此没有数据被记录。在下面的代码(我正在修改的 MS 示例脚本)中,我从未通过“eyeGazeProvider!= null”检查进入循环。

我在 Unity 中为 EyeGaze 启用了该功能,并在 .appxmanifest 中对其进行了验证。此外,我将 XRSDK Windows Mixed Reality Eye Gaze Provider 及其 OpenXR 对应项作为我的输入数据提供程序的一部分。根据需要,我还有一个 EyeGazeInteraction 配置文件。我真的被难住了。

Gaze Providers 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;
                }
            }

标签: unity3dhololensmrtk

解决方案


推荐阅读