mirror of
https://github.com/EyeTrackVR/EyeTrackVR.git
synced 2025-11-04 14:39:42 +08:00
IBO main OSC support
This commit is contained in:
parent
0622820491
commit
b4b368bf05
@ -3,11 +3,6 @@ import numpy as np
|
|||||||
import cv2
|
import cv2
|
||||||
from pythonosc import udp_client
|
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
|
#higher intensity means more closed/ more white/less pupil
|
||||||
|
|
||||||
#Hm I need an acronym for this, any ideas?
|
#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))
|
xy = int(str(x) + str(y) + str(x+y))
|
||||||
intensity = np.sum(frame)
|
intensity = np.sum(frame)
|
||||||
#print(intensity)
|
|
||||||
changed = False
|
changed = False
|
||||||
try: #max pupil per cord
|
try: #max pupil per cord
|
||||||
dfb = data[data['xy']==xy].index.values.astype(int)[0] # find pandas index of line with matching xy value
|
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
|
intensitya = data.at[dfb, 'intensity'] - 3 #if current intensity value is less (more pupil), save that
|
||||||
data.at[dfb, 'intensity'] = intensitya # set value
|
data.at[dfb, 'intensity'] = intensitya # set value
|
||||||
changed = True
|
changed = True
|
||||||
# print("var inc", intensity, intensitya)
|
|
||||||
|
|
||||||
|
|
||||||
except: # that value is not yet saved
|
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
|
data.loc[len(data.index)] = [xy, intensity] #create new data on last line of csv with current intesity
|
||||||
changed = True
|
changed = True
|
||||||
|
|
||||||
|
|
||||||
try: # min pupil global
|
try: # min pupil global
|
||||||
if intensity > data.at[0, 'intensity']: #if current intensity value is more (less pupil), save that NOTE: we have the
|
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
|
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 = (intensity - maxp) / (minp - maxp)
|
||||||
eyeopen = 1 - eyeopen
|
eyeopen = 1 - eyeopen
|
||||||
print(intensity, maxp, minp, x, y)
|
print(intensity, maxp, minp, x, y)
|
||||||
# eyeopen = max(0.0, min(1.0, eyeopen))
|
|
||||||
# print(f"EYEOPEN: {eyeopen}")
|
# print(f"EYEOPEN: {eyeopen}")
|
||||||
client.send_message("/avatar/parameters/RightEyeLidExpandedSqueeze", float(eyeopen)) # open r
|
|
||||||
client.send_message("/avatar/parameters/LeftEyeLidExpandedSqueeze", float(eyeopen))
|
|
||||||
except:
|
except:
|
||||||
print('[INFO] Something went wrong, assuming blink.')
|
print('[INFO] Something went wrong, assuming blink.')
|
||||||
eyeopen = 0.0
|
eyeopen = 0.0
|
||||||
@ -97,29 +87,4 @@ def intense(x, y, frame):
|
|||||||
if changed == True:
|
if changed == True:
|
||||||
data.to_csv(fname, encoding='utf-8', index=False) #save file since we made a change
|
data.to_csv(fname, encoding='utf-8', index=False) #save file since we made a change
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return eyeopen
|
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()
|
|
||||||
@ -45,21 +45,21 @@ class VRChatOSC:
|
|||||||
except:
|
except:
|
||||||
continue
|
continue
|
||||||
#eye_info.blink
|
#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 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:
|
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/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/RightEyeX", eye_info.x)
|
||||||
self.client.send_message("/avatar/parameters/EyesY", eye_info.y)
|
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/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/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:
|
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/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/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:
|
else:
|
||||||
if eye_id in [EyeId.RIGHT]:
|
if eye_id in [EyeId.RIGHT]:
|
||||||
@ -70,7 +70,7 @@ class VRChatOSC:
|
|||||||
self.client.send_message("/avatar/parameters/RightEyeX", eye_info.x)
|
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:
|
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/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]:
|
if eye_id in [EyeId.LEFT]:
|
||||||
yl = eye_info.y
|
yl = eye_info.y
|
||||||
@ -80,7 +80,7 @@ class VRChatOSC:
|
|||||||
self.client.send_message("/avatar/parameters/LeftEyeX", eye_info.x)
|
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:
|
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/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):
|
if (yr != 621 and yl != 621) and (lb == False and rb == False):
|
||||||
y = (yr + yl) / 2
|
y = (yr + yl) / 2
|
||||||
@ -96,8 +96,8 @@ class VRChatOSC:
|
|||||||
for i in range(4):
|
for i in range(4):
|
||||||
self.client.send_message("/avatar/parameters/RightEyeLid", float(1)) #close eye
|
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/LeftEyeLid", 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
|
||||||
# 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
|
last_blink = time.time() - last_blink
|
||||||
else:
|
else:
|
||||||
|
|
||||||
@ -106,8 +106,8 @@ class VRChatOSC:
|
|||||||
for i in range(4):
|
for i in range(4):
|
||||||
self.client.send_message("/avatar/parameters/RightEyeLid", float(1)) #close eye
|
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/LeftEyeLid", 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
|
||||||
# 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
|
last_blink = time.time() - last_blink
|
||||||
|
|
||||||
if not self.config.gui_eye_falloff:
|
if not self.config.gui_eye_falloff:
|
||||||
@ -117,7 +117,7 @@ class VRChatOSC:
|
|||||||
if last_blink > 0.7:
|
if last_blink > 0.7:
|
||||||
for i in range(5):
|
for i in range(5):
|
||||||
self.client.send_message("/avatar/parameters/LeftEyeLid", float(1))
|
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
|
last_blink = time.time() - last_blink
|
||||||
|
|
||||||
|
|
||||||
@ -126,7 +126,7 @@ class VRChatOSC:
|
|||||||
if last_blink > 0.7:
|
if last_blink > 0.7:
|
||||||
for i in range(5):
|
for i in range(5):
|
||||||
self.client.send_message("/avatar/parameters/RightEyeLid", float(1))
|
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
|
last_blink = time.time() - last_blink
|
||||||
|
|
||||||
else:
|
else:
|
||||||
@ -139,16 +139,16 @@ class VRChatOSC:
|
|||||||
self.client.send_message("/avatar/parameters/RightEyeX", sx)
|
self.client.send_message("/avatar/parameters/RightEyeX", sx)
|
||||||
self.client.send_message("/avatar/parameters/EyesY", sy)
|
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/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/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 rb and lb: # If both eyes are closed, blink
|
||||||
if last_blink > 0.5:
|
if last_blink > 0.5:
|
||||||
for i in range(4):
|
for i in range(4):
|
||||||
self.client.send_message("/avatar/parameters/RightEyeLid", float(1)) #close eye
|
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/LeftEyeLid", 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
|
||||||
# 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
|
last_blink = time.time() - last_blink
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user