EyeTrackVR/EyeTrackApp/utils/smart_inversion.py
2025-02-08 16:58:56 +13:00

49 lines
1.3 KiB
Python

from eye import EyeId
from utils.misc_utils import clamp
inverted_frames = int
cleared_frames = int
def smart_inversion(self, var, out_x, out_y):
#Updates eye positions with latest
if self.eye_id == EyeId.LEFT:
var.l_eye_x = out_x
var.left_y = out_y
if self.eye_id == EyeId.RIGHT:
var.r_eye_x = out_x
var.right_y = out_y
#Checks if eyes are inverted
if (var.l_eye_x > 0 and var.r_eye_x < 0) and (abs(var.l_eye_x - var.r_eye_x) > self.settings.gui_smartinversion_thresh):
is_inverted = True
else:
is_inverted = False
#Determines which eye is being tracked based off selection and sets values accordingly
if self.settings.gui_smartinversion_select_right:
tracked_eye_x = var.r_eye_x
tracked_eye_y = var.right_y
recessive_eye = EyeId.LEFT
else:
tracked_eye_x = var.l_eye_x
tracked_eye_y = var.left_y
recessive_eye = EyeId.RIGHT
out_x = tracked_eye_x
out_y = tracked_eye_y
#If eyes are inverted, and eye being processed is recessive, invert x value.
if self.eye_id == recessive_eye:
if is_inverted:
out_x = -tracked_eye_x
else:
out_x = tracked_eye_x
else:
out_x = tracked_eye_x
out_y = tracked_eye_y
return out_x, out_y