From 6200ddfcab2297e59c689edfa72ddb47fbd8faa1 Mon Sep 17 00:00:00 2001 From: Prohurtz <48768484+RedHawk989@users.noreply.github.com> Date: Thu, 5 Oct 2023 09:45:43 -0500 Subject: [PATCH] feat: pupil dilation initial imp --- EyeTrackApp/algo_settings_widget.py | 16 +++++++++++++++- EyeTrackApp/camera_widget.py | 2 +- EyeTrackApp/config.py | 1 + EyeTrackApp/eye.py | 3 ++- EyeTrackApp/eye_processor.py | 22 ++++++++++++---------- EyeTrackApp/osc.py | 12 ++++++++++-- 6 files changed, 41 insertions(+), 15 deletions(-) diff --git a/EyeTrackApp/algo_settings_widget.py b/EyeTrackApp/algo_settings_widget.py index 973665b..79cd3d1 100644 --- a/EyeTrackApp/algo_settings_widget.py +++ b/EyeTrackApp/algo_settings_widget.py @@ -57,6 +57,7 @@ class AlgoSettingsWidget: self.gui_legacy_ransac = f"-LEGACYRANSACTHRESH{widget_id}-" self.gui_legacy_ransac_thresh_right = f"-THRESHRIGHT{widget_id}-" self.gui_legacy_ransac_thresh_left = f"-THRESHLEFT{widget_id}-" + self.gui_pupil_dilation = f"-EBPD{widget_id}-" self.gui_LEAP_lid = f"-LEAPLID{widget_id}-" self.main_config = main_config self.config = main_config.settings @@ -188,7 +189,7 @@ class AlgoSettingsWidget: ), sg.Text("Blob", background_color="#424042"), ], - [sg.Text("Blink Algo Settings:", background_color="#242224")], + [sg.Text("Eyelid Algo Settings:", background_color="#242224")], [ sg.Checkbox( "Intensity Based Openness", @@ -249,6 +250,15 @@ class AlgoSettingsWidget: background_color="#424042", ), ], + [sg.Text("Pupil Dilation Algo Settings:", background_color="#242224")], + [ + sg.Checkbox( + "Ellipse Based Pupil Dilation", + default=self.config.gui_pupil_dilation, + key=self.gui_pupil_dilation, + background_color="#424042", + ) + ], [ sg.Text( "Advanced Tracking Algorithim Settings:", background_color="#242224" @@ -444,6 +454,10 @@ class AlgoSettingsWidget: self.config.gui_IBO = values[self.gui_IBO] changed = True + if self.config.gui_pupil_dilation != values[self.gui_pupil_dilation]: + self.config.gui_pupil_dilation = values[self.gui_pupil_dilation] + changed = True + if self.config.gui_RANSACBLINK != values[self.gui_RANSACBLINK]: self.config.gui_RANSACBLINK = values[self.gui_RANSACBLINK] changed = True diff --git a/EyeTrackApp/camera_widget.py b/EyeTrackApp/camera_widget.py index 732dc57..6dadedf 100644 --- a/EyeTrackApp/camera_widget.py +++ b/EyeTrackApp/camera_widget.py @@ -404,7 +404,7 @@ class CameraWidget: graph.draw_circle( (eye_info.x * -100, eye_info.y * -100), - 15], + eye_info.pupil_dilation * 25, fill_color="black", line_color="white", ) diff --git a/EyeTrackApp/config.py b/EyeTrackApp/config.py index 30db8bd..6e4df08 100644 --- a/EyeTrackApp/config.py +++ b/EyeTrackApp/config.py @@ -83,6 +83,7 @@ class EyeTrackSettingsConfig(BaseModel): gui_osc_vrcft_v1: bool = False gui_osc_vrcft_v2: bool = False gui_vrc_native: bool = True + gui_pupil_dilation: bool = True class EyeTrackConfig(BaseModel): diff --git a/EyeTrackApp/eye.py b/EyeTrackApp/eye.py index 2b879c9..783ce39 100644 --- a/EyeTrackApp/eye.py +++ b/EyeTrackApp/eye.py @@ -1,6 +1,7 @@ from dataclasses import dataclass from enum import Enum, IntEnum + class EyeId(IntEnum): RIGHT = 0 LEFT = 1 @@ -24,5 +25,5 @@ class EyeInfo: info_type: EyeInfoOrigin x: float y: float - pupil_dialation: float + pupil_dilation: float blink: float diff --git a/EyeTrackApp/eye_processor.py b/EyeTrackApp/eye_processor.py index a31ddbb..b7785ea 100644 --- a/EyeTrackApp/eye_processor.py +++ b/EyeTrackApp/eye_processor.py @@ -254,16 +254,18 @@ class EyeProcessor: def UPDATE(self): # print(self.eyeopen) - self.pupil_dilation = self.ebpd.intense( - self.pupil_width, - self.pupil_height, - self.rawx, - self.rawy, - self.current_image_white, - self.settings.ibo_filter_samples, - self.settings.ibo_average_output_samples, - ) - print(self.pupil_dilation) + if self.settings.gui_pupil_dilation: + self.pupil_dilation = self.ebpd.intense( + self.pupil_width, + self.pupil_height, + self.rawx, + self.rawy, + self.current_image_white, + self.settings.ibo_filter_samples, + self.settings.ibo_average_output_samples, + ) + else: + self.pupil_dilation = 0.5 if self.settings.gui_BLINK: self.eyeopen = BLINK(self) diff --git a/EyeTrackApp/osc.py b/EyeTrackApp/osc.py index aead0ed..e97f1b0 100644 --- a/EyeTrackApp/osc.py +++ b/EyeTrackApp/osc.py @@ -29,7 +29,8 @@ def eyelid_transformer(self, eye_blink): se = False -def output_osc(eye_x, eye_y, eye_blink, last_blink, self): +def output_osc(eye_x, eye_y, eye_blink, last_blink, pupil_dilation, self): + print(pupil_dilation) global se # self.config.gui_osc_vrcft_v2 # self.config.gui_osc_vrcft_v1 @@ -303,7 +304,14 @@ class VRChatOSC: except: continue - output_osc(eye_info.x, eye_info.y, eye_info.blink, last_blink, self) + output_osc( + eye_info.x, + eye_info.y, + eye_info.blink, + last_blink, + eye_info.pupil_dilation, + self, + ) class VRChatOSCReceiver: