Пример #1
0
        private void Update()
        {
            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;
                }
            }
        }
Пример #2
0
 private void Update()
 {
     // Update GameObject to the current eye gaze position at a given distance
     if (InputSystem?.EyeGazeProvider?.IsEyeGazeValid == true)
     {
         GameObject target = InputSystem.EyeGazeProvider.GazeTarget;
         if (target != null)
         {
             // Show the object at the center of the currently looked at target.
             EyeTrackingTarget etTarget = target.GetComponent <EyeTrackingTarget>();
             if ((etTarget != null) && (etTarget.cursor_snapToCenter))
             {
                 Ray        rayToCenter = new Ray(CameraCache.Main.transform.position, target.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 = InputSystem.EyeGazeProvider.HitPosition;
             }
         }
         else
         {
             // If no target is hit, show the object at a default distance along the gaze ray.
             gameObject.transform.position = InputSystem.EyeGazeProvider.GazeOrigin + InputSystem.EyeGazeProvider.GazeDirection.normalized * defaultDistanceInMeters;
         }
     }
 }
 private void Start()
 {
     myEyeTrackingTarget = this.GetComponent <EyeTrackingTarget>();
     if (myEyeTrackingTarget != null) // Shouldn't be null since we use RequireComponent(), but just to be sure.
     {
         myEyeTrackingTarget.OnSelected.AddListener(TargetSelected);
     }
 }
Пример #4
0
        private void Update()
        {
            string newNote = "";

            if (eyeGazeProvider != null)
            {
                gameObject.transform.position = eyeGazeProvider.HitInfo.point;
                //gameObject.transform.position = eyeGazeProvider.GazeOrigin + eyeGazeProvider.GazeDirection.normalized * defaultDistanceInMeters;
                //gameObject.transform.position = eyeGazeProvider.GazeOrigin + eyeGazeProvider.GazeDirection;
                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)
                    {
                        newNote = "HIT eye target,  centered";
                        Debug.Log(newNote);
                        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
                    {
                        newNote = "HIT eye target,   but not centered";
                        Debug.Log(newNote);
                        // 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;
                        gameObject.transform.position = eyeGazeProvider.GazeOrigin + eyeGazeProvider.GazeDirection;
                    }
                }
                else
                {
                    if (eyeGazeProvider.HitInfo.distance == 0)
                    {
                        newNote = "Not hit, default " + eyeGazeProvider.HitInfo.distance.ToString("F2");
                        Debug.Log(newNote);
                        // 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;
                    }
                    else
                    {
                        newNote = "Not hit, wall? " + eyeGazeProvider.HitInfo.distance.ToString("F2");
                        Debug.Log(newNote);
                        // Hit a gameObject without lookedAtEyeTarget script attached
                        gameObject.transform.position = eyeGazeProvider.HitInfo.point;
                    }
                }
            }

            if (!newNote.Equals(note))
            {
                note = newNote;
                notificationUpdate.AddNote(note, Color.white);
            }
        }
    void Start()
    {
        PV = GameObject.FindGameObjectWithTag("WorldEvent").GetComponent <PhotonView>();
        eyeTrackingTarget = gameObject.GetComponent <EyeTrackingTarget>();
        eyeTrackingTarget.OnLookAtStart.AddListener(SetGazeOn);
        eyeTrackingTarget.OnLookAway.AddListener(SetGazeNull);

        /*
         * RPC_EyegazeGlasses.event_GazeOnObjGlasses.AddListener(OnGazeOn);
         * RPC_EyegazeGlasses.event_GazeNullGlasses.AddListener(OnGazeNull);
         */
    }
Пример #6
0
 public void UpdateLog(string inputType, string inputStatus, EyeTrackingTarget intendedTarget)
 {
     if ((Instance != null) && (isLogging))
     {
         if (logStructure != null)
         {
             object[] data        = MergeObjArrays(GetData_Part1(), logStructure.GetData(inputType, inputStatus, intendedTarget));
             string   data_format = GetStringFormat(data);
             Instance.CustomAppend(String.Format(data_format, data));
             prevTarget = intendedTarget;
         }
     }
 }
        // Private methods
        private void Start()
        {
            // Init variables
            cursorEnterTime = DateTime.MaxValue;
            eyeTarget       = this.GetComponent <EyeTrackingTarget>();
            eyeTarget.OnLookAtStart.AddListener(this.OnLookAtStart);
            eyeTarget.OnLookAway.AddListener(this.OnLookAtStop);

            // Store the original colors for later resetting the object to its original state after highlighting
            SaveOriginalColor();

            if (Overlay_GameObj != null)
            {
                Overlay_GameObj.SetActive(false);
            }
        }
Пример #8
0
        protected virtual void Start()
        {
            // Init children
            Initialize();
            handZoomEnabled = ZoomGestureEnabledOnStartup;
            Initialize();

            // Init eye tracking target
            if (myEyeTarget == null)
            {
                myEyeTarget = GetComponent <EyeTrackingTarget>();
            }

            if (EyeSaccadeProvider != null)
            {
                EyeSaccadeProvider.OnSaccadeY += ResetScroll_OnSaccade;
            }
        }
Пример #9
0
        public override object[] GetData(string inputType, string inputStatus, EyeTrackingTarget intTarget)
        {
            // Let's prepare all the data we wanna log

            // Eye gaze hit position
            Vector3?eyeHitPos = null;

            if (EyeTrackingProvider?.GazeTarget != null && EyeTrackingProvider.IsEyeGazeValid)
            {
                eyeHitPos = EyeTrackingProvider.HitPosition;
            }


            object[] data = new object[]
            {
                //-------------------------------
                // Cam / Head tracking
                CameraCache.Main.transform.position.x,
                CameraCache.Main.transform.position.y,
                CameraCache.Main.transform.position.z,
                0,
                0,
                0,

                // Smoothed eye gaze signal
                EyeTrackingProvider.IsEyeGazeValid ? EyeTrackingProvider.GazeOrigin.x : 0,
                EyeTrackingProvider.IsEyeGazeValid ? EyeTrackingProvider.GazeOrigin.y : 0,
                EyeTrackingProvider.IsEyeGazeValid ? EyeTrackingProvider.GazeOrigin.z : 0,

                EyeTrackingProvider.IsEyeGazeValid ? EyeTrackingProvider.GazeDirection.x : 0,
                EyeTrackingProvider.IsEyeGazeValid ? EyeTrackingProvider.GazeDirection.y : 0,
                EyeTrackingProvider.IsEyeGazeValid ? EyeTrackingProvider.GazeDirection.z : 0,

                (eyeHitPos != null) ? eyeHitPos.Value.x : float.NaN,
                (eyeHitPos != null) ? eyeHitPos.Value.y : float.NaN,
                (eyeHitPos != null) ? eyeHitPos.Value.z : float.NaN,
            };

            return(data);
        }
Пример #10
0
 public virtual object[] GetData(string inputType, string inputStatus, EyeTrackingTarget intTarget)
 {
     return(System.Array.Empty <object>());
 }
Пример #11
0
 public TargetEventArgs(EyeTrackingTarget hitTarget)
 {
     HitTarget = hitTarget;
 }
Пример #12
0
 public virtual object[] GetData(string inputType, string inputStatus, EyeTrackingTarget intTarget)
 {
     return(new object[0]);
 }