Funscript AI Generation - VR (& 2D POV now?) - Join the Discord :)

Also, not so sure, should this topic belong to Software category or General ?

What would you advise ? And would it be necessary to create a new topic, as I think this one looks like a mess (my fault, definitely)?

Happy to hear from you on this.

I would put it in Software. Motion Tracking Funscript Generator is there (and it has one in “How to” aswell). Maybe when it’s more mature, you could create something in the “How to”, or if you are lucky, someone else might do it for you
 :wink:

And yes, I would create a new topic and try to limit it to using the application, fixing problem that people have, etc. You could keep this thread for the experimentation that you are doing and stuff. But I’m not an expert either, my multiple topics for FunscriptToolBox is a bit of a mess too.

Also, to complete my miniconda, after the setup, I usually create a batch file to start the application in the right conda environnement (note: need to update the path):

@echo off
call <PATH_TO_MINICONDA>\miniconda3\condabin\conda activate VRFunAIGen
cd /d "<PATH_TO_SOURCES>\VR-Funscript-AI-Generator"
python FSGenerator.py
pause
2 Likes

Update of Jan. 06th 2025:

Updated GUI and optimized filtering that was eliminating some strokes from collected signal.

1 Like

Just updated the GitHub & Discord with pre and post processing options for generated funscripts.

  • Enable boost : boost up is a boost value for peaks, reduce is a lowering value for lows
  • Enable treshold : 0 threshold = all values below selected value will be mapped to 0, and to 100 for any value above the selected 100 threshold
  • Simplification: strength of the VW simplification algorithm (the more, the less points in funscript in the end). Rounding will round values to the closest multiple of 5 or 10
4 Likes

Hi all, finally I can’t do it.
Yesterday I managed to connect my Keon to Heresphere via “Intiface & Scriptplayer” it was quite fun to use this kind of device, it is correctly synchronized with the videos and powerful enough to move the stroker.
Now having some SBS 4k videos but without scripts, I would like to create scripts with this program of k00gar, but I still can’t run it in Python. I tried python in 64bit, in 32Bit, it’s the same thing: syntax error, syntax error, syntax error
 What am I doing wrong ??? It’s simple anyway, but at home it doesn’t want.

Capture05

hi this software is free friend?

You should use cmd not python for the commands

2 Likes

Hi, yes, free.

Still in the making, but a thank you or a ko-fi donation simply makes my day :wink:

Join the Discord if you have any question, suggestion, or feel like collaborating!

Hi Robert,

I am not on windows, and I am basically no expert in anything.

Though, as @fenderwq was trying to suggest, the install commands are supposed to be ran from the cmd / terminal tool.

And you might need to have some git client installed on your machine.

https://gitforwindows.org/ (?)

The rest will mostly be ran from Python.

And you would still need to join the discord to download the models.

Hello, I made some progress, managed to install with difficulty all the dependencies to run the program, and I finally managed to generate a .funscript from a 4K SBS video. I then tested the rendering with my Keon but already on a scene where an actress is from behind and straddles the actor, everything is clearly visible in the scene and there is no movement for the Keon in the .funscript file, on the other hand on other scenes I obtained almost synchronous movements with slight defects at times, but in any case it is starting to work for me. Maybe I should only put 1 model in the models folder, and not all three, I don’t know. It’s the YOLO detection, you have to put the 3 files in the models folder, there is one that I unzipped too. In any case, good luck in improving this promising program, it’s a whole other immersion to be synchronized with the videos and not have to do anything. Thank you

Nice, @Robert6829 !

Please, share that case in the discord so I can investigate.

You can make a shareable video using the debug function of the tool.

Happy to look at your case, if you don’t mind uploading to gofile the reduced size video (1080p) and the _rawyolo.json file

Let’s discuss further in discord if you wish :slight_smile:

Ok, thanks for your help, just for now I have to go, I’ll go to discord tonight or tomorrow as soon as I’ve uploaded the video clip I’m trying to .funscript. See you soon :grinning:

Hi @GoNikky

Just FYI, here is the result of the current version of the algorithm.

2D - non VR related here:

In red, the version of a human made script ( @g90ak , master of osr2+ and legendary upscales), blue, what the current algorithm can output:

Definitely better on 2D POV videos now (no ? what do you think), even if initially designed for VR.

2 Likes

sorry if this is a silly question, but


where do i put this YOLO model file?
i dont see a models folder anywhere to put it in

Hi @Dankiroth,

Create a “models” folder where FSGenerator.py is an put the models in it.

Join the discord to download the models.

Also, you can now skip the resizing step if your video’resolution is beyond 1440p, it is now done on the fly thanks to @fenderwq.

If you are here for 2D POV, don’t forget to untick the VR SBS box just under the video file selection.

The tool is initially designed for VR, still in the making and comes with bugs.

2D POV is a hit or miss, depending on settings of the scene (see section 4 above with no detection in blue).

But recent algorithm adjustments made it a tad better than initial test here for that type of video : Funscript AI Generation - VR (& 2D POV now?) - Join the Discord :) - #176 by k00gar

A lot more tweaking is needed anyhow.

1 Like

A new update was pushed to GitHub, including the following changes and fixes:

  • Inference performance
    - The on-the-fly resizing option will now default to 1080p as it seems to be a sweet spot for performance/reliability (can be changed in config.py)

  • Funscript pos. estimation
    - Tweaked the use of the visible penis length, used only when no class touching is identified by YOLO, but penetration still considered as ongoing
    - Fixed a bug in the way the visible part of penis was taken into account
    - Tweaked moving averages weights
    - Added a IOU filter logic to discard fake positives of hand touching penis
    - Added a change in the position estimation based on the class

  • Funscript report generation
    - Added a SPOILER_ prefix so the content is blurred when posted on Discord, before clicking

  • Debugging
    - The output video are now compressed with h265, full res (max 1080p), and saved with a SPOILER_ prefix so the content is blurred when posted on Discord, before clicking

  • 2D POV
    - Added a 2D POV mode during video selection
    - Tweaked the actuation speed of the locked penis box (to compensate specific cases, the camera not being still as in VR for instance)

  • Minor UI changes

5 Likes

Wow, that’s much better indeed! Thank you for looking into this. It only seemed to struggle with the non-pov doggy part. Did it not create any output at all there or did you omit it because it didnt work well?

Anyway, I’m very interested to see where this is going. I have a feeling there might be a lot of people interested in a tool that works for non-vr (and even non-pov) videos. Keep up the good work!

@GoNikky thank you, and very valid question.

I checked it out quickly and understood what happened.

First, the algorithm was initially trying to determine cuts in the video to reinitialize the tracker state, but that was counterproductive and generated some signal loss. So I removed it.

Second, in the doggy part, the butt size compared to the frame was beyond a threshold triggering some specific conditions, valid in VR (close up scene), but not optimized for 2D POV, so I tweaked it for in case of 2D POV.

Based on those changes, the algo retrieved way more info to use.

Here is the before (red), after (blue):

And compared to the human-made script (red), the generated one is in blue (currently investigating what happened in section 4):

double ewwwwwww, crypto scam and fucking felon schmusk’s doge of all things xD