From b4b368bf05b320177bcae1cd9a7205cd30449327 Mon Sep 17 00:00:00 2001 From: Prohurtz <48768484+RedHawk989@users.noreply.github.com> Date: Wed, 25 Jan 2023 16:52:12 -0600 Subject: [PATCH] IBO main OSC support --- EyeTrackApp/intensity_eye_open.py | 39 ++----------------------------- EyeTrackApp/osc.py | 34 +++++++++++++-------------- 2 files changed, 19 insertions(+), 54 deletions(-) diff --git a/EyeTrackApp/intensity_eye_open.py b/EyeTrackApp/intensity_eye_open.py index b0fdd7c..fc2ac49 100644 --- a/EyeTrackApp/intensity_eye_open.py +++ b/EyeTrackApp/intensity_eye_open.py @@ -3,11 +3,6 @@ import numpy as np import cv2 from pythonosc import udp_client - - -OSCip="127.0.0.1" -OSCport=9000 #VR Chat OSC port -client = udp_client.SimpleUDPClient(OSCip, OSCport) #higher intensity means more closed/ more white/less pupil #Hm I need an acronym for this, any ideas? @@ -41,7 +36,7 @@ def intense(x, y, frame): xy = int(str(x) + str(y) + str(x+y)) intensity = np.sum(frame) - #print(intensity) + changed = False try: #max pupil per cord dfb = data[data['xy']==xy].index.values.astype(int)[0] # find pandas index of line with matching xy value @@ -55,14 +50,11 @@ def intense(x, y, frame): intensitya = data.at[dfb, 'intensity'] - 3 #if current intensity value is less (more pupil), save that data.at[dfb, 'intensity'] = intensitya # set value changed = True - # print("var inc", intensity, intensitya) - except: # that value is not yet saved data.loc[len(data.index)] = [xy, intensity] #create new data on last line of csv with current intesity changed = True - try: # min pupil global if intensity > data.at[0, 'intensity']: #if current intensity value is more (less pupil), save that NOTE: we have the data.at[0, 'intensity'] = intensity # set value at 0 index @@ -86,10 +78,8 @@ def intense(x, y, frame): eyeopen = (intensity - maxp) / (minp - maxp) eyeopen = 1 - eyeopen print(intensity, maxp, minp, x, y) - # eyeopen = max(0.0, min(1.0, eyeopen)) # print(f"EYEOPEN: {eyeopen}") - client.send_message("/avatar/parameters/RightEyeLidExpandedSqueeze", float(eyeopen)) # open r - client.send_message("/avatar/parameters/LeftEyeLidExpandedSqueeze", float(eyeopen)) + except: print('[INFO] Something went wrong, assuming blink.') eyeopen = 0.0 @@ -97,29 +87,4 @@ def intense(x, y, frame): if changed == True: data.to_csv(fname, encoding='utf-8', index=False) #save file since we made a change - - return eyeopen - -#vid = cv2.VideoCapture("http://192.168.1.43:4747/video") -#x = int(input("x")) -#y = int(input("y")) - -#while(True): - - # ret, frame = vid.read() - - # cv2.imshow('frame', frame) - # upper_x = x + 20 - #lower_x = x - 20 - # upper_y = y + 20 - # lower_y = y - 20 - - # cropped_image = frame[lower_y:upper_y, lower_x:upper_x] - # intense(x,y, cropped_image) - - # if cv2.waitKey(1) & 0xFF == ord('q'): - # break - -#vid.release() -#cv2.destroyAllWindows() \ No newline at end of file diff --git a/EyeTrackApp/osc.py b/EyeTrackApp/osc.py index faa02b8..0d4418c 100644 --- a/EyeTrackApp/osc.py +++ b/EyeTrackApp/osc.py @@ -45,21 +45,21 @@ class VRChatOSC: except: continue #eye_info.blink - print(eye_info.blink) + #print(eye_info.blink) if eye_info.blink > 0.1: #if eye is not "closed" this will need tuning if self.config.tracker_single_eye == 1 or self.config.tracker_single_eye == 2: self.client.send_message("/avatar/parameters/LeftEyeX", eye_info.x) # only one eye is detected or there is an error. Send mirrored data to both eyes. self.client.send_message("/avatar/parameters/RightEyeX", eye_info.x) self.client.send_message("/avatar/parameters/EyesY", eye_info.y) self.client.send_message("/avatar/parameters/RightEyeLid", float(0))# old param open right - #self.client.send_message("/avatar/parameters/RightEyeLidExpandedSqueeze", float(0.8)) # open r + self.client.send_message("/avatar/parameters/RightEyeLidExpandedSqueeze", float(eye_info.blink)) # open r self.client.send_message("/avatar/parameters/LeftEyeLid", float(0))# old param open left - # self.client.send_message("/avatar/parameters/LeftEyeLidExpandedSqueeze", float(0.8)) # open left eye + self.client.send_message("/avatar/parameters/LeftEyeLidExpandedSqueeze", float(eye_info.blink)) # open left eye if self.config.gui_blink_sync and not rb and not lb: self.client.send_message("/avatar/parameters/RightEyeLid", float(0))# old param open right - # self.client.send_message("/avatar/parameters/RightEyeLidExpandedSqueeze", float(0.8)) # open r + self.client.send_message("/avatar/parameters/RightEyeLidExpandedSqueeze", float(eye_info.blink)) # open r self.client.send_message("/avatar/parameters/LeftEyeLid", float(0))# old param open left - # self.client.send_message("/avatar/parameters/LeftEyeLidExpandedSqueeze", float(0.8)) # open left eye + self.client.send_message("/avatar/parameters/LeftEyeLidExpandedSqueeze", float(eye_info.blink)) # open left eye else: if eye_id in [EyeId.RIGHT]: @@ -70,7 +70,7 @@ class VRChatOSC: self.client.send_message("/avatar/parameters/RightEyeX", eye_info.x) if not self.config.gui_blink_sync or self.config.gui_blink_sync and not lb: self.client.send_message("/avatar/parameters/RightEyeLid", float(0))# old param open right - # self.client.send_message("/avatar/parameters/RightEyeLidExpandedSqueeze", float(0.8)) # open right eye + self.client.send_message("/avatar/parameters/RightEyeLidExpandedSqueeze", float(eye_info.blink)) # open right eye if eye_id in [EyeId.LEFT]: yl = eye_info.y @@ -80,7 +80,7 @@ class VRChatOSC: self.client.send_message("/avatar/parameters/LeftEyeX", eye_info.x) if not self.config.gui_blink_sync or self.config.gui_blink_sync and not rb: self.client.send_message("/avatar/parameters/LeftEyeLid", float(0))# old param open left - # self.client.send_message("/avatar/parameters/LeftEyeLidExpandedSqueeze", float(0.8)) # open left eye + self.client.send_message("/avatar/parameters/LeftEyeLidExpandedSqueeze", float(eye_info.blink)) # open left eye if (yr != 621 and yl != 621) and (lb == False and rb == False): y = (yr + yl) / 2 @@ -96,8 +96,8 @@ class VRChatOSC: for i in range(4): self.client.send_message("/avatar/parameters/RightEyeLid", float(1)) #close eye self.client.send_message("/avatar/parameters/LeftEyeLid", float(1)) - # self.client.send_message("/avatar/parameters/RightEyeLidExpandedSqueeze", float(0)) # close eye - # self.client.send_message("/avatar/parameters/LeftEyeLidExpandedSqueeze", float(0)) + self.client.send_message("/avatar/parameters/RightEyeLidExpandedSqueeze", float(eye_info.blink)) # close eye + self.client.send_message("/avatar/parameters/LeftEyeLidExpandedSqueeze", float(eye_info.blink)) last_blink = time.time() - last_blink else: @@ -106,8 +106,8 @@ class VRChatOSC: for i in range(4): self.client.send_message("/avatar/parameters/RightEyeLid", float(1)) #close eye self.client.send_message("/avatar/parameters/LeftEyeLid", float(1)) - # self.client.send_message("/avatar/parameters/RightEyeLidExpandedSqueeze", float(0)) # close eye - # self.client.send_message("/avatar/parameters/LeftEyeLidExpandedSqueeze", float(0)) + self.client.send_message("/avatar/parameters/RightEyeLidExpandedSqueeze", float(eye_info.blink)) # close eye + self.client.send_message("/avatar/parameters/LeftEyeLidExpandedSqueeze", float(eye_info.blink)) last_blink = time.time() - last_blink if not self.config.gui_eye_falloff: @@ -117,7 +117,7 @@ class VRChatOSC: if last_blink > 0.7: for i in range(5): self.client.send_message("/avatar/parameters/LeftEyeLid", float(1)) - # self.client.send_message("/avatar/parameters/LeftEyeLidExpandedSqueeze", float(0)) + self.client.send_message("/avatar/parameters/LeftEyeLidExpandedSqueeze", float(eye_info.blink)) last_blink = time.time() - last_blink @@ -126,7 +126,7 @@ class VRChatOSC: if last_blink > 0.7: for i in range(5): self.client.send_message("/avatar/parameters/RightEyeLid", float(1)) - # self.client.send_message("/avatar/parameters/RightEyeLidExpandedSqueeze", float(0)) # close eye + self.client.send_message("/avatar/parameters/RightEyeLidExpandedSqueeze", float(eye_info.blink)) # close eye last_blink = time.time() - last_blink else: @@ -139,16 +139,16 @@ class VRChatOSC: self.client.send_message("/avatar/parameters/RightEyeX", sx) self.client.send_message("/avatar/parameters/EyesY", sy) self.client.send_message("/avatar/parameters/RightEyeLid", float(0))# old param open right - # self.client.send_message("/avatar/parameters/RightEyeLidExpandedSqueeze", float(0.8)) # open r + self.client.send_message("/avatar/parameters/RightEyeLidExpandedSqueeze", float(eye_info.blink)) # open r self.client.send_message("/avatar/parameters/LeftEyeLid", float(0))# old param open left - # self.client.send_message("/avatar/parameters/LeftEyeLidExpandedSqueeze", float(0.8)) # open left eye + self.client.send_message("/avatar/parameters/LeftEyeLidExpandedSqueeze", float(eye_info.blink)) # open left eye if rb and lb: # If both eyes are closed, blink if last_blink > 0.5: for i in range(4): self.client.send_message("/avatar/parameters/RightEyeLid", float(1)) #close eye self.client.send_message("/avatar/parameters/LeftEyeLid", float(1)) - # self.client.send_message("/avatar/parameters/RightEyeLidExpandedSqueeze", float(0)) # close eye - # self.client.send_message("/avatar/parameters/LeftEyeLidExpandedSqueeze", float(0)) + self.client.send_message("/avatar/parameters/RightEyeLidExpandedSqueeze", float(eye_info.blink)) # close eye + self.client.send_message("/avatar/parameters/LeftEyeLidExpandedSqueeze", float(eye_info.blink)) last_blink = time.time() - last_blink