Skip to content

Commit 4d24209

Browse files
author
arch
committed
add invert option
1 parent cc5c4ce commit 4d24209

File tree

3 files changed

+16
-11
lines changed

3 files changed

+16
-11
lines changed

funscript_editor/algorithms/funscriptgenerator.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,12 @@ class FunscriptGeneratorParameter:
4141
supervised_tracking: bool
4242
metric: str
4343
projection: str
44+
invert: bool
45+
start_frame: int
46+
end_frame: int = -1 # default is video end (-1)
4447
number_of_trackers: int = 1
4548

4649
# Settings
47-
start_frame: int = 0 # default is video start (input: set current video position)
48-
end_frame: int = -1 # default is video end (-1)
4950
raw_output: bool = SETTINGS["raw_output"]
5051
max_playback_fps: int = max((0, int(SETTINGS['max_playback_fps'])))
5152
use_zoom: bool = SETTINGS['use_zoom']
@@ -101,7 +102,7 @@ def __init__(self,
101102
self.score = {
102103
'x': [],
103104
'y': [],
104-
'euclideanDistance': [],
105+
'distance': [],
105106
'roll': []
106107
}
107108

@@ -338,7 +339,7 @@ def calculate_score(self, bboxes) -> None:
338339
score = {
339340
'x':[np.array([]) for _ in range(self.params.number_of_trackers)],
340341
'y':[np.array([]) for _ in range(self.params.number_of_trackers)],
341-
'euclideanDistance': [np.array([]) for _ in range(self.params.number_of_trackers)],
342+
'distance': [np.array([]) for _ in range(self.params.number_of_trackers)],
342343
'roll': [np.array([]) for _ in range(self.params.number_of_trackers)]
343344
}
344345
for tracker_number in range(self.params.number_of_trackers):
@@ -350,7 +351,7 @@ def calculate_score(self, bboxes) -> None:
350351
score['x'][tracker_number] = np.array([w[0] - m[0] for w, m in zip(bboxes['Woman'][tracker_number], bboxes['Men'][tracker_number])])
351352
score['y'][tracker_number] = np.array([m[1] - w[1] for w, m in zip(bboxes['Woman'][tracker_number], bboxes['Men'][tracker_number])])
352353

353-
score['euclideanDistance'][tracker_number] = np.array([np.sqrt(np.sum((np.array(m) - np.array(w)) ** 2, axis=0)) \
354+
score['distance'][tracker_number] = np.array([np.sqrt(np.sum((np.array(m) - np.array(w)) ** 2, axis=0)) \
354355
for w, m in zip(woman_center, men_center)])
355356

356357
for i in range( min(( len(men_center), len(woman_center) )) ):
@@ -386,7 +387,7 @@ def get_mean(item):
386387

387388
self.score['x'] = sp.scale_signal(get_mean(score['x']), 0, 100)
388389
self.score['y'] = sp.scale_signal(get_mean(score['y']), 0, 100)
389-
self.score['euclideanDistance'] = sp.scale_signal(get_mean(score['euclideanDistance']), 0, 100)
390+
self.score['distance'] = sp.scale_signal(get_mean(score['distance']), 0, 100)
390391
self.score['roll'] = sp.scale_signal(get_mean(score['roll']), 0, 100)
391392

392393

@@ -1129,6 +1130,8 @@ def run(self) -> None:
11291130
self.plot_y_score('debug.png', idx_list)
11301131

11311132
self.create_funscript(idx_dict)
1133+
if self.params.invert:
1134+
self.funscript.invert_actions()
11321135
self.finished(status, True)
11331136
except Exception as ex:
11341137
self.logger.critical("The program crashed die to a fatal error", exc_info=ex)

funscript_editor/ui/funscript_generator_window.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,11 +116,12 @@ def run(self) -> None:
116116
video_path = self.video_file,
117117
track_men = 'Men' in self.settings['trackingMethod'],
118118
supervised_tracking = 'Supervised' in self.settings['trackingMethod'],
119-
metric = self.settings['trackingMetric'],
119+
metric = self.settings['trackingMetric'].replace('inverted', '').strip(),
120120
projection = self.settings['videoType'],
121-
number_of_trackers = int(self.settings['numberOfTrackers']),
121+
invert = "inverted" in self.settings['trackingMetric'],
122122
start_frame = self.start_frame,
123-
end_frame = self.end_frame
123+
end_frame = self.end_frame,
124+
number_of_trackers = int(self.settings['numberOfTrackers']),
124125
),
125126
self.funscript)
126127
self.funscript_generator.funscriptCompleted.connect(self.__funscript_generated)

funscript_editor/ui/settings_dialog.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,16 @@ def __setup_combo_boxes(self):
5252
for key in PROJECTION.keys() \
5353
if 'vr' not in key.lower() or self.include_vr])
5454
self.ui.trackingMethodComboBox.addItems(['Unsupervised Woman', 'Unsupervised Woman + Men', 'Supervised Woman', 'Supervised Woman + Men']) # set before tracking metric
55-
self.ui.trackingMetricComboBox.addItems(['y (up-down)', 'x (left-right)', 'euclideanDistance', 'roll (rotation)'])
55+
self.ui.trackingMetricComboBox.addItems(['y (up-down)', 'y inverted (down-up)', 'x (left-right)', 'x inverted (right-left)', 'distance (p1-p2)', 'distance inverted (p2-p1)', 'roll (rotation)', 'roll inverted (rotation)'])
56+
5657
self.ui.numberOfTrackerComboBox.addItems([str(i) for i in range(1, 6)])
5758

5859

5960
def __set_tracking_metric(self, value):
6061
value = value.split('(')[0].strip()
6162
current_tracking_method_items = [self.ui.trackingMethodComboBox.itemText(i) for i in range(self.ui.trackingMethodComboBox.count())]
6263

63-
if value in ['x', 'y']:
64+
if value in ['x', 'y', 'x inverted', 'y inverted']:
6465
if 'Unsupervised Woman' not in current_tracking_method_items:
6566
self.ui.trackingMethodComboBox.addItems(['Unsupervised Woman', 'Supervised Woman'])
6667
else:

0 commit comments

Comments
 (0)